Receber traps SNMP é o oposto de consultar dispositivos habilitados para SNMP.
Nesse caso, as informações são enviadas de um dispositivo habilitado para SNMP e são coletados ou "trapped" pelo Zabbix
Normalmente, os traps são enviados mediante mudança de condição e o agente conecta-se ao servidor na porta 162 (em oposição à porta 161 no lado do agente que é usado para consultas). O uso de traps pode detectar alguns pequenos problemas que ocorrem durante o intervalo de consulta e podem ser perdidos pelo dado consultado.
O recebimento de traps SNMP no Zabbix foi projetado para funcionar com snmptrapd e um dos mecanismos embutidos para passar as traps para o Zabbix - um script Perl ou SNMPTT.
O fluxo de trabalho de recebimento de uma trap:
A configuração dos seguintes campos no frontend é específica para Tipos de itens:
Em Configuração→ Hosts, no campo Interface do host defina uma interface SNMP com o endereço IP ou DNS correto. o endereço de cada interceptação recebida é comparada com os endereços IP ou DNS de todos os endereços das interfaces SNMP para encontrar os hosts correspondentes.
No campo Chave, use uma das chaves trap SNMP:
Chave | ||
---|---|---|
Descrição | Valor de retorno | Comentários |
snmptrap[regexp] | ||
Captura todas as traps SNMP que correspondem à expressão regular especificada em regexp. Se regexp não for especificado, é capturado qualquer trap. | Trap SNMP | Este item pode ser definido apenas para interfaces SNMP Este item é suportado desde o Zabbix 2.0.0. Nota: Iniciando com o Zabbix 2.0.5, macros de usuário e expressões regulares globais são suportadas no parâmetro desta chave de item. |
snmptrap.fallback | ||
Captura todas as traps SNMP que não foram capturadas por nenhum dos itens snmptrap[] dessa interface. | SNMP trap | Este item é suportado desde o Zabbix 2.0.0. |
Expressões regulares de várias linhas não são suportadas neste momento
Defina o Tipo de informação como 'Log' para que os registros de hora sejam processados. Observe que qualquer outro formato, tal qual o numérico, também são aceitáveis mas requerem um gerenciado de trap personalizado.
Para a monitoração de trap SNMP, você primeiro deve configurá-lo corretamente.
Para receber as traps, o Zabbix Server/Proxy deverá estar configurado para iniciar o processo de SNMP trapper e apontado para o arquivo de traps que estará sendo alimentado pelo SNMPTT ou pelo 'perl trap receiver'. Para fazer isso, edite o arquivo de configuração (zabbix_server.conf ou zabbix_proxy.conf):
Se o parâmetro do systemd PrivateTmp tiver sido definido é improvável que funcione no /tmp.
Primeiramente o 'snmptrapd' precisa estar configurado para utilizar o SNMPTT.
Para uma melhor performance, o SNMPTT precisa estar configurado como um daemon utilizando o snmptthandler-embedded para enviar as traps. Veja mais intruções sobre configuração do SNMPTT neste endereço:
http://snmptt.sourceforge.net/docs/snmptt.shtml
Quando o SNMPTT estiver apto a receber as 'traps', ajuste-o para registrar as traps:
Agora formate as traps de forma a possibilitar que o Zabbix as reconheça (edite o arquivo snmptt.conf):
Não utilize traps 'não esperadas' - o Zabbix não estará apto a reconhece-las. Traps não esperadas podem ser tratadas ao definir um evento geral no snmptt.conf
:
EVENT general .* "General event" Normal
Perl trap receiver
Requerimentos: Perl, pacote Net-SNMP compilado com --enable-embedded-perl (já é padrão no Net-SNMP 5.4)
'Perl trap receiver' (olhe em misc/snmptrap/zabbix_trap_receiver.pl) poderá ser utilizado para encaminhar as traps para o Zabbix Server/Proxy diretamente a partir do snmptrapd. Para configurar:
Se o nome do script não estiver entre aspas, o snmptrapd irá se recusar a iniciar com mensagens similares a estas:
Tanto os 'perl trap receivers' quanto o 'SNMPTT trap configuration' precisam formatar a trap conforme o padrão a seguir: [timestamp] [the trap, part 1] ZBXTRAP [address] [the trap, part 2], onde
Observe que o "ZBXTRAP" e o "[address]" serão removidos da mensagem durante o processamento. Se a trap utilizar outro formato, o Zabbix pode analisa-las de forma inesperada.
Exemplo de trap:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
Esta trap será enviada para um host com a interface SNMP com IP=192.168.1.1:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" localhost - Link down on interface 2. Admin state: 1.
O Zabbix não provê rotação de logs que possa ser gerida pelo usuário. A rotação de logs primeiro irá renomear o arquivo antigo e após isso apaga-lo para garantir que nenhuma trap será perdida, conforme processo a seguir:
O tamanho máximo de um arquivo de log para o Zabbix é de 2GB. O arquivo de log precisa ser rotacionado antes deste limite.
Devido à forma de implementação, o Zabbix precisa que o sistema de arquivos suporte inodes para diferenciar os arquivos (a informação é obtida através da função stat()
).
Este exemplo utiliza o snmptrapd + SNMPTT para enviar traps ao Zabbix Server:
Teste o funcionamento:
Este exemplo simples utiliza o SNMPTT como traphandle. Para melhor performance em ambientes de produção, utilize um script Perl para encaminhar as traps do snmptrapd ao SNMPTT ou diretamente ao Zabbix.
This example uses snmptrapd + SNMPTT to pass traps to Zabbix server. Setup:
This results in:
This simple example uses SNMPTT as traphandle. For better performance on production systems, use embedded Perl to pass traps from snmptrapd to SNMPTT or directly to Zabbix.