Есть ли способ инициировать проверку всех служб в группе служб из веб-интерфейса 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
)