Задача: Адаптировать заметку в которой я разобрал, какие метрики снимаются с моего SSD диска и что может мониторить по ним сервер мониторинга Zabbix Server 4.4 on Ubuntu 18.04 к SATA дискам

Стенд:

  • Motherboard: Gigabyte H61M-S2 PV, BIOS FC 07/27/2017
  • CPU: Intel(R) Celeron(R) CPU G1610T @ 2.30GHz (2 cores), кстати процессор из HP MicroServer Gen8 которые поставлялся по дефолту.
  • HDD: SAMSUNG HD103SJ
  • RAM: HMT351U6CFR8C-H9 & HMT451U6AFR8C-H9
  • ОС: Debian 10 Server развернутая по сети через сервис FOG установка которой оформлена заметкой.

Используемые команды для получения информации по стенду:

root@srv-debian:~# dmidecode --type memory

root@srv-debian:~# cat /proc/cpuinfo | grep -i 'processor\|model name'

root@srv-debian:~# dmidecode --type baseboard | grep -i 'Product Name'

root@srv-debian:~# dmesg | grep -i 'Gigabyte'

Проверяю, какие диски распознались системой:

root@srv-debian:~# fdisk -l

Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors

Disk model: SAMSUNG HD103SJ

Шаг №1: Устанавливаю Zabbix Agent 4.4 на данную Debian 10 систему. Заметка

Шаг №2: Устанавливаю утилиты smartmontools & zabbix-get

root@srv-debian:~# apt-get install -y smartmontools zabbix-get

Шаг №3: Проверяю, а включен ли SMART у диска:

root@srv-debian:~# smartctl -i /dev/sda

smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.0-6-amd64] (local build)

Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===

Model Family: SAMSUNG SpinPoint F3

Device Model: SAMSUNG HD103SJ

Serial Number: S246J9BZB08599

LU WWN Device Id: 5 0024e9 203c2861c

Firmware Version: 1AJ10001

User Capacity: 1,000,204,886,016 bytes [1.00 TB]

Sector Size: 512 bytes logical/physical

Rotation Rate: 7200 rpm

Form Factor: 3.5 inches

Device is: In smartctl database [for details use: -P show]

ATA Version is: ATA8-ACS T13/1699-D revision 6

SATA Version is: SATA 2.6, 3.0 Gb/s

Local Time is: Fri Nov 22 14:40:30 2019 MSK

SMART support is: Available - device has SMART capability.

SMART support is: Enabled → включен

Шаг №4: Проверяю, каково количество активных строк у диска

root@srv-debian:~# smartctl -A /dev/sda | grep -i 'Always' | wc -l

20

а если не сортировать, то наименования колонки «ATTRIBUTE_NAME» отличается от того что было у SSD диска.

Шаг №5: По аналогии с уже составленным шаблоном Template_SMART и конфигурационным файлом smart.conf добавлю в него новые метрики:

root@srv-debian:~# smartctl -A /dev/sda | grep -i 'Always' | awk '{print $2}'

root@srv-debian:~# nano /etc/zabbix/zabbix_agentd.d/smart.conf

#HDD Disk Status

UserParameter=uHDD.health.[*],sudo smartctl -H $1 |grep "test"| cut -f2 -d: |tr -d " "

#HDD Serial Number

UserParameter=uHDD.serial.[*],sudo smartctl -i $1 | grep -i "Serial Number" | awk '{print $3}'

#HDD Device Model

UserParameter=uHDD.model.[*],sudo smartctl -i $1 | grep -i "Device Model" | cut -f2 -d: |tr -d " "

#for ssd

#HDD Work Hours

UserParameter=uHDD.hours.[*],sudo smartctl -x $1 | grep -i "Power_On_Hours" | awk '{print $$8}'

UserParameter=uHDD.raw_read_error_rate.[*],sudo smartctl -A $1 | grep -i "Raw_Read_Error_Rate" | awk '{print $$10}'

UserParameter=uHDD.power_cycle_count.[*],sudo smartctl -A $1 | grep -i "Power_Cycle_Count" | awk '{print $$10}'

UserParameter=uHDD.sata_phy_error_count.[*],sudo smartctl -A $1 | grep -i "SATA_Phy_Error_Count" | awk '{print $$10}'

UserParameter=uHDD.program_fail_cnt_total.[*],sudo smartctl -A $1 | grep -i "Program_Fail_Cnt_Total" | awk '{print $$10}'

UserParameter=uHDD.unsafe_shutdown_count.[*],sudo smartctl -A $1 | grep -i "Unsafe_Shutdown_Count" | awk '{print $$10}'

UserParameter=uHDD.crc_error_count1.[*],sudo smartctl -A $1 | grep -i "CRC_Error_Count" | awk '{print $10}' | head -n1

UserParameter=uHDD.crc_error_count2.[*],sudo smartctl -A $1 | grep -i "CRC_Error_Count" | awk '{print $10}' | tail -n1

