Первый вопрос который наверное бы задал любой посетитель ЛОРа - "Почему именно 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
Не забываем дать права на выполнение и перезапустит 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
Скажу сразу, код немного коряв в особенности то что данные берутся не напрямую с датчика, а из БД. Сделано так потому, что мне никак не удалось получить данные с датчика средствами 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
В ответ должно придти нечто похожее на
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
Готово. Теперь при повышении температуры мне придёт смс.
 
Комментариев нет :
Отправить комментарий