Monitorando Status de Serviço NFE da Sefaz com Zabbix

Em 2014, na empresa que trabalhava realizava o monitoramento via web da página de disponibilidade da do Portal de Nota fiscal Eletrônica, naquela época somente com o monitoramento web era possível realizar esse monitoramento com o Zabbix. Porem de lá para cá outros serviços foram surgindo e se tornou impossível realizar o monitoramento do source desta página. A um tempo atrás tive novamente a necessidade de realizar novamente esse monitoramento.

NOTA: Esse tipo de monitoramento pega apenas as informações contidas no portal de Disponibilidade, ele não faz consulta via webservice de cada SEFAZ. Os valores contidos neste portal podem variar, tal informação é disponibilizada por cada SEFAZ e não pelo SCRIPT. Foi desenvolvido a partir de uma brincadeira na comunidade e com base nos scripts é possível realizar outros tipos de monitoramento.

Ajudei o André Pelissari e conseguimos resolvemos essa demanda e monitorar novamente pelo Zabbix, porém utilizando um script externo junto com o CURL. Com o script que iremos mostrar, é possível pegar a disponibilidade de cada serviço de um determinado autorizador.

Uma pergunta Bernardo, como os scripts funcionam?

Teremos dois shell script funcionando, são eles:

sefaznfe.discovery.sh — Realiza o download da página e salva em /tmp com o nome statusNFE.txt. Se ele tiver sucesso no download ele retorna o valor 1, caso tenha falha ou a página estiver offline ele retorna 0.
sefaznfe.consulta.sh — Responsável por realizar a consulta dentro do arquivo statusNFE.txt, nas consultas será pesquisada as linhas do Autorizador e cada linha de serviço deste autorizador, nesse script ele verificará as alterações das “Bolinhas” em cada serviço, se for verde (Disponível) ele apresentará o resultado 1, 2 para amarelo (Indisponível) e 0 para Vermelho(Offine).

Posteriormente criaremos um userparameter para cada serviço desse, para que o Zabbix possa chamar o script de consulta colher as informações necessárias.

Para essa documentação, estou utilizando:
Zabbix Server: 3.0.3
Ubuntu server 14.04
Curl pré-instalado.
Acesso à internet no zabbix server.

Mãos na massa, precisaremos criar os dois scripts dentro da pasta de script externos do Zabbix. Utilizando seu editor favorito crie os seguintes arquivos.

sefaznfe.discovery.sh

sefaznfe.consulta.sh

Salve os arquivos e aplique a permissão para que o script possa ser executado.

chmod +x sefaznfe*

Feito isso, precisaremos criar nesse momento os nossos userparameter. Inclua as linhas abaixo dentro do seu zabbix_agentd.conf. Será também necessário alterar o UnsafeUserParameters para 1. Apos a inclusão, deverá reiniciar o serviço do agente.

###### UserParameter TEMPLATE SEFAZ ########

UserParameter=discovery[*],/usr/lib/zabbix/externalscripts/sefaznfe.discovery.sh $1

UserParameter=autstatus[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “AUTORIZACAO” | cut -d “ “ -f3

UserParameter=retoaut[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “RETORNO.AUT” | cut -d “ “ -f4

UserParameter=inustatus[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “INUTILIZACAO” | cut -d “ “ -f3

UserParameter=consprot[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “PROTOCOLO” | cut -d “ “ -f4

UserParameter=servstatus[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “SERVICO” | cut -d “ “ -f3

UserParameter=conscad[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “CADASTRO” | cut -d “ “ -f4

UserParameter=recevent[*],/usr/lib/zabbix/externalscripts/sefaznfe.consulta.sh $1 | grep “EVENTO” | cut -d “ “ -f4

Pronto, nesse momento podemos partir para nosso Frontend do Zabbix.

Precisaremos criar um mapeamento de valor, pois no script ele enviará para o Zabbix apenas os valores 0, 1 e 2, pode criar manualmente ou realize o download do mapeamento abaixo importe para seu Zabbix 3.0.

Mapeamento de Valor

Após ter criado o mapeamento, precisaremos importar o Template. Baixe o arquivo abaixo e importe para seu Zabbix.

Template Disponibilidade Sefaz

Feito a importação, criaremos um host agora, Dê um nome e com o IP local do Zabbix. Já que o script está rodando localmente.

Associe o Template recém-importado.

E precisaremos criar duas macros, você pode criar essas macros tanto no host, quanto no Template, fica ao seu critério. Uma {$AUT} será para passar qual Autorizador que será feita a pesquisa e outra, {$LINK}, o link da página de disponibilidade . Nesse exemplo utilizei o SVRS, pois é o que meu estado utiliza.

Basta neste momento aguardar os resultados da coleta.

Gráfico.

Pronto. A partir desse momento não será preciso ficar com F5 no site vendo se algum serviço está indisponível. Lembrando que essa solução também é possível monitorar a Disponibilidade do CTE (Conhecimento de Transporte Eletrônico), basta adequar o script para este ambiente, alterando a forma que é consulta dentro do script de consult.

Update:

Alguns leitores informaram que o script não estava funcionando. Pude notar dois pontos.

  1. Versão antiga do CURL;
  2. No script sefaznfe.discovery.sh. Tivemos que incluir a opção -k na linha “if $CURL -s -k -o” para poder ignorar certificados.

Originally published at https://www.bernardolankheet.com.br on July 12, 2016.

Monitoring, DevOps Student and content creation!

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store