Как создавать плагины 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
Убедитесь, что новая проверка работает: