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

На многих серверных UPS есть датчики температуры, данные по которым можно получить зайдя на их веб морду, чтоб автоматизировать процесс мониторинга температуры с сохранением данных, анализом отклонения от нормы, последующем уведомлением и графиками мной используется связка скрипт на Python и Zabbix.

front

Скрипт.
Скрипт написан на Python 2.7 и использует библиотеку grab. Скрипт получает веб страницу с данными о температуре от ups, и ищет на странице символ °, и цифрам стоящим слева от него присваивает значение температуры.

#!/usr/bin/env python
# coding=utf-8
 
from grab import Grab
import codecs
import os
 
g = Grab()
g.go('http://10.10.10.10/ups_env.htm', log_file='/tmp/out_serv.html')
t=open("/tmp/out_serv.html")
decoder = codecs.getdecoder('cp1251')
encoder = codecs.getencoder('utf-8')
 
def temperature():
    for i in t:
        s=0
        for ii in i:
            c=(i[s-6:s-4])
            if encoder(decoder(ii)[0])[0]=="°" and c.isdigit()==True:
                tem=i[s-6:s-2]
                gr= float(i[s-6:s-2])
                return gr
            s=s+1
 
print temperature()
os.remove('/tmp/out_serv.html')

То же самое на bash

#!/bin/bash
output=tempr
wget http://10.10.10.10/ups_env.htm -O $output -o /dev/null
tempr=$( grep ° < $output  | awk '{print $1}' )
rm $output
echo $tempr

Сохраняем этот скрипт под именем tempr_ser на сервере где установлен Zabbix в директории /usr/local/bin/externalscripts/
Даем право на выполнение этого скрипта

chmod +x tempr_ser

Zabbix.

Редактируем конфигурационный файл zabbix_agentd.conf. Добавляем в него следующую строчку для создания пользовательского параметра tempr.ser

UserParameter=tempr.ser,/usr/local/bin/externalscripts/tempr_ser

Перезапускаем Zabbix agent

service zabbix-agent restart

Далее настройка идет через веб интерфейс Zabbix.

Меню Настройка — Узлы сети — Zabbix server — Элементы данных — Создать элемент данных.

Заполняем:

Имя: temperature_serv
Тип: Zabbix agent
Ключ: tempr.ser
Интерфейс узла сети: 127.0.0.1:10050
Тип информации: Числовой (с плавающей точкой)
Единица измерения: °C
Интервал обновления (в сек): 600

elementdan

Сохраняем.

Для полученных данных можно настраивать триггеры, которые срабатывают при превышении допустимого предела, так же из сохраненных данных можно получать вот такие графики.

temp_serv

2 Comments

  1. Semyon

    зачем так делать? Юпсы поддерживают протокол SNMP от туда сразу взять значение можно + заряд батареи вытащить, напряжение входящее и выходящее и много едругое

    1. admin

      В сети был категорически запрещен snmp, приходилось идти на извращения. А так да, все легко настраивается через snmp.

Comments are closed.