Первое, что нам необходимо сделать это установить RPMForge репозиторий и NRPE на клиента и сервер:
# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm # yum -y install nagios-nrpe # useradd nrpe && chkconfig nrpe on
Хранить будем наш плагин в директории, где хранятся и другие плагины (/usr/lib64/nagios/plugins/). В нашем примере мы создаем скрипт, который проверяет использование дискового пространства вызывая df из shell, и оповещаем при использовании дискового пространства более 85%.
BASH
#!/bin/bash used_space=`df -h / | grep -v Filesystem | awk '{print $5}' | sed 's/%//g'` case $used_space in [1-84]*) echo "OK - $used_space% of disk space used." exit 0 ;; [85]*) echo "WARNING - $used_space% of disk space used." exit 1 ;; [86-100]*) echo "CRITICAL - $used_space% of disk space used." exit 2 ;; *) echo "UNKNOWN - $used_space% of disk space used." exit 3 ;; esac
PYTHON
#!/usr/bin/python import os, sys used_space=os.popen("df -h / | grep -v Filesystem | awk '{print $5}'").readline().strip() if used_space < "85%": print "OK - %s of disk space used." % used_space sys.exit(0) elif used_space == "85%": print "WARNING - %s of disk space used." % used_space sys.exit(1) elif used_space > "85%": print "CRITICAL - %s of disk space used." % used_space sys.exit(2) else: print "UKNOWN - %s of disk space used." % used_space sys.exit(3)
PERL
#!/usr/bin/perl use strict; use warnings; use feature qw(switch say); my $used_space = `df -h / \|awk 'FNR == 2 {print \$5}'`; given ($used_space) { chomp($used_space); when ($used_space lt '85%') { print "OK - $used_space of disk space used."; exit(0); } when ($used_space eq '85%') { print "WARNING - $used_space of disk space used."; exit(1); } when ($used_space gt '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.sh(.py|.pl) и делаем его исполняемым
# chmod +x /usr/lib64/nagios/plugins/usedspace.sh(.py|.pl)
Весь NRPE плагин Nagios сводится к использованию определенных кодов выхода для запуска оповещений. Вот коды выхода Nagios:
Exit Code |
Status |
0 |
OK |
1 |
WARNING |
2 |
CRITICAL |
3 |
UNKNOWN |
Теперь добавляем наш скрипт в 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=192.168.1.1 dont_blame_nrpe=1 debug=0 command_timeout=60 connection_timeout=300 include_dir=/etc/nrpe.d/ command[usedspace_bash]=/usr/lib64/nagios/plugins/usedspace.sh(.py|.pl)
Где 192.168.1.1 наш мониторинг сервер. Перезапускаем NRPE сервис:
service nrpe restart
Добавляем новую команду в Nagios на Nagios сервере. Определяем новую команду в /etc/nagios/objects/commands.cfg:
define command{ command_name usedspace_bash command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_bash }
Как видно, плагин использует NRPE для создания TCP соединения на порту 5666 и запускаем команду usedspace_bash, которую мы определили в /etc/nagios/nrpe.cfg на удаленном хосте. Добавьте проверку в ваш конфигурационный файл Nagios. В нашем примере мы будем мониторить сервер, который называется CentOSDroplet и отредактируйте /etc/nagios/servers/CentOSDroplet.cfg:
define service { use generic-service host_name CentOSDroplet service_description Custom Disk Checker In Bash check_command usedspace_bash }
Перезапускаем Nagios:
service nagios restart