You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
4.4 KiB
111 lines
4.4 KiB
8 years ago
|
---
|
||
|
title: Почтовый шлюз: задание со звёздочкой (Статистика и мониторинг)
|
||
|
tags: mail, spam, exim, zabbix
|
||
|
---
|
||
|
|
||
|
Настройка почты - это длительный процесс, результаты будут видны далеко не сразу
|
||
|
и могут различаться в зависимости от времени суток и дня недели.
|
||
|
|
||
|
Пока мы не начали ничего делать, предлагаю для начала обложить всё статистикой и мониторингом,
|
||
|
для отчётности, быстрой реакции на ошибки и чтоб потом показывать руководству результаты работы.
|
||
|
|
||
|
---
|
||
|
|
||
|
В составе самого exim'а идёт скрипт eximstats, который выполняет львиную часть работы.
|
||
|
Осталось только организовать сохранение статистики.
|
||
|
|
||
|
#!/bin/sh
|
||
|
|
||
|
mkdir -p /var/stats/exim{exim,greylisting,rspamd}
|
||
|
DATE=$(date +%Y-%m-%d)
|
||
|
|
||
|
# статистика самого exim'а
|
||
|
cd "/var/stats/exim"
|
||
|
eximstats -nr -byedomain \\
|
||
|
-pattern "Warnings from logs" /Warning/ \\
|
||
|
/var/log/exim/mainlog > "stats_${DATE}.txt"
|
||
|
rm -f "stats_latest.txt"
|
||
|
ln -s "stats_${DATE}.txt" "stats_latest.txt"
|
||
|
|
||
|
exit 0; # грейлистинг пока не настроен
|
||
|
# статистика sqlgrey
|
||
|
cd "/var/stats/greylisting"
|
||
|
sqlgrey-logstats.pl -t < /var/log/maillog > "stats_${DATE}.txt"
|
||
|
|
||
|
exit 0; # антиспам пока не настроен
|
||
|
# статистика rspamd
|
||
|
cd "/var/stats/rspamd"
|
||
|
rspamc stat_reset > "${DATE}_stat.txt"
|
||
|
rspamc counters > "${DATE}_hits.txt"
|
||
|
|
||
|
Также, я для себя наваял [скрипт](exim-routes-usage.pl.gz), который считает статистику использования роутов.
|
||
|
В выше он не используется, но иногда бывает полезен.
|
||
|
|
||
|
Мониторинг
|
||
|
----------
|
||
|
|
||
|
В zabbix всё добавляется достаточно легко.
|
||
|
Мы будем мониторить размер очереди (общий/frozen) и доступность сервиса.
|
||
|
|
||
|
``/etc/zabbix2/bin/exim-queue-size.sh``:
|
||
|
|
||
|
#!/bin/sh
|
||
|
set -e
|
||
|
|
||
|
SUDO='/usr/bin/sudo'
|
||
|
EXQG='/usr/sbin/exiqgrep'
|
||
|
|
||
|
case "$1" in
|
||
|
"total")
|
||
|
$SUDO $EXIQ -i | wc -l
|
||
|
;;
|
||
|
"frozen")
|
||
|
$SUDO $EXIQ -i -z | wc -l
|
||
|
;;
|
||
|
*)
|
||
|
echo "ZBX_NOTSUPPORTED"
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
Поправить пути, не забыть ``chmod +x``.
|
||
|
|
||
|
``/etc/zabbix2/zabbix_agent.conf.d/exim.conf``:
|
||
|
|
||
|
UserParameter=exim.queue[*],/etc/zabbix2/bin/exim-queue-size.sh $1
|
||
|
|
||
|
Убедиться, что в основном конфиге заббикса есть строчка типа ``Include=/etc/zabbix2/zabbix_agentd.conf.d/``.
|
||
|
|
||
|
``/etc/sudoers.d/10-zabbix``:
|
||
|
|
||
|
Defaults:zabbix !requiretty
|
||
|
zabbix ALL=(ALL) NOPASSWD: \\
|
||
|
/etc/zabbix2/bin/exim-queue-size.sh
|
||
|
|
||
|
Здесь нужно убедиться, что в основном конфиге sudo есть строчка ``#includedir /etc/sudoers.d``.
|
||
|
Да, прямо так, как оно указано, с "#" в начале.
|
||
|
Затем - проверить как вышеуказанный скрипт запускается из-под юзера ``zabbix``:
|
||
|
|
||
|
sudo -u zabbix /bin/sh
|
||
|
sudo -l
|
||
|
# ^^ должно вылезти нечто подобное тому, что мы писали в файлик 10-zabbix.
|
||
|
/etc/zabbix2/bin/exim-queue-size.sh total
|
||
|
# ^^ должно вылезти число
|
||
|
exit
|
||
|
|
||
|
Если всё работает - здесь работа закончена, осталось написать шаблон для заббикса.
|
||
|
Хорошим началом может стать следующий список item'ов для мониторинга:
|
||
|
|
||
|
* tcp.listen[25] + tcp.listen[465]
|
||
|
* exim.queue[total], exim.queue[frozen]
|
||
|
* proc.num[exim], proc.num[sqlgrey]
|
||
|
* proc.num[fail2ban]
|
||
|
* proc.num[redis]
|
||
|
* proc.num[rspamd]
|
||
|
* proc.num[clamd]
|
||
|
|
||
|
Последние четыре пункта - можно растащить по разным шаблонам, они могут использоваться отдельно.
|
||
|
|
||
|
---
|
||
|
|
||
|
[К оглавлению](/articles/2016/04/10/hardcore-mail-relay-1/)
|