Назад | Перейти на главную страницу

Есть ли способ программно добавить службу в Nagios?

Этот вопрос касается только создания сервисов, т.е. мы уже знаем, как писать плагины Nagios и настраивать их как сервисы.

Я хотел бы написать сценарий Python для чтения каждой строки таблицы базы данных MySQL и создания службы для каждой строки. Мы предпочитаем видеть зеленый / красный свет для каждой строки, а не использовать одну службу, которая проверяет всю таблицу. Количество строк в этой таблице базы данных означает, что ввод каждой службы вручную займет много времени.

Я просмотрел сценарии вроде радар. Однако это работает с пассивными проверками, которые нам не нужны. У нас просто есть список сервисов, которые мы хотели бы создать в качестве активных проверок.

Просто переберите таблицу, запишите необходимую информацию в файл cfg, поместите это в место, которое загружается основным файлом конфигурации nagios, и перезагрузите конфигурацию nagios. В зависимости от того, что вам нужно / вы хотите проверить, напишите соответствующий плагин. Готово. Это можно сделать очень быстро.

Это можно сделать даже в bash. В широком смысле:

mysql -Ne 'SELECT service_name,'#',IFNULL(check_command,"-"),'#',hostname FROM table_of_wanted_nagios_monitors' |
  while IFS='#' read sn cc hn; do
    # strip extra spaces (due to IFS) from $cc for testing only
    scc=$(echo "$cc" | sed 's/ //g')
    if [ "x$scc" == "x-" -o "x$scc" == "x" ]; then
      cc="";
    else
      cc="    check_command $cc";
    fi;
    cat > /path/to/nagios/configs/${hn}-${sn}.cfg <<EOF
define service {
    use $sn
    host_name $hn
$cc
}
EOF
done

Мы используем что-то вроде этого (хотя и написанное на другом языке и с немного большей сложностью), которое запрашивает некоторые внутренние API для заполнения наших Nagios. Работает как чемпион.

Много надстройки конфигурации которые делают именно то, что вы описываете.

Вы можете использовать один из готовых, адаптировать его под свои нужды или просто украсть код у одного из них.