Создание плагина Nagios при помощи PHP в CentOS 6
PHP – это популярный язык программирования для быстрой разработки скриптов и установки библиотек.
Ранее было продемонстрировано, как установить Nagios на сервер CentOS 6. Данное руководство поможет разработать плагин Nagios при помощи PHP, который будет запускаться на клиенте через NRPE.
1: Установка репозитория RPMForge и NRPE
На клиентском выделенном сервере запустите:
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
yum -y install php nagios-nrpe
useradd nrpe && chkconfig nrpe on
2: Создание скрипта PHP
Все плагины Nagios следует хранить в специально отведенном каталоге (в этом руководстве это /usr/lib64/nagios/plugins/).
Создайте скрипт, который будет проверять текущее использование диска, вызывая команду df, и отправлять извещение в случае, если диск использован на 85% и больше:
#!/usr/bin/php
<?php
$used_space=chop(shell_exec("df -h / | grep -v Filesystem | awk '{print $5}'"));
switch ($used_space) {
case "$used_space" < "85%":
print "OK - $used_space of disk space used.";
exit(0);
case "$used_space" == "85%":
print "WARNING - $used_space of disk space used.";
exit(1);
case $used_space > "85%":
print "CRITICAL - $used_space of disk space used.";
exit(2);
default:
print "UNKNOWN - $used_space of disk space used.";
exit(3);
}
?>
Сохраните скрипт в /usr/lib64/nagios/plugins/usedspace.php, сделайте его исполняемым:
chmod +x /usr/lib64/nagios/plugins/usedspace.php
Плагин Nagios сводится к использованию кодов завершения для отправки сообщения. Нужно просто представить логику скрипта и указать код завершения, чтобы получать извещения.
Nagios использует четыре кода завершения:
- 0 – ОК
- 1 – предупреждение
- 2 – критическая ошибка
- 3 – неизвестная ошибка
3: Добавление скрипта в NRPE
На клиентском хосте удалите оригинальный файл /etc/nagios/nrpe.cfg и внесите в него следующее:
log_facility=daemon
pid_file=/var/run/nrpe/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=111.222.333.444
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/
command[usedspace_php]=/usr/lib64/nagios/plugins/usedspace.php
где 111.222.333.444 – сервер мониторинга (замените это условное значение собственными данными).
Перезапустите сервис NRPE:
service nrpe restart
4: Добавление новой команды Nagios
Определите команду на сервере мониторинга Nagios в etc/nagios/objects/commands.cfg:
define command{
command_name usedspace_php
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_php
}
Как видите, этот файл использует NRPE, чтобы создать TCP-подключение на порте 5666 и запускает команду usedspace_php, которая определена в /etc/nagios/nrpe.cfg на удаленном хосте.
Добавьте эту команду в конфигурационный файл Nagios для клиента.
В данном примере будет отслеживаться сервер по имени CentOSServer; для этого нужно отредактировать /etc/nagios/servers/CentOSServer.cfg
define service {
use generic-service
host_name CentOSServer
service_description Custom Disk Checker In PHP
check_command usedspace_php
}
Перезапустите Nagios:
service nagios restart
Готово!
Tags: CentOS 6, Nagios, NRPE, PHP, RPMforge