Мониторинг Postfix
Все как обычно, необходимо мониторинг и статистика postfix'a, тут шаблон, для его работы нужен скрипт, который периодически парсит с помощью pflogsumm и pftail лог.
Первым делом необходимо установить следующие пакеты
Далее листинг скрипта:
и перезапускаем
Осталось только добавить в zabbix агент следующий конфиг:
Первым делом необходимо установить следующие пакеты
apt-get install logtail pflogsumm -y
Далее листинг скрипта:
/usr/local/bin/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}"Далее добавляем данный скрипт в cron
echo "*/2 * * * * root bash /usr/local/bin/postfix-zabbix-stats.sh" >> /etc/crontab
и перезапускаем
service cron restart
Осталось только добавить в zabbix агент следующий конфиг:
/etc/zabbix/zabbix_agentd.d/userparameter_postfix.conf
UserParameter=postfix.pfmailq,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]' UserParameter=postfix[*],/usr/local/bin/postfix-zabbix-stats.sh $1Ну и перезапустить его
service zabbix-agent restart