Мы настроили Nagios
с участием check_load
через NRPE
плагин для мониторинга загрузки сервера, он сообщает, когда нагрузка высока, но не имеет возможности сделать снимок основных процессов (например, top
команда) в то время.
Есть ли nagios
NRPE
плагины для этого?
Вы можете сделать это с обработчики событий.
Сначала добавьте обработчик событий для определения средней нагрузки:
define service{
use generic-service
host_name xx
service_description Load_Average
check_command check_nrpe!check_load
event_handler processes_snapshot!xx
contact_groups admin-sms
}
В processes_snapshot
команда определена в commands.cfg
:
define command{
command_name processes_snapshot
command_line $USER1$/eventhandlers/processes_snapshot.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$
}
Во-вторых, напишите сценарий обработчика событий (processes_snapshot.sh
):
#!/bin/bash
case "$1" in
OK)
;;
WARNING)
/usr/local/nagios/libexec/check_nrpe -H $4 -c processes_snapshot
;;
UNKNOWN)
;;
CRITICAL)
/usr/local/nagios/libexec/check_nrpe -H $4 -c processes_snapshot
;;
esac
exit 0
Команда processes_snapshot
определяется в nrpe.cfg
на xx
хост, как показано ниже:
command[processes_snapshot]=top -cSbn 1 | tail -n +8 | sort -rn -k11 | head > /tmp/proc_snap.txt
PS: Я не тестировал эту конфигурацию.
Вот что я сделал, чтобы получить снимок списка процессов прямо в письмах с уведомлениями, основанный на идее @quanta. Он может содержать пути, специфичные для способа установки Nagios на машинах Debian / Ubuntu:
Создал скрипт-оболочку /usr/local/sbin/check_load
который вызывает оригинал и добавляет снимок процесса, если код выхода равен 1 (ПРЕДУПРЕЖДЕНИЕ) или 2 (КРИТИЧНО):
#!/bin/sh
/usr/lib/nagios/plugins/check_load "$@" || {
rc=$?
echo
# http://nagios.sourceforge.net/docs/3_0/pluginapi.html
# | separates long output from perfdata
COLUMNS=1000 top -cSbn 1|sed -e 's/|/<BAR>/g' -e 's/ \+$//'
exit $rc
}
Это устанавливает для COLUMNS большое число, поэтому имена процессов / командные строки не будут усечены до 40 символов, запускаются сверху в пакетном режиме для одной итерации (-bn 1
), запрашивает полные командные строки (-c
) и совокупное время ЦП (-S
) для отображения, а затем проверяет, что вывод top не усекается при первом |
персонаж, заменив его на <BAR>
.
Я считаю, что порядок сортировки top по умолчанию является адекватным - попытка повторной сортировки по совокупному времени ЦП, как было предложено в ответе @quanta, помещает системные демоны, такие как init или crond, вверху, что не помогает мне выяснить, какой сценарий CGI был отвечает за скачок ЦП. Также таким образом я сохраняю верхний колонтитул.
Не забывай chmod +x /usr/local/sbin/check_load
редактировать /etc/nagios-plugins/config/load.cfg
и заменить check_load вход
command_line /usr/lib/nagios/plugins/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
с участием
command_line /usr/local/sbin/check_load --warning='$ARG1$,$ARG2$,$ARG3$' --critical='$ARG4$,$ARG5$,$ARG6$'
редактировать /etc/nagios3/commands.cfg
и обновите уведомить сервис по электронной почте запись, поэтому она включает $ LONGSERVICEOUTPUT $ в сгенерированные электронные письма. Слишком долго вставлять сюда; в основном найти Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail
бит и измените его на Info:\n\n$SERVICEOUTPUT$\n$LONGSERVICEOUTPUT$\n" | /usr/bin/mail
.
Перезагрузите nagios: service nagios3 restart
.
Я не пробовал это с NRPE.
Я предпочитаю:
command[processes_snapshot]=top -cSbn 1 | head -14 | tail -8