UserParameter=uHDD.reported_uncorrect.[*],sudo smartctl -A $1 | grep -i "Reported_Uncorrect" | awk '{print $$10}'

UserParameter=uHDD.temperature_celsius.[*],sudo smartctl -A $1 | grep -i "Temperature_Celsius" | awk '{print $$10}'

UserParameter=uHDD.flash_writes_gib.[*],sudo smartctl -A $1 | grep -i "Flash_Writes_GiB" | awk '{print $$10}'

UserParameter=uHDD.lifetime_writes_gib.[*],sudo smartctl -A $1 | grep -i "Lifetime_Writes_GiB" | awk '{print $$10}'

UserParameter=uHDD.lifetime_reads_gib.[*],sudo smartctl -A $1 | grep -i "Lifetime_Reads_GiB" | awk '{print $$10}'

#for sata

UserParameter=uHDD.power_on_hours.[*],sudo smartctl -A $1 | grep -i "Power_On_Hours" | awk '{print $$10}'

UserParameter=uHDD.throughput_performance.[*],sudo smartctl -A $1 | grep -i "Throughput_Performance" | awk '{print $$10}'

UserParameter=uHDD.spin_up_time.[*],sudo smartctl -A $1 | grep -i "Spin_Up_Time" | awk '{print $$10}'

UserParameter=uHDD.start_stop_count.[*],sudo smartctl -A $1 | grep -i "Start_Stop_Count" | awk '{print $$10}'

UserParameter=uHDD.reallocated_sector_ct.[*],sudo smartctl -A $1 | grep -i "Reallocated_Sector_Ct" | awk '{print $$10}'

UserParameter=uHDD.seek_error_rate.[*],sudo smartctl -A $1 | grep -i "Seek_Error_Rate" | awk '{print $$10}'

UserParameter=uHDD.spin_retry_count.[*],sudo smartctl -A $1 | grep -i "Spin_Retry_Count" | awk '{print $$10}'

UserParameter=uHDD.calibration_retry_count.[*],sudo smartctl -A $1 | grep -i "Calibration_Retry_Count" | awk '{print $$10}'

UserParameter=uHDD.g-sense_error_rate.[*],sudo smartctl -A $1 | grep -i "G-Sense_Error_Rate" | awk '{print $$10}'

UserParameter=uHDD.power-off_retract_count.[*],sudo smartctl -A $1 | grep -i "Power-Off_Retract_Count" | awk '{print $$10}'

UserParameter=uHDD.hardware_ecc_recovered.[*],sudo smartctl -A $1 | grep -i "Hardware_ECC_Recovered" | awk '{print $$10}'

UserParameter=uHDD.reallocated_event_count.[*],sudo smartctl -A $1 | grep -i "Reallocated_Event_Count" | awk '{print $$10}'

UserParameter=uHDD.current_pending_sector.[*],sudo smartctl -A $1 | grep -i "Current_Pending_Sector" | awk '{print $$10}'

UserParameter=uHDD.udma_crc_error_count.[*],sudo smartctl -A $1 | grep -i "UDMA_CRC_Error_Count" | awk '{print $$10}'

UserParameter=uHDD.multi_zone_error_rate.[*],sudo smartctl -A $1 | grep -i "Multi_Zone_Error_Rate" | awk '{print $$10}'

UserParameter=uHDD.load_retry_count.[*],sudo smartctl -A $1 | grep -i "Load_Retry_Count" | awk '{print $$10}'

UserParameter=uHDD.load_cycle_count.[*],sudo smartctl -A $1 | grep -i "Load_Cycle_Count" | awk '{print $$10}'

root@srv-debian:~# systemctl restart zabbix-agent

ekzorchik@srv-zabbix:~$ sudo systemctl restart zabbix-server

После делаю выгрузку шаблона на свою домашнее хранилище OwnCloud 10 и переименовываю его, как Template_SMART_SSD_HDD

Шаг №6: Результат обновления «Элементов Данных» применительно к хосту с одним SATA диском:

Результат обновления «Элементов Данных» применительно к хосту с одним SATA диском:

Чуть позже когда проанализирую снимаю статистику исключу из шаблона метрики со значением 0, как не существенные и на основе критических составлю триггеры.

root@srv-debian:~# smartctl -A /dev/sda | grep -i 'Always' | awk '{print $2 " " $10}' | tr -d '0'

будут поля только со значения отличными от нуля.

  • Spin_Up_Time 9255
  • Start_Stop_Count 25
  • Power_On_Hours 2125
  • Power_Cycle_Count 284
  • G-Sense_Error_Rate 14
  • Temperature_Celsius 37
  • Load_Cycle_Count 284

как видно это самые важные снимаемые метрики. Что существенно уменьшит шаблон.
Сейчас пока главное — это составить полный шаблон со всеми метриками которые могут быть сняты с моих дисков. По большему счету он будут универсальными для встречающихся мне в последствии.

Пока на этом всё, с уважением автор блога Олло Александр aka ekzorchik.