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

Начать проверку группы обслуживания

Есть ли способ инициировать проверку всех служб в группе служб из веб-интерфейса Nagios или из командной строки?

Например, у меня есть сервисная группа с проверкой, которая работает на 30 машинах. Я хотел бы запустить команду, которая принудительно проверила бы все эти 30 машин. Я знаю, что вы можете сделать это через графический интерфейс на одной машине, но было бы здорово, если бы это можно было сделать против всей группы обслуживания.

Я не знаю, как это сделать через стандартный графический интерфейс.

Но одно можно сделать, это установить модуль livestatus. Этот модуль заставляет Nagios прослушивать сокет, и вы можете выполнять запросы к нему и получать информацию. После включения этого API вы сможете написать сценарий, который получает информацию о сервисной группе, а затем запускает серию команд.

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

Этот пример сценария может помочь вам начать работу. Этот скрипт отправляет запрос на текущий статус, чтобы найти все хосты с не OK штат. Затем он вызывает немедленную повторную проверку для каждого хоста, обнаруженного в этом состоянии.

#!/bin/bash
LIVESTATUSSOCKET=/var/lib/nagios3/rw/live
NAGIOS_CMD_SOCKET='/var/lib/nagios3/rw/nagios.cmd'

export IFS=';'
echo "GET hosts
Columns: state host_name
Filter: state != 0
" | unixcat $LIVESTATUSSOCKET \
  | (

  while read -a LINE ; do
     /usr/bin/printf "[%lu] SCHEDULE_HOST_CHECK;%s;%s\n" \
                      $(date +%s) \
                      "${LINE[1]}" \
                      $(date +%s) | tee -a $NAGIOS_CMD_SOCKET
  done
)