Plugin que faz verificação do status do serviço da Nota Fiscal eletrônica 2.00.
O plugin foi escrito em 
Java e 
Shell Script, os méritos das classes principais 
são de 
www.javac.com.br, apenas fiz pequenas modificações 
para adaptá-lo ao ambiente.
Irei disponibilizar tanto o código fonte, quanto ele já construído. Devido ao fato de eu ter suprimido 
algumas mensagens de erro do try do Java, o código fonte é necessário, para que as mensagens 
sejam exibidas. 
O projeto foi construído e escrito no 
Netbeans. Vale lembrar que para o plugin funcionar, 
claro, é preciso ter o 
JRE na máquina.
Também irei anexar o projeto já construído chamado 
NFeBuildCacerts, que gera os 
certificados CA para cada link.
Os projetos já construídos e prontos para uso encontram-se no diretório "dist".
Usei o banco de dados 
HSQLDB. Para manter as 
configurações básicas do aplicativo, existe o 
HSQL Database Manager que é um front-end 
para manipular a base, porém não entraremos em detalhes, modificaremos a base com editor de texto 
de sua preferência.
A base encontra-se no diretório "bd", e o arquivo a ser modificado é o "nfeStatus.script", nele haverá o 
cadastro dos links da Sefaz a ser verificado. O caminho completo para os certificados (cacert, e pfx), 
senhas dos certificados. (No projeto em anexo, existe a base já populada para alguns links).
Vamos iniciar à configuração do plugin.
Primeiro, gere os certificados CA para cada link com o projeto NFeBuildCacerts:
# java -jar NFeBuildCacerts.jar  nfe-cacerts-sp nfe.fazenda.sp.gov.br
Onde:
- NFeBuildCacerts.jar é o projeto construído.
- NnfeCacerts-sp é o certificado a ser gerado (pode ter qualquer nome, lembre-se que ele deve ser 
configurado no BD depois).
- nfe.fazenda.sp.gov.br é o link ao qual deverá ser gerado o certificado.
Ao executar o aplicativo e tudo ocorrer de acordo, será exibido algo parecido com o que segue abaixo:
INFO: | Loading KeyStore nfe-cacerts-sp...
INFO: | Opening connection to nfe.fazenda.sp.gov.br:443...
INFO: | Starting SSL handshake...
INFO: | No errors, certificate is already trusted
INFO: | Server sent 3 certificate(s):
INFO: | Added certificate to keystore 'nfe-cacerts-sp' using alias 'nfe.fazenda.sp.gov.br-0'
INFO: | Added certificate to keystore 'nfe-cacerts-sp' using alias 'nfe.fazenda.sp.gov.br-1'
INFO: | Added certificate to keystore 'nfe-cacerts-sp' using alias 'nfe.fazenda.sp.gov.br-2'
INFO: | Cacerts gerado em: D:\Projetos\Projeto NFE\NFeBuildCacerts\nfe-cacerts-
sp
Após gerado o certificado para cada link, atualize o BD. Exemplo:
INSERT INTO WEBSERVICE 
VALUES(35,'https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx','/usr/local/nagios/li
bexec/nfeStatus/certsPFX/meu.pfx','senha_pfx','/usr/local/nagios/libexec/nfeStatus/cacerts/nfe-
cacerts-sp')
Agora criaremos a estrutura de diretórios no Nagios, ficando assim: 
"/usr/local/nagios/libexec/nfeStatus".
- bd                     -> Onde encontra-se o Banco de Dados
- cacerts               -> Colocar os certificados gerados com NFeBuildCacerts
- certsPFX             -> Certificados propriamente dito. (.pfx)
- lib                     -> Bibliotecas de dependências do aplicativo Java (NFeConsultaStatus.jar).
- check_status_nfe -> Shell Script que retorna os estados do link para o Nagios, baseado no 
retorno do NFeConsultaStatus.jar.
- log4j.properties   -> Arquivo de propriedades do log4j (Caso queira ver os logs no shell altere a 
linha log4j.rootCategory=OFF, S , para, log4j.rootCategory=INFO, S)
- NFeConsultaStatus.jar -> O aplicativo que construímos.
Após os certificados gerados, o Java instalado na máquina, vamos testar o aplicativo. Dentro do shell 
script "check_status_nfe" há uma linha que chama o java para executar o aplicativo, assim:
/usr/java/jre1.6.0_24/bin/java -jar /usr/local/nagios/libexec/nfeStatus/NFeConsultaStatus.jar 
$CODIGO_ESTADO
Troque o "$CODIGO_ESTADO" pelo código cadastrado no BD, lembrando que utilizei os códigos oficiais 
do IBGE (pode ser encontradas na net com facilidade).
Logo, execute no shell informando um dos códigos que tenha no BD, com o certificados. Exemplo para 
São Paulo seria:
# /usr/java/jre1.6.0_24/bin/java -jar 
/usr/local/nagios/libexec/nfeStatus/NFeConsultaStatus.jar 35
Serviço em Operação - Tempo medio: 1
Note a resposta: "Serviço em Operação - Tempo medio: 1", isso nos diz que esta tudo OK com os 
certificados, links e, por consequência, o BD está OK também. (confronte o resultado com os 
semáforos do site da 
Sefaz
 versão 2.00).
Detalhe: Devido a falta de padrão na resposta (Operação, operacao), o shell script tem a linhas que 
tratam a resposta, são as condições if.
O script trata a resposta do aplicativo que criamos e retorna os estados para o Nagios, logo, não 
esqueça de alterar o script caso mude os retornos do aplicativo no Java.
Se for utilizar os links de homologação é preciso alterar o tipo de ambiente no código Java na linha 67 
aproximadamente (<tpAmb>1</tpAmb>), reconstrua o aplicativo.
Altere de:
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(" 
<consStatServ versao=\"2.00\" 
xmlns=\"http://www.portalfiscal.inf.br/nfe\">").append(" 
<tpAmb>1</tpAmb>").append("<cUF>").append(codigoDoEstado).append("</cUF>")
.append(" <xServ>STATUS</xServ>").append("</consStatServ>");
Para:
xml.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>").append(" 
<consStatServ versao=\"2.00\" 
xmlns=\"http://www.portalfiscal.inf.br/nfe\">").append(" 
<tpAmb>2</tpAmb>").append("<cUF>").append(codigoDoEstado).append("</cUF>")
.append(" <xServ>STATUS</xServ>").append("</consStatServ>");
Agora vamos configurar o 
Nagios. Adicione no nagios.cfg:
# Sefaz
cfg_file=/usr/local/nagios/etc/objects/sefazgroups.cfg
cfg_file=/usr/local/nagios/etc/objects/linksSefaz.cfg
Crie linksSefaz.cfg.
#Defina um host
define host{
   use         linux-
server              
;    
   host_name   Links SEFAZ
   alias       Links SEFAZ
   address     127.0.0.1    
}
# SP - 
https://nfe.fazenda.sp.gov.br/nfeweb/services/nfestatusservico2.asmx
define service{
   
use              &n
bsp;    generic-nfe 
   
host_name             Links 
SEFAZ
   service_description   NFe 35 - SP
   check_command         
check_nfe_status!35
   
contact_groups        admins,programadores
   servicegroups         links_sefaz 
}
Crie sefazgroups.cfg:
define servicegroup{
   servicegroup_name   links_sefaz
   
alias              &
nbsp;  Servicos SEFAZ
}
No commands.cfg:
# 'check_nfe_status' command definition
define command{
   command_name   check_nfe_status
   command_line   /usr/local/nagios/libexec/nfeStatus/check_status_nfe 
$ARG1$
   }
No templates.cfg:
define service{
        name      
               
;       generic-nfe
        active_checks_enabled   &nb
sp;       1
        passive_checks_enabled   &n
bsp;      1
        parallelize_check    &n
bsp;          1
        obsess_over_service    
;         1
        check_freshness    &n
bsp;            0
        notifications_enabled    
;       1
        event_handler_enabled   &nb
sp;       1
        flap_detection_enabled   &nb
sp;      1
        failure_prediction_enabled   
   1
        process_perf_data    &
nbsp;          1
        retain_status_information   &
nbsp;   1
        retain_nonstatus_information  &nbs
p; 1
        is_volatile     &n
bsp;               
0
        check_period     
               
;24x7
        max_check_attempts   &nbs
p;          5
        normal_check_interval   &nb
sp;       5
        retry_check_interval    
;        2
        contact_groups    &nbs
p;             admins
        notification_options    
        w,u,c,r
        notification_interval    
       8
        notification_period    &
nbsp;        24x7
        register     &nbs
p;              &nb
sp;   0
}
Neste ponto devemos estar com tudo funcionando.
Reinicie o Nagios e aguarde a tarefa de checagem ser executada. Lembre-se: sempre verifique as 
permissões dos arquivos. Caso queira ver as mensagens que suprimi (Exceções), altere as linhas 104 e 
105:
( System.out.println("Time out");
para:
System.out.println(ex));
Assumi que qualquer coisa diferente de OK, é problema para nós, então suprimi as mensagens de erro.
Os arquivos:
- NFe_Consulta
Status.zip  -> Projeto Netbeans completo, com fonte e já construido (Dir. dist), aplicativo que 
verifica o status do serviço.
- nfeStatus.zip               
-> Projeto já construido com estrutura de diretório pronta para adicionar ao Nagios aplicativo que 
verifica o status do serviço.
- NFeBuildCacerts.z
ip      -> Projeto Netbeans completo, com fonte e já construido (Dir. dist), aplicativo que gera o 
certificados. 
Não retiro o mérito dos autores, que toda base para projeto foi conseguida através da comunidade:
Apenas ajustei e adicionei algumas funções.
Sintam-se a vontade para opinar, alterar, sugerir e distribuir o conteúdo desta dica.
Espero que seja útil. Qualquer dúvida, sugestão... Só comentar, que na medida do tempo disponível 
vou respondendo.