Monitorar "Event Viewer" do Windows no Zabbix através do SNMP
Autor: RAFAEL OLIVEIRA | Publicado: 2010-09-22T17:31:00-03:00


Uma das tarefas que fazem parte da rotina de um administrador de redes é verificar com certa frequência os logs de eventos dos servidores em busca de erros. Dependendo da quantidade de máquinas contidas na empresa, esta atividade pode se tornar tediosa e cansativa.Na empresa onde trabalho utilizamos o Zabbix para monitorar nossos servidores. Entretanto, as verificações se restringiam a itens como uso de processador, memória, rede, disco, entre outros. Os eventos gerados pelo sistema operacional ainda eram necessários ser visualizados, individualmente, em cada servidor. Em pesquisas pela internet, encontrei o artigo Trapping Windows Events with SNMP, escrito por Eric A. Hall, o qual ele descreve como configurar o serviço SNMP do Windows para enviar traps a uma estação coletora quando ocorrer algum evento no sistema operacional.Primeiramente, é necessário configurar o agente SNMP do Windows para enviar os traps a uma estação coletora, no nosso caso, o servidor Zabbix. Este procedimento pode ser visto neste artigo da Microsoft.A ferramenta chama-se Event to trap translator e pode ser acessada acessando o menu Iniciar &gt; Executar &gt; evntwin. Na tela inicial, deve-se selecionar a opção Custom na seção Configuration type. Isso ativará o botão Edit. Ao clicar nele, a janela expandirá um painel abaixo onde iremos selecionar os eventos que desejamos ser alertados através do Zabbix.


É possível selecionar todos os eventos, porém isto acarretaria em sobrecarga do servidor de monitoramento, pois o Windows grava entradas no log, frequentemente, sendo que a maioria é apenas informativa.&nbsp;No meu caso, optei por selecionar apenas os erros ou alertas de warning, e dos serviços específicos daquele servidor. Por exemplo, uma máquina que possui Oracle instalado, ativei os traps dos erros deste software.Para habilitar o envio de traps por algum evento, navegue pelas pastas contidas do lado esquerdo da tela até encontrar a sessão desejada. Desta forma, do lado direito aparecerão os eventos relacionados.



Após decidir quais eventos serão configurados, basta selecioná-los e clicar no botão Add. Após terminar o processo, basta clicar em OK para salvar e encerrar o aplicativo. Este processo pode demorar alguns minutos dependendo da quantidade de eventos selecionados.É possível também exportar o que foi alterado visando possuir um backup das configurações. Basta selecionar os eventos já configurados e escolher Export.... Será solicitado um caminho para salvar o arquivo gerado, que possui a extensão cnf. É possível importá-lo depois, caso necessário, utilizando o comando evntcmd.Agora vamos ao Zabbix.No servidor de monitoramento, primeiro precisamos editar o serviço SNMP (Net-SNMP). As configurações abaixo foram feitas em um servidor com o Ubuntu Server instalado.Primeiro deve-se editar o arquivo /etc/default/snmpd alterando a linha:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid 127.0.0.1'
Para:
SNMPDOPTS='-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/snmpd.pid'
E a opção TRAPDRUN conforme abaixo:
TRAPDRUN=yes
Depois, precisamos alterar&nbsp;o arquivo /etc/snmp/snmptrapd.conf, inserindo as linhas abaixo:
traphandle default /bin/bash /var/zabbix/bin/snmptrap.shauthCommunity log,execute,net ComunidadeSNMP
O parâmetro ComunidadeSNMP deve possuir o nome da comunidade SNMP utilizada na sua rede. O caminho /var/zabbix/bin/snmptrap.sh no seu ambiente.Na pasta misc/snmptrap do pacote de instalação do Zabbix, possui o arquivo snmptrap.sh. Ele deve ser copiado para o diretório indicado no parâmetro traphandle default do arquivo /etc/snmp/snmptrapd.conf conforme exibido acima.Abaixo há um exemplo do arquivo snmptrap.sh.
#!/bin/bash
ZABBIX_SERVER="localhost"; #IP ou hostname do servidor Zabbix
ZABBIX_PORT="10051"; &nbsp; # Igual ao parametro 'Listen Port' do zabbix_server.conf#No parametro abaixo, verificar o local do executavel zabbix_sender
ZABBIX_SENDER="/usr/local/bin/zabbix_sender"; &nbsp;&nbsp;&nbsp; # insert you path

read hostname
read ip
read uptime
read trapoid
read payload
&nbsp;hostname=`echo $hostname|cut -f1 -d' '`

payload1=`echo $payload|cut -f2- -d' '`&nbsp;&nbsp;&nbsp;read payloadpayload2=`echo $payload|cut -f2- -d' '`read payloadpayload3=`echo $payload|cut -f2- -d' '`read payloadpayload4=`echo $payload|cut -f2- -d' '`read payloadpayload5=`echo $payload|cut -f2- -d' '`str="[$hostname] - $payload1 $payload2 $payload3 $payload4 $payload5"KEY="snmptraps";HOST="TRAPSERVER";$ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"

Em seguida, é necessário reiniciar o daemon snmpd:
# /etc/init.d/snmpd restart
A próxima etapa, corresponde a configuração dos itens na interface web do Zabbix. Primeiramente, é necessário adicionar um novo host.

&nbsp;&nbsp; 
Na criação do item que tratará os traps SNMP, podería-se associá-lo ao host, diretamente, mas, honestamente, prefiro a criação de um novo template e a adição do item e do trigger no mesmo. Desta forma, após a criação do template, adicionar ao mesmo o item conforme a figura abaixo:



Depois, adicionamos um novo trigger ao template.




O trigger permitirá que os eventos sejam exibidos na Dashboard por 60 segundos. Se desejar, pode-se criar uma ação que envia um alerta por e-mail, por exemplo.Finalmente, associamos o template ao host, que receberá os traps, criado anteriormente.Pronto! O Zabbix passará a receber eventos gerados pelos servidores Windows. Abaixo a um exemplo de e-mail enviado pelo Zabbix contendo um evento gerado por um servidor Windows.


Um abraço e até a próxima!