Zabbix мониторим жесткие диски S.M.A.R.T Linux
Решил прикрутить smartmontools к Zabbix, для просмотра температуры и ошибок HDD.
aptitude install smartmontools
Просмотр состояние жесткого диска sda:
Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 120 099 006 Pre-fail Always - 1596728 3 Spin_Up_Time 0x0003 100 100 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 27 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 2 7 Seek_Error_Rate 0x000f 077 060 030 Pre-fail Always - 54662001 9 Power_On_Hours 0x0032 092 092 000 Old_age Always - 7504 10 Spin_Retry_Count 0x0013 100 100 097 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 27 184 Unknown_Attribute 0x0032 100 100 099 Old_age Always - 0 187 Reported_Uncorrect 0x0032 100 100 000 Old_age Always - 0 188 Unknown_Attribute 0x0032 100 097 000 Old_age Always - 25 189 High_Fly_Writes 0x003a 089 089 000 Old_age Always - 11 190 Airflow_Temperature_Cel 0x0022 060 054 045 Old_age Always - 40 (Lifetime Min/Max 35/46) 194 Temperature_Celsius 0x0022 040 046 000 Old_age Always - 40 (0 23 0 0) 195 Hardware_ECC_Recovered 0x001a 033 023 000 Old_age Always - 1596728 197 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 240 Head_Flying_Hours 0x0000 100 253 000 Old_age Offline - 159102768515831 241 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 3688517150 242 Unknown_Attribute 0x0000 100 253 000 Old_age Offline - 2811285240
Немного теории (взято с opennet.ru):
VALUE — одно байтовое значение показы данных «нормализованное» :).
RAW_VALUE — Каждый атрибут имеет raw value 6-ти байтовое значение
TYPE — существует 2 типа атрибутов:
Критичные атрибуты: (Pre-fail)
Некритичные атрибуты: (Old_age) (величина value отведенная вендором до наработки на отказ (ресурс)).
Если VALUE стало меньше THRESH в случае Pre-fail атрибута — существует большая вероятность, что диск вылетит в ближайшие 24 часа.
Если VALUE стало меньше THRESH в случае Old_age атрибута — существует большая вероятность, что диск вылетит т.к. выработан ресурс. Вот только когда — науке это неизвестно.
Критичные атрибуты:
* Raw Read Error Rate — частота ошибок при чтении данных с диска, происхождение которых обусловлено аппаратной частью диска.
* Spin Up Time — время раскрутки пакета дисков из состояния покоя до рабочей скорости. При расчете нормализованного значения (Value) практическое время сравнивается с некоторой эталонной величиной, установленной на заводе. Не ухудшающееся немаксимальное значение при Spin Up Retry Count Value = max (Raw равном 0) не говорит ни о чем плохом. Отличие времени от эталонного может быть вызвано рядом причин, например просадка по вольтажу блока питания.
* Spin Up Retry Count — число повторных попыток раскрутки дисков до рабочей скорости, в случае если первая попытка была неудачной. Ненулевое значение Raw (соответственно немаксимальное Value) свидетельствует о проблемах в механической части накопителя.
* Seek Error Rate — частота ошибок при позиционировании блока головок. Высокое значение Raw свидетельствует о наличии проблем, которыми могут являться повреждение сервометок, чрезмерное термическое расширение дисков, механические проблемы в блоке позиционирования и др. Постоянное высокое значение Value говорит о том, что все хорошо.
* Reallocated Sector Count — число операций переназначения секторов. SMART в современных дисках способен произвести анализ сектора на стабильность работы «на лету» и в случае признания его сбойным, произвести его переназначение.
Некритичные атрибуты:
* Start/Stop Count — полное число запусков/остановов шпинделя. Гарантировано мотор диска способен перенести лишь определенное число включений/выключений. Это значение выбирается в качестве Treshold. Первые модели дисков со скоростью вращения 7200 оборотов/мин имели ненадежный двигатель, могли перенести лишь небольшое их число и быстро выходили из строя.
* Power On Hours — число часов проведенных во включенном состоянии. В качестве порогового значения для него выбирается паспортное время наработки на отказ (MBTF). Обычно величина MBTF огромна, и маловероятно, что этот параметр достигнет критического порога. Но даже в этом случае выход из строя диска совершенно не обязателен. * Drive Power Cycle Count — количество полных циклов включения-выключения диска. По этому и предыдущему атрибуту можно оценить, например, сколько использовался диск до покупки.
* Temperatue — Здесь хранятся показания встроенного термодатчика. Температура имеет огромное влияние на срок службы диска (даже если она находится в допустимых пределах). Вернее имеет влияние не на срок службы диска а на частоту возникновения некоторых типов ошибок, которые влияют на срок службы.
* Current Pending Sector Count — Число секторов, являющихся кандидатами на замену. Они не были еще определенны как плохие, но считывание их отличается от чтения стабильного сектора, так называемые подозрительные или нестабильные сектора.
* Uncorrectable Sector Count — число ошибок при обращении к сектору, которые не были скорректированы. Возможными причинами возникновения могут быть сбои механики или порча поверхности.
* UDMA CRC Error Rate — число ошибок, возникающих при передаче данных по внешнему интерфейсу. Могут быть вызваны некачественными кабелями, нештатными режимами работы.
* Write Error Rate — показывает частоту ошибок происходящих при записи на диск. Может служить показателем качества поверхности и механики накопителя.
Дополнительные атрибуты смотрите в Википедиии.
Теперь к практике:
Редактируем и добавляем в конец файла Linux Zabbix agent /etc/zabbix/zabbix_agentd.conf:
UserParameter=smartd.value[*],sudo smartctl -A $1 | grep $2 | awk '' UserParameter=smartd.trash[*],sudo smartctl -A $1 | grep $2 | awk '' UserParameter=smartd.raw[*],sudo smartctl -A $1 | grep $2 | awk ''
/etc/init.d/zabbix-agent restart
разрешаем запускать smartctl с админскими правами, добавляем в конец файла /etc/sudoers:
zabbix ALL= (ALL) NOPASSWD: /usr/sbin/smartctl
Теперь самое интересное, проверяем получение информации с zabbix-agent-а:
zabbix_get -s 192.168.1.10 -k smartd.value[/dev/sda,Raw_Read_Error_Rate] 120
zabbix_get -s 192.168.1.10 -k smartd.trash[/dev/sda,Temperature_Celsius] 40
smartd.value (см. конфигурационный файл агента) — какую команду мы хотим выполнить на агенте и получаем данные с поля Value.
Temperature_Celsius — получаем информацию о температуре, подставляем свое, список можно взять из атрибутов см. выше.
Остается прикрутить все в Web морде и создать оповещения.
Создаем шаблон в админке Zabbix для мониторинга температуры:
1. Заходим в Конфигурацию шаблонов:
2. Создаем новый шаблон Templates_SMARTOOLS в группе Templates:
3. Создаем группу элементов данных sda
Дальше добавляем шаблон Templates_SMARTOOLS к группе узла и мониторим.. В данном случае пока температуру. но все в Ваших руках..
Пытаясь получить информацию с жесткого диска программой smartmontools не выводит полную информацию:
=== START OF INFORMATION SECTION === Model Family: Seagate Barracuda 7200.11 Device Model: ST3500320AS Serial Number: 9QMA6VQE Firmware Version: SD1A User Capacity: 500,107,862,016 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 8 ATA Standard is: ATA-8-ACS revision 4 Local Time is: Thu Sep 22 17:31:59 2011 MSD SMART support is: Available - device has SMART capability. SMART support is: Disabled
С трудом, но заставил работать.
Потребовалось сначала заставить его работать локально — проверял вводом команды на хосте с агентом:
zabbix_agentd -t smartd.raw[/dev/sda,Temperature_Celsius]
Когда стал получать данные локально, стал настраивать серверную компоненту — на время настройки тип данных присвоил не Numeric, а String — сразу словил пару ошибок работы sudo без консоли — исправил; последнее что сделал — изменил «Тип» элемента с «Zabbix agent» на «Zabbix agent (active)» — и всё заработало.
Да, забыл указать — оно не заработало, пока не был создан домашний каталог пользователя zabbix — /var/lib/zabbix
Непонятно почему.
В случае несовпадения имён хостов в /var/log/zabbix/zabbix_agent.log будут сообщения типа:
19309:20141006:173002.010 no active checks on server [192.168.1.7:10051]: host [Zentyal-gateway] not found
Zabbix v6 SMART HDD Check
The smartmontools package comes with two utilities, smartctl which you can use to check your hard drives on the command line, and smartd, a daemon that checks your hard disks at a specified interval and logs warnings/errors to the syslog and can also send warnings and errors to a specified email address (usually the admin of the system).
apt install smartmontools
smartctl -v smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.10.0-11-amd64] (local build) Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org
Using Smartctl
df -h Filesystem Size Used Avail Use% Mounted on udev 3.8G 0 3.8G 0% /dev tmpfs 777M 996K 776M 1% /run /dev/sda1 75G 43G 30G 59% / tmpfs 3.8G 0 3.8G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda15 121M 130K 120M 1% /boot/efi
In the case of my test server below we have a virtual machine — that, obviously, does not have access to the underlying HDD hardware /dev/sda1 :
smartctl -a /dev/sda1 === START OF INFORMATION SECTION === Vendor: QEMU Product: QEMU HARDDISK Revision: 2.5+ Compliance: SPC-3 User Capacity: 81,923,145,728 bytes [81.9 GB] Logical block size: 512 bytes LU is thin provisioned, LBPRZ=0 Device type: disk Local Time is: Sun Jan 30 05:14:03 2022 CET SMART support is: Unavailable - device lacks SMART capability. === START OF READ SMART DATA SECTION === Current Drive Temperature: 0 C Drive Trip Temperature: 0 C
When you see that the SMART support is: disabled run the following command to enable it:
Add SMART Zabbix Plugin
The template for monitoring S.M.A.R.T. attributes of physical disk that works without any external scripts. It collects metrics by Zabbix agent 2 version 5.0 and later with Smartmontools version 7.1 and later. Disk discovery LLD rule finds all HDD, SSD, NVMe disks with S.M.A.R.T. enabled. Attribute discovery LLD rule finds all Vendor Specific Attributes for each disk.