Прикручиваем мониторинг параметров smart или какой-либо температуры (cpu, motherboard) к Zabbix

в 13:00, , рубрики: sensors, zabbix, мониторинг сервера, системное администрирование, метки: , ,

Собственно не нашел собранной в кучу статьи как прикрутить к zabbix мониторинг какой-либо температуры, поэтому решил написать свою.

Задача1.
Имеем установленную и настроенную систему мониторинга zabbix 1.8.2. Нужно прикрутить мониторинг температуры жестких дисков (или любого другого параметра smart) на linux-сервере (debian).

Поехали.
1. Устанавливаем пакет smartmontools.
2. Команда

smartctl --all /dev/sdX

выводит все параметры smart, ищем там значение температуры.
3. У меня параметр называется Temperature_Celsius.
4. Далее необходимо из вывода команды smartctl выбрать значение температуры. Это можно сделать одной строкой, но проблема в том, что zabbix-agent запустит эту команду от пользователя zabbix, а она требует прав рута. Можно конечно добавить в sudoers пользователя zabbix, ну или ещё что-то, но я просто добавил запуск скрипта

#!/bin/sh
#get temperature of HDD and save it into temporary file
/user/sbin/smartctl --all /dev/sdX | grep Temperature > /tmp/smart

в crontab c периодичностью запуска 15 минут (конечно напрягает запись в syslog каждые 15 минут, потом может переделаю).
5. Теперь добавляем в конфиг zabbix-агента пользовательский параметр, в котором выбираем только последние три байта файла (после grep там получается строка, в которой последние два знака и есть температура винчестера, третий знак это конец строки наверное)

UserParameter=smart_ct,tail -bytes 3 /tmp/smart

Делаем рестарт демона zabbix-agent.
И не забываем, что если не добавить в конфиг агента UnsafeUserParameters=1, то в командах недопустимы символы: ' ” ` *? [ ] { } ~ $! &; ( ) < > | # @.
6. Смотрим логи агента на предмет ругательств. Проверяем на zabbix-сервере работает ли наш параметр

zabbix_get -s hostname -p 10050 -k “smart_ct”

7. Ну а теперь дело техники-добавляем из веб-морды zabbix новый элемент данных к хосту, триггер, и, собственно, всё.
Побочный эффект-я смотрю таким образом температуру в серверной.
Задача 2.
Имеем установленную и настроенную систему мониторинга zabbix 1.8.2. Нужно прикрутить мониторинг температуры системной платы (процессора, памяти etc) на linux-сервере (debian). Встроенные изначально элементы данных с ключами sensor[temp1|2|3] пишут, что не поддерживаются.

Поехали
1. Устанавливаем пакет lm-sensors.
2. Запускаем команду

sensors

и скорее всего видим, что нас отправляют в sensors-detect.
3. Запускаем

sensors-detect

на все вопросы кроме последнего отвечаем да. Если найдутся поддерживаемые железки, то видим (в моем случае) примерно следующее

To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
coretemp
f71882fg
#----cut here----

Выделенное жирным это модули ядра, которые далее предлагают добавить в /etc/modules. Но я хочу их попробовать по отдельности, поэтому отвечаем «нет» и пользуем modeprobe.
4. Подгружаем модули, после подгрузки coretemp команда sensors снова ничего не выдала, поэтому я его выгрузил и подгрузил f71882fg. Вот теперь команда sensors показывает всё что надо и не надо, в том числе скорость вращения кулеров и температуру МП. После отбора по нужной температуре имеем следующий вывод от sensors

temp3 +45

5. Так как команда sensors не требует прав рута, то добавляем пользовательский параметр в zabbix-агент

UserParameter=temb_mb,/usr.bin/sensors | grep ‘temp3’ | cut -f 2 -d +| grep -Eo ‘^..’

тут пришлось немного вспомнить регулярные выражения, в итоге получилась такая конструкция для извлечения температуры из строчки. Уверен, что можно сделать проще, но опыта не хватает. Ещё добавляем в конфиг агента строчку UnsafeUserParameters=1 (зачем написано выше). Делаем рестарт демона zabbix-agent.
6. Смотрим логи агента на предмет ругательств, проверяем на zabbix-сервере работает ли параметр

zabbix_get -s hostname -p 10050 -k “temp_mb”

7. Ну а теперь дело техники-добавляем из веб-морды zabbix новый элемент данных к хосту, триггер, и, собственно, всё.
Количество параметров, которые выводит команда sensors естественно зависит от железа. Возможно у кого-то и работают встроенные изначально в zabbix элементы данных по мониторингу температуры, но мне не повезло…

Автор: ctudent

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js