Создание плагина Nagios при помощи Python в CentOS 6

Python – это популярный командный процессор, доступный в системах Linux по умолчанию.

В предыдущем руководстве было показано, как установить Nagios на сервер CentOS 6. В этой статье рассказывается о разработке плагинов Nagios при помощи Python, которые будут запускаться на клиенте через 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 python nagios-nrpe
useradd nrpe && chkconfig nrpe on

2: Создание скрипта Python

Рекомендуется хранить плагины Nagios в специально отведенном каталоге (в данном руководстве это /usr/lib64/nagios/plugins/).

Для примера создайте скрипт, который будет проверять текущее использование диска при помощи команды df и отправлять извещение в случае, если диск использован на 85% и больше:

#!/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)

Сохраните скрипт в /usr/lib64/nagios/plugins/usedspace.py и сделайте его исполняемым:

chmod +x /usr/lib64/nagios/plugins/usedspace.py

В целом весь плагин 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.111.222
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nrpe.d/
command[usedspace_python]=/usr/lib64/nagios/plugins/usedspace.py

где 111.222.111.222 – сервер мониторинга (замените это условное значение собственным).

Перезапустите сервис NRPE:

service nrpe restart

4: Добавление новой команды Nagios

На сервере мониторинга Nagios определите команду в /etc/nagios/objects/commands.cfg.

define command{
command_name    usedspace_python
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c usedspace_python
}

Как видите,этот файл использует NRPE для создания TCP-подключение на порте 5666 и запускает команду usedspace_python, которая была определена в /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 Python
check_command                   usedspace_python
}

Перезапустите Nagios:

service nagios restart

Готово!

Tags: , , , ,

Добавить комментарий