После установки Nagios, мониторить сервера стало куда проще. Однако остались вещи, которые из коробки в Nagios нет, например просмотр очереди писем в Postfix. Плагин check_mailq рабоатет неправильно. В интернете есть несколько уже написанных плагинов для этого дела, поэтому я не стал придумывать своё и лишь немного доработал чужой скрипт (исправил 3-4 строчки, для наглядности вывода выполнения команды).
Скрипт взят отсюда: exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postfix_queue/details
Обозначать машины буду так:
server - то, что мы будем мониторить. в данном случае почтовый сервер;
monitor - сервер, на котором установлен Nagios, в данном случае сервер мониторинга.
На стороне почтового сервера.
Создаём наш плагин:
server ~ # cd /usr/lib/nagios/plugins/
server ~ # vim check_postqueue
#!/bin/bash
# Check postqueue nagios
# 19-07-2010
# Author: Cherwin Nooitmeer <[email protected]>
# Немного переделал: 22.06.2014
# exit codes
e_ok=0
e_warning=1
e_critical=2
e_unknown=3
# regular expression that matches queue IDs (e.g. D71EF7AC80F8)
queue_id='^[A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9]'
usage="Invalid command line usage"
if [ -z $1 ]; then
echo $usage
exit $e_unknown
fi
while getopts ":w:c:" options
do
case $options in
w ) warning=$OPTARG ;;
c ) critical=$OPTARG ;;
* ) echo $usage
exit $e_unknown ;;
esac
done
# determine queue size
qsize=$(mailq | egrep -c $queue_id)
if [ -z $qsize ]
then
exit $e_unknown
fi
if [ $qsize -ge $critical ]; then
retval=$e_critical
echo "QUEUE CRITICAL - $qsize mails in queue"
elif [ $qsize -ge $warning ]; then
retval=$e_warning
echo "QUEUE WARNING - $qsize mails in queue"
elif [ $qsize -lt $warning ]; then
retval=$e_ok
echo "QUEUE OK - $qsize mails in queue"
fi
exit $retval
Делаем скрипт исполняемым и тестируем, здесь 200 - число писем в очереди, при которых будет выдано сообщение WARNING, 1000 - CRITICAL:
server ~ # chmod +x check_postqueue
server ~ # /usr/lib/nagios/plugins/check_postqueue -w 200 -c 1000
QUEUE OK - 69 mails in queue
Теперь нужно проинициализировать скрипт в настройках NRPE:
server ~ # vim /etc/nagios/nrpe.cfg
command[check_postqueue]=/usr/lib/nagios/plugins/check_postqueue -w 200 -c 1000
server ~ # service nagios-nrpe-server restart
Переходим на сервер мониторинга.
Тестируем соединение с удалённым сервером:
monitor ~ # /usr/local/nagios/libexec/check_nrpe -H ip_addr -c check_postqueue
QUEUE OK - 69 mails in queue
Создаём соответствующую команду в конфиге (путь к конфигу может отличаться, см. как я устанавливал и настраивал Nagios):
monitor ~ # vim /etc/nagios4/objects/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
В конфиге удалённого сервера записываем новый сервис:
monitor ~ # vim /etc/nagios4/conf.d/hosts/server.cfg
# Check Postqueue
define service {
use generic-service
host_name main-server
service_description Postqueue
check_command check_nrpe!check_postqueue
}
monitor ~ # service nagios restart
Скрипт взят отсюда: exchange.nagios.org/directory/Plugins/Email-and-Groupware/Postfix/check_postfix_queue/details
Обозначать машины буду так:
server - то, что мы будем мониторить. в данном случае почтовый сервер;
monitor - сервер, на котором установлен Nagios, в данном случае сервер мониторинга.
На стороне почтового сервера.
Создаём наш плагин:
server ~ # cd /usr/lib/nagios/plugins/
server ~ # vim check_postqueue
#!/bin/bash
# Check postqueue nagios
# 19-07-2010
# Author: Cherwin Nooitmeer <[email protected]>
# Немного переделал: 22.06.2014
# exit codes
e_ok=0
e_warning=1
e_critical=2
e_unknown=3
# regular expression that matches queue IDs (e.g. D71EF7AC80F8)
queue_id='^[A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9][A-F0-9]'
usage="Invalid command line usage"
if [ -z $1 ]; then
echo $usage
exit $e_unknown
fi
while getopts ":w:c:" options
do
case $options in
w ) warning=$OPTARG ;;
c ) critical=$OPTARG ;;
* ) echo $usage
exit $e_unknown ;;
esac
done
# determine queue size
qsize=$(mailq | egrep -c $queue_id)
if [ -z $qsize ]
then
exit $e_unknown
fi
if [ $qsize -ge $critical ]; then
retval=$e_critical
echo "QUEUE CRITICAL - $qsize mails in queue"
elif [ $qsize -ge $warning ]; then
retval=$e_warning
echo "QUEUE WARNING - $qsize mails in queue"
elif [ $qsize -lt $warning ]; then
retval=$e_ok
echo "QUEUE OK - $qsize mails in queue"
fi
exit $retval
Делаем скрипт исполняемым и тестируем, здесь 200 - число писем в очереди, при которых будет выдано сообщение WARNING, 1000 - CRITICAL:
server ~ # chmod +x check_postqueue
server ~ # /usr/lib/nagios/plugins/check_postqueue -w 200 -c 1000
QUEUE OK - 69 mails in queue
Теперь нужно проинициализировать скрипт в настройках NRPE:
server ~ # vim /etc/nagios/nrpe.cfg
command[check_postqueue]=/usr/lib/nagios/plugins/check_postqueue -w 200 -c 1000
server ~ # service nagios-nrpe-server restart
Переходим на сервер мониторинга.
Тестируем соединение с удалённым сервером:
monitor ~ # /usr/local/nagios/libexec/check_nrpe -H ip_addr -c check_postqueue
QUEUE OK - 69 mails in queue
Создаём соответствующую команду в конфиге (путь к конфигу может отличаться, см. как я устанавливал и настраивал Nagios):
monitor ~ # vim /etc/nagios4/objects/commands.cfg
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
В конфиге удалённого сервера записываем новый сервис:
monitor ~ # vim /etc/nagios4/conf.d/hosts/server.cfg
# Check Postqueue
define service {
use generic-service
host_name main-server
service_description Postqueue
check_command check_nrpe!check_postqueue
}
monitor ~ # service nagios restart
Комментариев нет:
Отправить комментарий