Сага о Nagios: Механизм external commands

Данная статья является вольным переводом документации к Nagios о механизме external commands. Этот механизм позволяет отдавать команды Nagios`у сторонним приложениям, без приостановки цикла проверок. Такой механизм может значительно помочь в создании развернутой и гибкой системы мониторинга.

Оригинал.

На рисунке показана диаграмма работы механизма external commands (взято из документации к 3й версии Nagios).

Вступление

Nagios может принимать команды от внешних приложений и выполнять большой круг задач связанных с мониторингом, основываясь на этих командах. Отличным примером использования внешних команд можно считать стандартный web-интерфейс.

Включение внешних комманд

По умолчанию, Nagios не проверяет и не получает никаких команд из вне. Если вы хотите включить внешние команды вы должны сделать следующее…

* Включить внешние команды с помощью опции external_commands в nagios.cfg
* Установите частоту проверки на наличие команд с помощью опции command_check_interval
* Указать файл в который будут записываться команды, опция command_file. Лучше всего разместить файл для команд в собственную директорию (к примеру /usr/local/nagios/var/rw).
* Установите правильные права на папку в которой находится файл с командами. Подробнее о том как это сделать смотри ниже.

Пер.
Для включения проверки внешних команд добавьте следующие строки в вам nagios.cfg:

check_external_commands=1
command_check_interval=1s
command_file= /usr/local/nagios/var/rw/nagios.cmd

Когда Nagios проверяет наличие внешних команд?

  • Регулярно, по интервалу указанному в опции command_check_interval
  • Сразу после выполнения обработчиков команд (event handlers). Это сделано для немедленного выполнения команды, в случае если обработчик в процессе работы дал команду Nagios.

Использование внешних команд

Внешние команды могут быть использованы для расширения возможностей Nagios во время его работы. К примеру, временные отключения нотификаций о состоянии сервисов и хостов, временные выключения проверок, немедленные ре-шедулинг выполнения проверок для хостов и сервисов и т.д.

Формат команд

Внешние команды которые которые записываются в файл команд имеют следующий общий формат:

[time] command_id;command_arguments

…где time это время (количество секунд прошедших с начала эпохи Unix) в которое внешняя программа добавила команду в список команд.

Полный список команд которые определены в Nagios на данный момент, можно найти по адресу http://www.nagios.org/developerinfo/externalcommands/commandlist.php

Пер.
Вот простейший пример использования команды SCHEDULE_SVC_CHECK. Скрипт выполняет решедулинг проверки сервиса на +10 сек с момента запуска скрипта

reshedule_svc.sh

#!/bin/sh
# This is a sample shell script showing how you can submit the SCHEDULE_SVC_CHECK command
# to Nagios. Adjust variables to fit your environment as necessary.

now=`date +%s`
commandfile=’/var/log/nagios/rw/nagios.cmd’

/usr/bin/printf «[%lu] SCHEDULE_FORCED_SVC_CHECK;$1;$2;%lu\n» $now $[$now+10] > $commandfile

Пример использования:

reshedule_svc.sh localhost HTTP

Перевод части документации External Command File Permissions

Права на файл для внешних команд

Замечание

Эта инструкция предполагает что вы установили Nagios на доверенную машину, которая не содержит пользовательских аккаунтов (т.е. не публичная машина). Если вы установили Nagios на компьютер с несколькими пользователями, возможно вам стоит установить более жесткие права на файл с командами. Если этого не сделать то обыкновенный пользователь может получить контроль над Nagios. Думаю вы вряд ли этого хотите. Более подробную информацию о безопасности в Nagios вы можете найти здесь.

Вступление

Одна из самых распространенных проблем с которыми сталкиваются люди, связаны с установкой правильных прав на файл для внешних команд. Вы должны установить правильные права не на файл, а на директорию /usr/local/nagios/var/rw (ваш путь может отличаться от данного, в зависимости от вашей опции command_file). Далее будет показана как это сделать… Вы должны быть root.

Пользователи и группы

Перво наперво выясните под каким пользователем работает ваш веб-сервер. На многих системах это пользователь nobody, хотя это сильно зависит от вашего дистрибутива/сборки. Вы также должны знать под каким пользователем запущен Nagios, это можно посмотреть в опции nagios_user главного конфиг-файла.

Далее создадим группу, которая будет включать в себя пользователя под которым выполняется веб-сервер и пользователь под которым запущен Nagios. Давайте назовем эту группу ‘nagioscmd‘ (при желании вы можете назвать ее по другому). В RedHat Linux вы можете использовать следующую команду для создания группы (в других системах может отличаться):

/usr/sbin/groupadd nagiocmd

Следующим шагом добавим пользователя веб сервера (nobody или apache, и т.д.) и пользователя Nagios (nagios) в новую группу:

/usr/sbin/usermod -G nagiocmd nagios
/usr/sbin/usermod -G nagiocmd nobody

Создание директории

Далее создадим папку в которой будет находиться файл с командами. По умолчанию /usr/local/nagios/var/rw, этот путь устанавливается опцией command_file.

mkdir /usr/local/nagios/var/rw

Установка прав доступа

Теперь установим права на директорию…

chown nagios.nagiocmd /usr/local/nagios/var/rw

Удостоверимся что пользователь Nagios имеет полный доступ к директории…

chmod u+rwx /usr/local/nagios/var/rw

То же самое для группы.

chmod g+rwx /usr/local/nagios/var/rw

Для того чтобы ново созданные файлы в этом каталоге наследовали его группу нужно включить бит «прикрепления» группы.

chmod g+s /usr/local/nagios/var/rw

Проверяем права

Проверьте права на папку rw/ выполнив следующую команду ‘ls -al /usr/local/nagios/var‘. Вы должны увидеть что-то вроде этого:

drwxrws---   2 nagios nagiocmd     1024 Aug 11 16:30 rw

Мы видим, что пользователь nagios владелец этой папки, а группа nagiocmd это группа владельца папки. Пользователь nagios имеет rwx права, а группа nagiocmd имеет rw права на папку. Также включен бит закрепления группы. То что нам нужно…

Похожие посты:

Оставить комментарий