Receber traps SNMP ¨¦ o oposto de consultar dispositivos habilitados para SNMP.
Neste caso, a informa??o ¨¦ enviada de um dispositivo habilitado para SNMP e ¨¦ coletada ou "trapped" pelo Áú»¢¶Ä²©.
Normalmente, traps s?o enviadas quando h¨¢ alguma mudan?a de condi??o, e o agente se conecta ao servidor na porta 162 (ao contr¨¢rio da porta 161 no lado do agente, usada para consultas). O uso de traps pode detectar problemas curtos que ocorrem entre os intervalos de consulta e podem ser perdidos pelos dados de consulta.
Receber traps SNMP no Áú»¢¶Ä²© ¨¦ projetado para funcionar com o snmptrapd e um dos mecanismos para passar as traps para o Áú»¢¶Ä²© ¨C seja um script Bash ou Perl, ou o SNMPTT.
A maneira mais simples de configurar o monitoramento de traps ap¨®s a configura??o do Áú»¢¶Ä²© ¨¦ usar a solu??o com script Bash, pois Perl e SNMPTT geralmente est?o ausentes em distribui??es modernas e requerem uma configura??o mais complexa. No entanto, essa solu??o usa um script configurado como traphandle
. Para melhor desempenho em sistemas de produ??o, use a solu??o Perl embutida (script com a op??o do perl
ou SNMPTT).
O workflow para receber uma trap ¨¦ o seguinte:
snmptrapd
recebe uma trapsnmptrapd
passa a trap para o script receptor (Bash, Perl) ou SNMPTTsnmptrap[regexp]
. A trap ¨¦ definida como o valor de todos os itens correspondentes. Se nenhum item correspondente for encontrado e houver um item snmptrap.fallback
, - a trap ¨¦ definida como o valor desse item#### Configurando traps SNMP
A configura??o dos seguintes campos no frontend ¨¦ espec¨ªfica para este tipo de item:
Em Configura??o ¡ú Hosts, no campo Host interface, configure uma interface SNMP com o IP ou endere?o DNS correto. O endere?o de cada trap recebida ¨¦ comparado aos endere?os IP e DNS de todas as interfaces SNMP para encontrar os hosts correspondentes.
No campo Key, utilize uma das chaves de trap SNMP:
Key | ||
---|---|---|
Descri??o | Valor de retorno | °ä´Ç³¾±ð²Ô³Ù¨¢°ù¾±´Ç²õ |
snmptrap[regexp] | ||
Captura todas as traps SNMP que correspondem ¨¤ regular expression especificada em regexp. Se regexp n?o for especificado, captura qualquer trap. | Trap SNMP | Este item s¨® pode ser configurado para interfaces SNMP. 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[] para essa interface. | SNMP trap | Este item s¨® pode ser configurado para interfaces SNMP. |
Atualmente, a correspond¨ºncia com express?es regulares de v¨¢rias linhas n?o ¨¦ suportada.
Defina o Tipo de informa??o como 'Log' para que os carimbos de data/hora sejam analisados. Observe que outros formatos, como como 'Num¨¦rico', tamb¨¦m s?o aceit¨¢veis, mas podem exigir um manipulador de traps personalizado.
Para o monitoramento de traps SNMP funcionar, ele deve ser configurado corretamente (veja abaixo).
Para ler as traps, o servidor ou proxy Áú»¢¶Ä²© deve ser configurado para iniciar o processo SNMP trapper e apontar para o arquivo de traps que est¨¢ sendo escrito pelo SNMPTT ou por um receptor de traps em Bash/Perl. Para isso, edite o arquivo de configura??o (zabbix_server.conf ou zabbix_proxy.conf):
Se o par?metro systemd do systemd for usado, esse arquivo provavelmente n?o funcionar¨¢ em /tmp.
Requisitos: apenas snmptrapd.
Um de receptor de traps em Bash pode ser usado para passar traps diretamente do snmptrapd para o servidor Áú»¢¶Ä²©. Para configur¨¢-lo, adicione a op??o traphandle
no arquivo de configura??o do (snmptrapd.conf
), veja .
Requisitos: Perl, Net-SNMP compilado com--enable-embedded-perl (feito por padr?o desde o Net-SNMP 5.4)
Um receptor de traps em Perl (procure por misc/snmptrap/zabbix_trap_receiver.pl) pode ser usado para passar traps diretamente do snmptrapd para o servidor Áú»¢¶Ä²©. Para configur¨¢-lo:
Se o nome do script n?o estiver entre aspas, o snmptrapd se recusar¨¢ a iniciar, mostrando mensagens semelhantes a estas:
Primeiro, o snmptrapd deve ser configurado para usar o SNMPTT.
Para melhor desempenho, o SNMPTT deve ser configurado como um daemon usando snmptthandler-embedded para passar as traps para ele. Veja as instru??es para .
Quando o SNMPTT estiver configurado para receber as traps, configure o arquivosnmptt.ini
:
O pacote "net-snmp-perl" foi removido no RHEL 8.0-8.2 e readicionado no RHEL 8.3. Para mais informa??es, veja os problemasconhecidos.
Agora, formate as traps para que o Áú»¢¶Ä²© as reconhe?a (edite o arquivo snmptt.conf):
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
N?o use traps desconhecidas ¨C o Áú»¢¶Ä²© n?o conseguir¨¢ reconhec¨º-las. Traps desconhecidas podem ser tratadas definindo um evento geral no snmptt.conf:
Todos os receptores de trap personalizados em Perl e as configura??es de trap SNMPTT devem formatar o trap da seguinte forma:
onde
Note que "ZBXTRAP" e "[address]" ser?o removidos da mensagem durante o processamento. Se o trap for formatado de outra forma, o Áú»¢¶Ä²© pode interpretar os traps de maneira 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
Isso resultar¨¢ no seguinte trap para 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. Operational state: 2
O Áú»¢¶Ä²© oferece suporte a arquivos grandes para arquivos de trap SNMP. O tamanho m¨¢ximo de arquivo que o Áú»¢¶Ä²© pode ler ¨¦ 2^63 (8 EiB). Note que o sistema de arquivos pode impor um limite menor no tamanho dos arquivos.
O Áú»¢¶Ä²© n?o fornece um sistema de rota??o de logs ¨C isso deve ser gerenciado pelo usu¨¢rio. A rota??o de logs deve primeiro renomear o arquivo antigo e somente depois exclu¨ª-lo, para que nenhuma trap seja perdida:
Devido ¨¤ implementa??o de arquivos de trap, o Áú»¢¶Ä²© precisa que o sistema de arquivos suporte inodes para diferenciar arquivos (a informa??o ¨¦ obtida por meio de uma chamada stat() call).
Este exemplo usa o snmptrapd e um script Bash para receber e passar traps para o servidor Áú»¢¶Ä²©.
Configura??o:
zabbix_server.conf
:/usr/sbin/zabbix_trap_handler.sh
:curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/6.0/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh
Se necess¨¢rio, ajuste a vari¨¢vel ZABBIX_TRAPS_FILE no script. Para utilizar o valor padr?o, crie o diret¨®rio pai primeiro:
snmtrapd.conf
(consulte o exemplo )Crie um item SNMP TEST:
IP da interface do host: 127.0.0.1
Chave: snmptrap["linkup"]
Formato do log:: yyyyMMdd.hhmmss
A seguir, configuraremos o snmptrapd
para a vers?o escolhida do protocolo SNMP e enviaremos traps de teste usando o utilit¨¢rio snmptrap
.
Os protocolos SNMPv1 e SNMPv2 usam "community string" para autentica??o. No exemplo abaixo, usaremos "secret" como community string. Esse valor deve ser configurado com o mesmo valor nos emissores de traps SNMP.
Note que, apesar de amplamente utilizado em ambientes de produ??o, o SNMPv2 n?o oferece criptografia nem autentica??o real do remetente. Os dados s?o enviados em texto simples, e essas vers?es do protocolo s¨® devem ser usadas em ambientes seguros, como redes privadas, e nunca em redes p¨²blicas ou de terceiros.
A vers?o SNMP 1 n?o ¨¦ muito utilizada hoje em dia, pois n?o suporta contadores de 64 bits e ¨¦ considerada um protocolo legado.
Para permitir o recebimento de traps SNMPv1 ou SNMPv2, adicione a seguinte linha em snmptrapd.conf
. Substitua "secret" pela community string configurada nos emissores de traps SNMP:
Agora podemos enviar um trap de teste usando o snmptrap
. Vamos usar o OID como um "link up" neste exemplo:
O SNMPv3 resolve as quest?es de seguran?a do SNMPv1/v2 e oferece autentica??o e criptografia. Voc¨º pode usar os m¨¦todos de autentica??o MD5 ou m¨²ltiplos SHA e os algoritmos de cifra DES/m¨²ltiplos AES.
Para habilitar a aceita??o de SNMPv3, adicone as seguintes linhas no snmptrapd.conf
:
Observe que a palavra-chave "execute" permite executar scripts para o modelo de seguran?a do usu¨¢rio.
snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0
Se voc¨º quiser usar m¨¦todos de criptografia fortes, como AES192 ou AES256, utilize o net-snmp a partir da vers?o 5.8. Voc¨º pode precisar recompil¨¢-lo com a op??o configure
: --enable-blumenthal-aes
. Vers?es mais antigas do net-snmp n?o suportam AES192/AES256. Veja tamb¨¦m: http://www.net-snmp.org/wiki/index.php/Strong_Authentication_or_Encryption
Em ambos os exemplos, voc¨º ver¨¢ linhas semelhantes no arquivo /var/lib/zabbix/snmptraps/snmptraps.log
:
20220805.102235 ZBXTRAP 127.0.0.1
UDP: [127.0.0.1]:35736->[127.0.0.1]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0
O valor do item no Áú»¢¶Ä²© ser¨¢:
2022-08-05 10:22:35 2022-08-05 10:22:33
20220805.102233 UDP: [127.0.0.1]:35736->[127.0.0.1]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0