Monitorar Postfix pelo Zabbix

Outro dia estava procurando como fazer o monitoramento de um servidor de e-mail de um cliente e encontrei na própria documentação do Zabbix um Howto. Essa documentação pode ser acessada através deste link.

Este post é um passo a passo que não está presente na documentação citada, pois ela apenas informa quais os softwares precisam ser instalados e utilizando os pacotes da distribuição Debian. Eu implementei o monitoramento do Postfix em um servidor com a distribuição CentOS instalada.

No servidor onde o Postfix está instalado e funcionando, execute o comando abaixo para instalar os pacotes necessários para o funcionamento deste monitoramento:



yum install postfix-perl-scripts logcheck -y

Observação: O pacote logcheck é encontrado no repositório EPEL. O mesmo deve estar configurado para você conseguir instalar o pacote e suprir suas dependências.
Com os pacotes instalados, podemos iniciar a configuração necessária para o Zabbix monitorar o Postfix.
Copie o script abaixo e salve em um local de sua preferência. Nas minhas instalações do Zabbix, eu sempre deixo em /opt/zabbix/externalscripts. Para este script eu salvei como zabbix-postfix.sh

#!/bin/bash

MAILLOG=/var/log/maillog
DAT1=/opt/zabbix/tmp/zabbix-postfix-offset.dat
DAT2=$(mktemp)
PFLOGSUMM=/usr/sbin/pflogsumm
ZABBIX_CONF=/etc/zabbix/zabbix_agentd.conf
DEBUG=1

function zsend {
  key="postfix[`echo "$1" | tr ' -' '_' | tr '[A-Z]' '[a-z]' | tr -cd [a-z_]`]"
  value=`grep -m 1 "$1" $DAT2 | awk '{print $1}'`
  [ ${DEBUG} -ne 0 ] && echo "Send key "${key}" with value "${value}"" >&2
  /opt/zabbix/bin/zabbix_sender -c $ZABBIX_CONF -k "${key}" -o "${value}" 2>&1 >/dev/null
}

/usr/sbin/logtail -f$MAILLOG -o$DAT1 | $PFLOGSUMM -h 0 -u 0 --no_bounce_detail --no_deferral_detail --no_reject_detail --no_no_msg_size --no_smtpd_warnings > $DAT2

zsend received
zsend delivered
zsend forwarded
zsend deferred
zsend bounced
zsend rejected
zsend held
zsend discarded
zsend "reject warnings"
zsend "bytes received"
zsend "bytes delivered"
zsend senders
zsend recipients

rm $DAT2

Não esqueça de dar permissão para o usuário zabbix poder executar este script.

Adicione a linha abaixo no arquivo de configuração zabbix_agentd.conf:

UserParameter=postfix.mailq,mailq | grep -v "Mail queue is empty" | grep -c '^[0-9A-Z]'

Vale lembrar que este tipo de monitoramento é através de scripts, e tem a necessidade do parâmetro EnableRemoteCommands estar configurado com o valor '1' no arquivo de configuração do Zabbix. Também é importante que o monitoramento ativo do agente esteja configurado, pois o script de monitoramento do Postfix utiliza o comando zabbix_sender, e os itens estarão configurados como do tipo Zabbix Trapper.

O arquivo /var/log/maillog por padrão não dá acesso a leitura a outros usuários do sistema a não ser o root. Sendo assim, para efeito de ditática, vou apenas liberar o acesso aos demais usuários e grupos para permitir que o usuário zabbix leia esse arquivo. Caberá ao leitor decidir como será configurado a permissão para o usuário zabbix ter acesso ao arquivo para que o monitoramento possa ser realizado.

Para contemplar o monitoramento, ou seja, o Zabbix fazer a coleta, é necessário a execução do script criado. Para isso, criaremos uma entrada na crontab para a execução do script.

0/30 * * * * /opt/zabbix/externalscripts/zabbix-postfix.sh

Você pode baixar uma template pronta para os itens coletados no script e importá-la no seu servidor Zabbix. Depois, basta associar a template ao servidor Postfix que você irá monitorar.

Qualquer dúvida ou sugestão, pode contar comigo.

Share this:

,

COMENTÁRIOS

5 comentários:

  1. Bom dia Janssen, você poderia disponibilizar esse template ?

    ResponderExcluir
    Respostas
    1. Bom dia Lucas. Já disponibilizei o link no final do post.
      Obrigado pelo seu contato.

      Excluir
  2. Janssen, ao associar o host ao template, me dá o seguinte erro:
    Não foi possível encontrar interface "HOSTNAME.DOMÍNIO.COM.BR" no host para a chave do item "postfix.mailq".
    Pode me ajudar nesse assunto?

    ResponderExcluir
  3. Olá Boa Tarde,. Primeiramente parabéns pelo tuturial.
    Fiz aqui, porém só está pegando a fila de e-mails. Os outros dados dão erro conforme abaixo:
    #zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k postfix[received]
    ZBX_NOTSUPPORTED: Unsupported item key.

    ResponderExcluir