Zabbix температура процессора linux

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

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

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

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

выводит все параметры 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 там получается строка, в которой последние два знака и есть температура винчестера, третий знак это конец строки наверное)

Делаем рестарт демона 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. Запускаем команду

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

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

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

Читайте также:  Kaspersky endpoint security agent linux

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

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

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

Источник

Мониторинг температуры процессора в Zabbix

Т.к. не везде есть строка «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

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/
#!/bin/bash export LC_ALL="" export LANG="en_US.UTF-8" # if [[ -z $1 || -z $2 ]]; then ##### DISCOVERY ##### PROCESSORS=`sensors 2>&1 | awk '> END '` if [[ -n $ ]]; then JSON="< \"data\":[" SEP="" for CPU in $ ; do JSON=$ "$SEP\"\":\"$ \">" SEP=", " done JSON=$ "]>" echo $ fi exit 0 else ##### PARAMETERS ##### HOST="$1" CPUNAME="$2" TABLE=`sensors 2>&1 | awk ' if (tolower($1)=="core") < if ($3 >temperature[counter]) temperature[counter] = $3;>> END '` echo "$ " | awk "/$ / \$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

. UserParameter=lmsensors[*],/etc/zabbix/scripts/lmsensors.sh "none" $1
/etc/init.d/zabbix-agentd restart
zabbix_get -s HOST -k "lmsensors[CPU0]"

Для контролируемых данных в Zabbix нужно создать соответствующее элементы с типом «Zabbix агент» и ключом типа:

где CPUNAME — имя процессора

Готовый Шаблон для мониторинга lmsensors (agent) с уже настроенными элементами и графиками.

Результат

Обсуждение

Не работает скрипт. Вот вывод sensors:

atk0110-acpi-0 Adapter: ACPI interface Vcore Voltage: +1.14 V (min = +0.85 V, max = +1.60 V) +3.3 Voltage: +3.17 V (min = +2.97 V, max = +3.63 V) +5 Voltage: +4.94 V (min = +4.50 V, max = +5.50 V) +12 Voltage: +11.83 V (min = +10.20 V, max = +13.80 V) CPU FAN Speed: 2445 RPM (min = 600 RPM) CHASSIS1 FAN Speed: 0 RPM (min = 800 RPM) CHASSIS2 FAN Speed: 2445 RPM (min = 800 RPM) CHASSIS3 FAN Speed: 0 RPM (min = 800 RPM) POWER FAN Speed: 0 RPM (min = 800 RPM) CPU Temperature: +53.5°C (high = +60.0°C, crit = +95.0°C) MB Temperature: +40.0°C (high = +45.0°C, crit = +95.0°C)

Вывод отличается, поэтому и не работает. В вашем случае парсить легче, но мой скрипт не подходит в таком виде

А если такой вывод? sensors

k10temp-pci-00c3 Adapter: PCI adapter temp1: +31.0°C (high = +70.0°C) (crit = +70.0°C, hyst = +68.0°C) w83627dhg-isa-0290 Adapter: ISA adapter Vcore: +1.37 V (min = +0.00 V, max = +1.74 V) in1: +0.24 V (min = +1.09 V, max = +0.44 V) ALARM AVCC: +3.42 V (min = +2.98 V, max = +3.63 V) +3.3V: +3.42 V (min = +2.98 V, max = +3.63 V) in4: +1.71 V (min = +1.54 V, max = +0.29 V) ALARM in5: +1.70 V (min = +0.09 V, max = +0.50 V) ALARM in6: +1.84 V (min = +0.92 V, max = +0.37 V) ALARM 3VSB: +3.46 V (min = +2.98 V, max = +3.63 V) Vbat: +3.41 V (min = +2.70 V, max = +3.63 V) fan1: 0 RPM (min = 1054 RPM, div = 128) ALARM fan2: 1371 RPM (min = 3245 RPM, div = 8) ALARM fan3: 0 RPM (min = 811 RPM, div = 128) ALARM fan5: 0 RPM (min = 753 RPM, div = 128) ALARM temp1: +41.0°C (high = -120.0°C, hyst = -84.0°C) ALARM sensor = thermistor temp2: +42.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor temp3: +33.5°C (high = +80.0°C, hyst = +75.0°C) sensor = thermistor cpu0_vid: +1.400 V intrusion0: ALARM

Отличная статья. Спасибо. Есть только небольшая опечатка. С chmod 700 скрипт от юзера zabbix выполняться не будет , т.к. владелец root , а группа zabbix у файла Нужно chmod 750 /etc/zabbix/scripts/lmsensors.sh

Источник

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

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

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

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

выводит все параметры 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 там получается строка, в которой последние два знака и есть температура винчестера, третий знак это конец строки наверное)

Делаем рестарт демона 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. Запускаем команду

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

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

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

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

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

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

Источник

Оцените статью
Adblock
detector