Мониторинг температуры процессора в Zabbix
sys-apps/lm_sensors-3.3.1
Примеры вывода команды sensors
Т.к. не везде есть строка «Physical id» с уже максимальной t, то обойтись простым grep'ом не получится, поэтому используется awk для выборки max t ядра на каждом процессоре.
coretemp-isa-0000
Adapter: ISA adapter
Physical id 0: +44.0°C (high = +81.0°C, crit = +91.0°C)
Core 0: +43.0°C (high = +81.0°C, crit = +91.0°C)
Core 1: +38.0°C (high = +81.0°C, crit = +91.0°C)
Core 2: +45.0°C (high = +81.0°C, crit = +91.0°C)
Core 3: +37.0°C (high = +81.0°C, crit = +91.0°C)
Core 4: +43.0°C (high = +81.0°C, crit = +91.0°C)
Core 5: +42.0°C (high = +81.0°C, crit = +91.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Physical id 1: +43.0°C (high = +81.0°C, crit = +91.0°C)
Core 0: +39.0°C (high = +81.0°C, crit = +91.0°C)
Core 1: +40.0°C (high = +81.0°C, crit = +91.0°C)
Core 2: +43.0°C (high = +81.0°C, crit = +91.0°C)
Core 3: +41.0°C (high = +81.0°C, crit = +91.0°C)
Core 4: +41.0°C (high = +81.0°C, crit = +91.0°C)
Core 5: +41.0°C (high = +81.0°C, crit = +91.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Core 0: +22.0°C (high = +80.0°C, crit = +96.0°C)
Core 1: +17.0°C (high = +80.0°C, crit = +96.0°C)
Core 2: +21.0°C (high = +80.0°C, crit = +96.0°C)
Core 8: +23.0°C (high = +80.0°C, crit = +96.0°C)
Core 9: +22.0°C (high = +80.0°C, crit = +96.0°C)
Core 10: +24.0°C (high = +80.0°C, crit = +96.0°C)
coretemp-isa-0001
Adapter: ISA adapter
Core 0: +15.0°C (high = +80.0°C, crit = +96.0°C)
Core 1: +21.0°C (high = +80.0°C, crit = +96.0°C)
Core 2: +18.0°C (high = +80.0°C, crit = +96.0°C)
Core 8: +20.0°C (high = +80.0°C, crit = +96.0°C)
Core 9: +18.0°C (high = +80.0°C, crit = +96.0°C)
Core 10: +17.0°C (high = +80.0°C, crit = +96.0°C)
Установка lm_sensors
Kernel
Device Drivers --->
[*] I2C support --->
<*> Hardware Monitoring support --->
[*] Intel Core/Core2/Atom temperature sensor
Установка скрипта
Создание папки для скриптов:
mkdir /etc/zabbix/scripts/
chown root:zabbix -R /etc/zabbix/scripts/
chmod 750 /etc/zabbix/scripts/
Создадим сам скрипт:
Листинг
/etc/zabbix/scripts/lmsensors.sh
#!/bin/bash
export LC_ALL=""
export LANG="en_US.UTF-8"
#
if [[ -z $1 || -z $2 ]]; then
##### DISCOVERY #####
PROCESSORS=`sensors 2>&1 | awk '{if (tolower($1)~"adapter") {counter +=1;}} END {for (i=1; i<=counter; i+=1) printf("CPU%1d\n", i-1); }'`
if [[ -n ${PROCESSORS} ]]; then
JSON="{ \"data\":["
SEP=""
for CPU in ${PROCESSORS}; do
JSON=${JSON}"$SEP{\"{#CPUNAME}\":\"${CPU}\"}"
SEP=", "
done
JSON=${JSON}"]}"
echo ${JSON}
fi
exit 0
else
##### PARAMETERS #####
HOST="$1"
CPUNAME="$2"
TABLE=`sensors 2>&1 | awk '{if (tolower($1)~"adapter") { counter +=1; } if (tolower($1)=="core")
{ if ($3 > temperature[counter]) temperature[counter] = $3;}}
END {for (i=1; i<=counter; i+=1) printf ( "CPU%1d %2.1f\n", i-1, temperature[i]); }'`
echo "${TABLE}" | awk "/${CPUNAME}/ {print \$2}" | head -n1
#
fi
Скрипт поддерживает обнаружение (discovery) процессоров.
Установка прав
chown root:zabbix /etc/zabbix/scripts/lmsensors.sh
chmod 550 /etc/zabbix/scripts/lmsensors.sh
Проверить работу скрипта для zabbix:
sudo -u zabbix /etc/zabbix/scripts/lmsensors.sh none CPU0
Вы должны получить данные, если этого не произошло, то конфигурация выполнена не правильно.
Настройка Zabbix сервера
Вызов скрипта через zabbix-agent
Настройка
/etc/zabbix/zabbix_agentd.conf
...
UserParameter=lmsensors[*],/etc/zabbix/scripts/lmsensors.sh "none" $1
Перезапустить
/etc/init.d/zabbix-agentd restart
Проверка
zabbix_get -s HOST -k "lmsensors[CPU0]"
Для контролируемых данных в Zabbix нужно создать соответствующее элементы с типом «Zabbix агент» и ключом типа:
lmsensors[CPUNAME]
где CPUNAME - имя процессора
Готовый Шаблон для мониторинга lmsensors (agent) с уже настроенными элементами и графиками.
Результат
Обсуждение
Не работает скрипт. Вот вывод sensors:
Вывод отличается, поэтому и не работает. В вашем случае парсить легче, но мой скрипт не подходит в таком виде
А если такой вывод? sensors
Отличная статья. Спасибо. Есть только небольшая опечатка. С chmod 700 скрипт от юзера zabbix выполняться не будет , т.к. владелец root , а группа zabbix у файла Нужно chmod 750 /etc/zabbix/scripts/lmsensors.sh
Исправлено