суббота, 23 июня 2012 г.

Плагин Nagios3 для мониторинга температуры на PHP

Первый вопрос который наверное бы задал любой посетитель ЛОРа - "Почему именно PHP?", да потому что я его знаю и он всё равно стоит на том компе. Может конечно потом перепишу на что то другое, но интересно было попробовать, к тому же в интернете не нашёл плагинов для нагиоса написаных на PHP.
Скажу сразу, код немного коряв в особенности то что данные берутся не напрямую с датчика, а из БД. Сделано так потому, что мне никак не удалось получить данные с датчика средствами PHP.
Что имеем: компьютер №1 с датчиком температуры, компьютер №2 с Nagios3 находящийся в другой части здания и соединённый с первым через ЛВС. На обоих компьютерах установлена Ubuntu 10.04.
Задача: Осуществить мониторинг температуры в помещении в котором стоит компьютер №1 средствами Nagios.



Приступим, на компе №1 необходимо поставить пакет nagios-nrpe-server

sudo apt-get install nagios-nrpe-server

Дальше создаём файл /usr/lib/nagios/plugins/check_thermo, наполняем его следующим:


#!/usr/bin/php -q

$host="хост";        #Хост
$login_mysql="логин";      #Логин
$password_mysql="пароль";       #Пароль
$baza_name="имя БД";   #Имя базы

$db = @mysql_connect("$host", "$login_mysql", "$password_mysql");
mysql_set_charset('utf8',$db);
if (!$db) exit("Error MySQL");
if (!@mysql_select_db($baza_name,$db)) exit("Error DB");
        $renf=mysql_query("SELECT temperature FROM meteo WHERE id =server_room1;");
        $tro=mysql_fetch_array($renf, MYSQL_ASSOC);
$rez=$tro['temperature'];
if (($rez>=23)AND($rez<27))
{
        echo "Warning ".$rez;
        exit(1);
}
elseif ($rez>25)
{
        echo "Critical ".$rez;
        exit(2);
}
else
{
        echo "OK ".$rez;
        exit(0);
}
?>


Даём ему права на исполнение: 

chmod +x /usr/lib/nagios/plugins/check_thermo

В файле /etc/nagios/nrpe.cfg добавляем адрес компа №2 в список разрешённых, делается это путём изменения переменной allowed_hosts, например так:


allowed_hosts=127.0.0.1,192.168.24.69

В этот же файл добавляем наш плагин

command[check_thermal]=/usr/lib/nagios/plugins/check_thermo -w 23 -c 27

Не забываем дать права на выполнение и перезапустит nagios:

sudo chmod +x /usr/lib/nagios/plugins/check_thermo
sudo service nagios-nrpe-server restart

Можно проверять, на компе №2 

cd /usr/lib/nagios/plugins/
./check_nrpe -H  -c check_thermal

В ответ должно придти нечто похожее на 


OK  17.56

Плагин работает, осталось дописать сервис:

sudo nano /etc/nagios3/conf.d/services_nagios2.cfg

Дописываем в конец

define service{
        use     generic-service
        host_name <Имя компа №1 в нагиос>
        service_description Thermal_State
        check_command check_nrpe_1arg!check_thermal
}

Применяем изменения.

sudo service nagios reload

Готово. Теперь при повышении температуры мне придёт смс.








Комментариев нет :

Отправить комментарий