Решил прикрутить smartmontools к Zabbix, для просмотра температуры и ошибок HDD.
Устанавливаем smartmontools
aptitude install smartmontools
Просмотр состояние жесткого диска sda:
smartctl --all /dev/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 '{print $ 4+0}' UserParameter=smartd.trash[*],sudo smartctl -A $1 | grep $2 | awk '{print $ 6+0}' UserParameter=smartd.raw[*],sudo smartctl -A $1 | grep $2 | awk '{print $ 10+0}'
Перегружаем zabbix_agent:
/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
4. Создаем элемент данных
Дальше добавляем шаблон 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
Включаем SMART:
smartctl --all /dev/sda -s on
С трудом, но заставил работать.
Потребовалось сначала заставить его работать локально — проверял вводом команды на хосте с агентом:
zabbix_agentd -t smartd.raw[/dev/sda,Temperature_Celsius]
Когда стал получать данные локально, стал настраивать серверную компоненту — на время настройки тип данных присвоил не Numeric, а String — сразу словил пару ошибок работы sudo без консоли — исправил; последнее что сделал — изменил «Тип» элемента с «Zabbix agent» на «Zabbix agent (active)» — и всё заработало.
Да, забыл указать — оно не заработало, пока не был создан домашний каталог пользователя zabbix — /var/lib/zabbix
Непонятно почему.
Ещё один нюанс — «Host name» в вэбке и в конфиге агента должны совпадать.
В случае несовпадения имён хостов в /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_get не выдает результат, насроил все по инструкции, что может быть?
Нашли решение?