Найти в Дзене

Мониторинг postfix через zabbix

После установки и настройки pistfix понадобилось его мониторить. Глаза боятся - руки делают.

У нас есть zabbix сервер версии 3.4.4 и недавно настроенный postfix на Ubuntu.

Короткую и понятную статью нашёл здесь:
https://h1d3.org/posts/monitoring-postfix.html

Но шаблон для заббикса сразу не заработал, да и настройки меня не устроили, так что я доработал шаблон и убрал ненужные зависимости, которые мешали импорту. Пока ещё не знаю что делать с значениями типа "3.11 Kmails" - оставил как есть, пусть будут "килописьма".

Вот мой отредактированный шаблон:
Zabbix-шаблон для postfix

Ставим софт на постфикс:

apt-get install logtail pflogsumm -y

Создаём файл /etc/zabbix/zabbix_scripts/postfix-zabbix-stats.sh:

#!/bin/bash

MAILLOG=/var/log/mail.log
PFOFFSETFILE=/tmp/zabbix-postfix-offset.dat
PFSTATSFILE=/tmp/postfix_statsfile.dat
TEMPFILE=$(mktemp)
PFLOGSUMM=/usr/sbin/pflogsumm
LOGTAIL=/usr/sbin/logtail

PFVALS=( 'received' 'delivered' 'forwarded' 'deferred' 'bounced' 'rejected' 'held' 'discarded' 'reject_warnings' 'bytes_received' 'bytes_delivered' )

[ ! -e "${PFSTATSFILE}" ] && touch "${PFSTATSFILE}" && chown zabbix:zabbix "${PFSTATSFILE}"

printvalues() {
key=$1
pfkey=$(echo "$1" | tr '_' ' ')
value=$(grep -m 1 "${pfkey}" $TEMPFILE | awk '{print $1}' | awk '/k|m/{p = /k/?1:2}{printf "%d\n", int($1) * 1024 ^ p}')
old_value=$(grep -e "^${key};" "${PFSTATSFILE}" | cut -d ";" -f2)
if [ -n "${old_value}" ]; then
sed -i -e "s/^${key};${old_value}/${key};$((${old_value}+${value}))/" "${PFSTATSFILE}"
else
echo "${key};${value}" >> "${PFSTATSFILE}"
fi
}

if [ -n "$1" ]; then
key=$(echo ${PFVALS[@]} | grep -wo $1)
if [ -n "${key}" ]; then
value=$(grep -e "^${key};" "${PFSTATSFILE}" | cut -d ";" -f2)
echo "${value}"
else
rm "${TEMPFILE}"
exit 2
fi
else
"${LOGTAIL}" -f"${MAILLOG}" -o"${PFOFFSETFILE}" | "${PFLOGSUMM}" -h 0 -u 0 --bounce_detail=0 --deferral_detail=0 --reject_detail=0 --no_no_msg_size --smtpd_warning_detail=0 > "${TEMPFILE}"
for i in "${PFVALS[@]}"; do
printvalues "$i"
done
fi

rm "${TEMPFILE}"

Разрешаем выполнение:

chmod a+x postfix-zabbix-stats.sh

Добавляем данный скрипт в cron от рута: 

crontab -e
*/2 * * * * bash /etc/zabbix/zabbix_scripts/postfix-zabbix-stats.sh
service cron restart

Добавляем файл /etc/zabbix/zabbix_agent.d/userparameter_postfix.conf:

UserParameter=postfix.pfmailq,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'
UserParameter=postfix[*],/etc/zabbix/zabbix_scripts/postfix-zabbix-stats.sh $1

Перезапускаем агента:

service zabbix-agent restart

Цепляем шаблон заббикса к хосту и наблюдаем картинку:

-2

Через несколько дней

Mail.ru к этому моменту "прогрелось" и стало принимать наши письма.

-3

Источник:
https://internet-lab.ru/zabbix_postfix

Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.