mrtg + hddtemp + snmp

Итак, хочется рисовать графики mrtg температур cpu и hdd. Имеем например два сервера, один собирает и отрисовывает статистику, другой отдаёт свои данные.

Начнём с того, что на сервере, назовём его monitoring, нужно поставить mrtg и настроить apache или  другой http сервер. На втором сервере, с которого мы будем собирать статистику нужно поставить snmpd.

С температурой cpu всё достаточно просто, достаточно чтобы был загружен модуль coretemp, речь идёт о debian и ему подобных системах, и поставить например sensors. Добиваемся примерно вот такого вывода при команде sensors:

coretemp-isa-0000
Adapter: ISA adapter
Core 0: +44.0°C (high = +86.0°C, crit = +100.0°C)

coretemp-isa-0001
Adapter: ISA adapter
Core 1: +45.0°C (high = +86.0°C, crit = +100.0°C)

Теперь, если у нас запущен демон snmpd можно попробывать сделать вот так:
snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.13.16.5.1.3.1
Вывод будет примерно таким:
LM-SENSORS-MIB::lmMiscSensorsValue.1 = Gauge32: 45000

Чтобы snmpd смотрел не только на localhost, нужно отредактировать файл /etc/default/snmpd. Если убрать от туда 127.0.0.1, то snmpd будет висеть на всех интерфейсах.

Пробуем с monitoring сервера получить такую же информацию:
snmpwalk -v1 -c public адрес_сервера .1.3.6.1.4.1.2021.13.16.5.1.3.1

Сделаем конфиг для mrtg. У меня все конфиги для mrtg хранятся в /etc/mrtg/, а из /etc/mrtg.cfg инклудятся.
и сохраним его в /etc/mrtg/cpu.cfg
Обращаю внимание на строку:
Target[cpu]: (.1.3.6.1.4.1.2021.13.16.5.1.3.1&.1.3.6.1.4.1.2021.13.16.5.1.3.2:public@address_server)/1000
Здесь берётся два значения .1.3.6.1.4.1.2021.13.16.5.1.3.1 и .1.3.6.1.4.1.2021.13.16.5.1.3.2, разделяются & и делятся на 1000.
Добавляем в /etc/mrtg.cfg
Include: /etc/mrtg/cpu.cfg
Создадим html страницу:
indexmaker /etc/mrtg/cpu.cfg —output=/var/www/mrtg/cpu.html

WorkDir: /var/www/mrtg
Target[cpu]: (.1.3.6.1.4.1.2021.13.16.5.1.3.1&.1.3.6.1.4.1.2021.13.16.5.1.3.2:public@<strong>address_server</strong>)/1000
MaxBytes[cpu]: 110
MaxBytes2[cpu]: 110
Title[cpu]: CPU Core 1 and CPU Core 2
Options[cpu]: integer, gauge, nopercent, growright
YLegend[cpu]: temperature, C
ShortLegend[cpu]: C
Legend1[cpu]: CPU Core 1 temp, C
Legend2[cpu]: CPU Core 2 temp, C
LegendI[cpu]: CPU Core 1 temp, C
LegendO[cpu]: CPU Core 2 temp, C
XSize[cpu]: 600
YSize[cpu]: 160
PageTop[cpu]: <H1>Monitoring cpu</H1> <br/>

cpu monitoring mrtg

График температуры cpu

C hddtemp я сделал несколько сложнее:

Добавляем строки в конфиг /etc/snmp/snmpd.conf
rocommunity public
exec hddtemp "/usr/sbin/hddtemp -n /dev/sda"

Перезапускаем snmpd /etc/init.d/snmpd restart

Конфиг mrtg:

WorkDir: /var/www/mrtg/
Target[hddtemp]: `/etc/mrtg/scripts/hdd.sh`
MaxBytes[hddtemp]: 110
MaxBytes2[hddtemp]: 110
Title[hddtemp]: HDD 1 and HDD 2
Options[hddtemp]: integer, gauge, nopercent, growright
YLegend[hddtemp]: hddtempature, C
ShortLegend[hddtemp]: C
Legend1[hddtemp]: HDD 1 temp, C
Legend2[hddtemp]: HDD 2 temp, C
LegendI[hddtemp]: HDD 1 temp, C
LegendO[hddtemp]: HDD 2 temp, C
XSize[hddtemp]: 600
YSize[hddtemp]: 160
PageTop[hddtemp]: <H1>Monitoring hdd</H1> <br/>

Скрипт /etc/mrtg/scripts/hdd.sh:

#!/bin/bash
TEMP=`/usr/bin/snmpwalk -v1 -c public localhost .1.3.6.1.4.1.2021.8.1.101.1  | awk '{print substr($4,2,length($4)-5)}'`.00
echo $TEMP
echo 0
mrtg hddtemp

мониторинг hddtemp

Вот и всё, теперь можно следить за температурами серверов, дабы избежать перегревов и наглядно видеть изменение температуры в зависимости от нагрузки на сервер.

Запись опубликована в рубрике debian, mrtg, snmp с метками , , , , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *