Когда таких серверов становится много, а некоторые из них рассылают большое количество писем, становится трудно своевременно обнаруживать проблемы с отправкой писем. Помочь в таком случае может система мониторинга. При проблемах с отправкой писем почтовый сервер откладывает проблемные письма в отдельную очередь, чтобы через некоторое время попробовать отправить эти письма снова. В Postfix эта очередь отложенных писем называется deferred. Для контроля количества писем в этой очереди нам понадобится настроенный Zabbix-агент и установленный пакет sudo. Настройку Zabbix-агента и установку sudo не описываю в виду их тривиальности.
При помощи команды visudo разрешим пользователям из группы zabbix выполнять от имени пользователя root команду поиска файлов в очереди Postfix:
%zabbix ALL=(ALL) NOPASSWD:/usr/bin/find /var/spool/postfix/deferred -type fВ файл конфигурации Zabbix-агента /etc/zabbix/zabbix_agentd.conf (или /usr/local/etc/zabbix24/zabbix_agentd.conf для случая FreeBSD с Zabbix-агентом версии 2.4) пропишем пользовательский параметр, который будет выполнять команду, подсчитывающую количество файлов, найденных в очереди отложенных писем Postfix:
UserParameter=postfix.deferred.length,sudo /usr/bin/find /var/spool/postfix/deferred -type f | wc -lПосле внесения изменений в конфигурацию Zabbix-агента, не забудьте его перезапустить:
# /etc/init.d/zabbix-agent restartВ шаблоне есть:
- один элемент данных с ключом postfix.deferred.length, с помощью которого раз в 5 минут контролируется количество писем в очереди отложенных,
- один макрос {$POSTFIX_DEFERRED_LIMIT} со значением 200, который задаёт порог срабатывания триггера,
- один триггер "Проблемы с отправкой почты", который срабатывает, если в очереди скопилось больше писем, чем указано в макросе.
Вот наиболее интересный фрагмент графика с одного из серверов:
Готовые шаблоны можно взять по ссылкам:
- Template_App_Postfix_Queue.xml - элемент данных типа "Zabbix-агент",
- Template_App_Postfix_Queue_Active.xml - элемент данных типа "Zabbix-агент (активный)".
2 комментария:
Можно у mailq спрашивать кол-во писем в очереди:
mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'
Или то же самое:
postqueue -p
Я подсмотрел плагин у nagios, он грепает этот вывод.
Отправить комментарий