Поиск по сайту:

Как создавать плагины Nagios с помощью Python в Ubuntu 12.10


Введение

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

Ранее мы рассказывали, как установить сервер мониторинга Nagios на Ubuntu 12.10 x64.

На этот раз мы расширим эту идею и создадим плагины Nagios с использованием Python.

Эти плагины будут работать на клиентском VPS и выполняться через NRPE.

Шаг 1 - Установите NRPE на клиентский VPS

apt-get install -y python nagios-nrpe-server
useradd nrpe && update-rc.d nagios-nrpe-server defaults

Шаг 2 — Создайте свой скрипт Python

Было бы неплохо хранить ваши плагины в том же каталоге, что и другие плагины Nagios (например, /usr/lib/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/lib/nagios/plugins/usedspace.py и сделаем его исполняемым:

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

Весь плагин Nagios NRPE сводится к использованию кодов выхода для запуска предупреждений.

Вы вводите свой уровень логики в сценарий, и если вы хотите вызвать предупреждение (будь то OK, ПРЕДУПРЕЖДЕНИЕ, КРИТИЧЕСКОЕ или НЕИЗВЕСТНОЕ) - вы указываете код выхода.

Обратитесь к следующим кодам выхода Nagios:

Коды выхода Nagios

Exit Code Status
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN

Шаг 3. Добавьте свой сценарий в конфигурацию NRPE на клиентском хосте.

Удалите исходный файл /etc/nagios/nrpe.cfg и добавьте в него следующие строки:

log_facility=daemon
pid_file=/var/run/nagios/nrpe.pid
server_port=5666
nrpe_user=nrpe
nrpe_group=nrpe
allowed_hosts=198.211.117.251
dont_blame_nrpe=1
debug=0
command_timeout=60
connection_timeout=300
include_dir=/etc/nagios/nrpe.d/

command[usedspace_python]=/usr/lib/nagios/plugins/usedspace.py

Где 198.211.117.251 — наш сервер мониторинга из предыдущих статей. Измените их на свои собственные значения.

Обязательно перезапустите службу Nagios NRPE:

service nagios-nrpe-server 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 для клиентского VPS.

В нашем примере мы будем отслеживать сервер UbuntuDroplet и редактировать /etc/nagios/servers/UbuntuDroplet.cfg.

define service {
        use                             generic-service
        host_name                       UbuntuDroplet
        service_description             Custom Disk Checker In Python
        check_command                   usedspace_python
        }

Перезапустите Нагиос:

service nagios restart

Убедитесь, что новая проверка работает: