Áú»¢¶Ä²©

Esta ¨¦ uma tradu??o da p¨¢gina de documenta??o original em ingl¨ºs. Ajude-nos a torn¨¢-la melhor.

3 Traps SNMP

Vis?o geral

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:

  1. snmptrapd recebe uma trap
  2. snmptrapd passa a trap para o script receptor (Bash, Perl) ou SNMPTT
  3. O receptor analisa, formata e escreve a trap em um arquivo
  4. O Áú»¢¶Ä²© SNMP trapper l¨º e analisa o arquivo de traps
  5. Para cada trap, o Áú»¢¶Ä²© encontra todos os itens "SNMP trapper" com interfaces de host correspondentes ao endere?o da trap recebida. Note que apenas o "IP" ou "DNS" selecionado na interface do host ¨¦ utilizado durante a correspond¨ºncia
  6. Para cada item encontrado, a trap ¨¦ comparada com a express?o regular no snmptrap[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
  7. Se a trap n?o for definida como valor de nenhum item, o Áú»¢¶Ä²©, por padr?o, registra a trap n?o correspondida. (Isso ¨¦ configurado por "Log unmatched SNMP traps" em Administra??o¡ú Geral ¡ú Outros.)

#### Configurando traps SNMP

A configura??o dos seguintes campos no frontend ¨¦ espec¨ªfica para este tipo de item:

  • Seu host deve ter uma interface SNMP

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.

  • Configure o item

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).

Configurando o monitoramento de traps SNMP

Configurando Áú»¢¶Ä²© server/proxy

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):

StartSNMPTrapper=1
       SNMPTrapperFile=[TRAP FILE]

Se o par?metro systemd do systemd for usado, esse arquivo provavelmente n?o funcionar¨¢ em /tmp.

Configurando o receptor de traps em Bash

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 .

Configurando o receptor de trap Perl

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:

  • Adicione o script Perl ao arquivo de configura??o do snmptrapd (snmptrapd.conf), por exemplo:
perl do "[FULL PATH TO PERL RECEIVER SCRIPT]";
  • configure o receptor, por exemplo:
$SNMPTrapperFile = '[TRAP FILE]';
       $DateTimeFormat = '[DATE TIME FORMAT]';

Se o nome do script n?o estiver entre aspas, o snmptrapd se recusar¨¢ a iniciar, mostrando mensagens semelhantes a estas:

Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line
       Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
Configurando SNMPTT

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:

  1. habilite o uso do m¨®dulo Perl do pacote NET-SNMP:
net_snmp_perl_enable = 1
  1. registre as traps no arquivo de traps que ser¨¢ lido pelo Áú»¢¶Ä²©:
log_enable = 1
       log_file = [TRAP FILE]
  1. defina o formato de data e hora:
date_time_format = %H:%M:%S %Y/%m/%d

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):

  1. Cada declara??o de FORMAT deve come?ar com "ZBXTRAP [address]", onde [address] ser¨¢ comparado aos endere?os IP e DNS das interfaces SNMP no Áú»¢¶Ä²©. Exemplo:
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
       FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
  1. Veja mais sobre o formato de trap SNMP abaixo.

N?o use traps desconhecidas ¨C o Áú»¢¶Ä²© n?o conseguir¨¢ reconhec¨º-las. Traps desconhecidas podem ser tratadas definindo um evento geral no snmptt.conf:

EVENT general .* "General event" Normal
Formato de trap SNMP

Todos os receptores de trap personalizados em Perl e as configura??es de trap SNMPTT devem formatar o trap da seguinte forma:

[timestamp] [the trap, part 1] ZBXTRAP [address] [the trap, part 2]

onde

  • [timestamp] - to timestamp usado para itens de log
  • ZBXTRAP - cabe?alho que indica o in¨ªcio de um novo trap nesta linha
  • [address] - endere?o IP usado para identificar o host para este trap

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

Requisitos do sistema

Suporte a arquivos grandes

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.

Rota??o de logs

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:

  1. O Áú»¢¶Ä²© abre o arquivo de traps na ¨²ltima localiza??o conhecida e vai para o passo 3.
  2. O Áú»¢¶Ä²© verifica se o arquivo atualmente aberto foi rotacionado comparando o n¨²mero do inode com o n¨²mero do inode do arquivo de traps definido. Se n?o houver arquivo aberto, o Áú»¢¶Ä²© redefine a ¨²ltima localiza??o e volta para o passo 1.
  3. O Áú»¢¶Ä²© l¨º os dados do arquivo atualmente aberto e define a nova localiza??o.
  4. Os novos dados s?o analisados. Se este for o arquivo rotacionado, o arquivo ¨¦ fechado e o processo retorna ao passo 2.
  5. Se n?o houver novos dados, o Áú»¢¶Ä²© dorme por 1 segundo e volta para o passo 2.
File system

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).

Exemplos de configura??o usando diferentes vers?es do protocolo SNMP

Este exemplo usa o snmptrapd e um script Bash para receber e passar traps para o servidor Áú»¢¶Ä²©.

Configura??o:

  1. Configure o Áú»¢¶Ä²© para iniciar o trapper SNMP e defina o arquivo de trap. Adicione o seguinte em zabbix_server.conf:
StartSNMPTrapper=1
       SNMPTrapperFile=/tmp/my_zabbix_traps.tmp
  1. Baixe o script Bash para /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:

mkdir -p /var/lib/zabbix/snmptraps
  1. Adicione o seguinte em snmtrapd.conf (consulte o exemplo )
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh
  1. Crie um item SNMP TEST:

    IP da interface do host: 127.0.0.1
    Chave: snmptrap["linkup"]
    Formato do log:: yyyyMMdd.hhmmss

  2. A seguir, configuraremos o snmptrapd para a vers?o escolhida do protocolo SNMP e enviaremos traps de teste usando o utilit¨¢rio snmptrap.

SNMPv1, SNMPv2

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:

authCommunity log,execute,net secret

Agora podemos enviar um trap de teste usando o snmptrap. Vamos usar o OID como um "link up" neste exemplo:

snmptrap -v 2c -c secret localhost 0 linkUp.0
SNMPv3

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:

createUser -e 0x8000000001020304 traptest SHA mypassword AES
       authuser log,execute traptest

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

Verifica??o

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

Consulte tamb¨¦m