Задача: Адаптировать заметку в которой я разобрал, какие метрики снимаются с моего 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
диском:
Чуть позже когда проанализирую снимаю статистику исключу из шаблона метрики со значением 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.