Eximstats - следим за работой почтового сервера

Версия для печатиОтправить другуPDF version

После установки очередного почтового сервера на базе МТА Exim, решил прицепить к нему парсилку логов, чтобы красивую статистику почтовика рисовало.

Первым делом настроим ротацию логов. Как-то скучно смотреть что происходит день ото дня. Настроим, чтобы ротация логов почтового сервера происходила раз в неделю ;)

Почтовик я конфигурировал с поддержкой syslog. Соответственно правим /etc/newsyslog.conf. Необходимо строку настройки ротации maillog изменить к следующему виду:

# cat /etc/newsyslog.conf | grep maillog

/var/log/maillog                        640    7     *    $W6D0     JC

Перестартовывать newsyslog не стоит, поскольку это действие выполняется с помощью cron каждые сутки:

# cat /etc/crontab | grep newsyslog

0       *       *       *       *       root    newsyslog

Согласно нашим настройкам, лог-файл /var/log/maillog будет поддаваться ротации 1 раз в неделю, в шестой день, то есть в субботу.

Рабочим инструментом будет утилита eximstats. Чтобы была доступна возможность рисовать графики, необходим перловый модуль GD::Graph. Установим данный модуль из портов:

# cd /usr/ports/graphics/p5-GD-Graph
# make install clean

Дальше напишем простенький скрипт, который будет запускать утилиту eximstats с необходимы для нас опциями. Скрипт назовем eximstats.sh и разместим в каталоге /usr/local/etc. Содержание скрипта следующее:

# cat /usr/local/etc/eximstats.sh

#!/bin/sh
/usr/local/sbin/eximstats  -emptyok -charts -chartdir /usr/local/www/eximstats/ -html=/usr/local/www/eximstats/eximstats.html /var/log/maillog

Создадим каталог, куда будут сохранятся результаты парсинга лога почтовика.

# mkdir /usr/local/www/eximstats

Добавим такие строки в /usr/local/etc/apache22/httpd.conf (раздел <IfModule alias_module>).

Alias /eximstats/ "/usr/local/www/eximstats/"
    <Directory "/usr/local/www/eximstats/">
        DirectoryIndex eximstats.html
        Options none
        AllowOverride Limit
        Order Deny,Allow
        Allow from all
</Directory>

Проверяем синтаксис конфигурационного файла веб-сервера Apache и перечитываем его конфигурационные файлы заново:

# apachectl configtest
Syntax OK
# apachectl graceful

Поскольку лог почтового сервера будет создаваться заново в 0 часов 0 минут в субботу, настроим cron на запуск скрипта в пятницу, 23 часа 55 минут. 5 минут - достаточно большое врямя, должно хватить даже для нагруженых серверов.

# echo '# Mail server stats' >> /etc/crontab
# echo '55      23       *       *       5      root    /bin/sh /usr/local/etc/eximstats.sh' >> /etc/crontab
# killall -HUP cron

Чтобы не дожидаться субботы, работу скрипта можно проверить, запустив его из консоли.

# sh /usr/local/etc/eximstats.sh

Проверить результат можно, вбив в адресную строку браузера http://IP-adress_servera/eximstats/ 

Ваша оценка: Нет Средняя: 5 (2 голоса)

Вставай, Україно!

Литература