Áú»¢¶Ä²©

3 SNMP trap

Vista general

Rebre traps SNMP ¨¦s el contrari de sondejar dispositius habilitats per SNMP.

En aquest cas, la informaci¨® s'envia des d'un dispositiu compatible amb SNMP i Áú»¢¶Ä²© recull les "traps".

Normalment, les traps s'envien en un canvi de condici¨® i l'agent es connecta al servidor per el port 162 (a difer¨¨ncia del port 161, que l'agent empra per fer consultes). L'¨²s de traps pot detectar alguns petits problemes que es produeixen durant l'interval de consulta i que la consulta de dades pot ometre.

La recepci¨® de traps SNMP a Áú»¢¶Ä²© ¨¦s dissenyada per funcionar amb snmptrapd i un dels mecanismes per passar traps a Áú»¢¶Ä²©, ja sigui un script Bash o Perl o SNMPTT.

La manera m¨¦s senzilla de configurar la supervisi¨® de traps despr¨¦s de configurar Áú»¢¶Ä²© ¨¦s emprar la soluci¨® de scripting de Bash, ja que Perl i SNMPTT no solen vindre pas amb les distribucions modernes i requereixen una configuraci¨® m¨¦s complexa. Tanmateix, aquesta soluci¨® empra un script configurat com a "traphandle". Per obtindre el millor rendiment als sistemes de producci¨®, empreu la soluci¨® Perl incrustada (un script amb l'opci¨® do perl o SNMPTT).

Flux de treball per rebre un trap:

  1. snmptrapd rep un trap
  2. snmptrapd reenvia el trap a l'script receptor (Bash, Perl) o SNMPTT
  3. El receptor analitza, formata i escriu el trap a un fitxer
  4. Áú»¢¶Ä²© SNMP Trapper llegeix i analitza el fitxer trap
  5. Per a cada trap, Áú»¢¶Ä²© troba tots els elements "SNMP trap" amb les interf¨ªcies d'equip corresponents a l'adre?a del trap rebut. Tingueu en compte que nom¨¦s s'empren per fer coincidir les interf¨ªcies per a les quals s'ha seleccionat "IP" o "DNS".
  6. Per a cada element trobat, el trap es compara amb una expressi¨® regular a snmptrap[expressi¨® regular]. El trap s'estableix amb el valor de tots els elements coincidents. Si no es troba cap element coincident i hi ha un element snmptrap.fallback, el trap s'estableix amb el seu valor.
  7. Si el trap no s'ha establert amb el valor de cap element, Áú»¢¶Ä²© registra per defecte el trap no coincident. (Aix¨° es configura a "Registrar traps SNMP no coincidents" a Administraci¨® > General > Altres.)
Notes sobre la migraci¨® per error d'HA

Durant el canvi de node d'alta disponibilitat (HA), Áú»¢¶Ä²© continuar¨¤ processant-se despr¨¦s del darrer registre dins de la darrera marca de temps ISO 8601; si no es troba el mateix registre, nom¨¦s s'emprar¨¤ la marca de temps per identificar la darrera posici¨®.

°ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® de traps SNMP

La configuraci¨® dels camps seg¨¹ents a la interf¨ªcie web ¨¦s espec¨ªfica d'aquest tipus d'elements:

  • El vostre equip ha de tindre una interf¨ªcie SNMP

A Recull de dades > Equips, al camp Interf¨ªcie d'equip, definiu una interf¨ªcie SNMP amb l'adre?a IP correcta o el DNS correcte. L'adre?a de cada trap rebuda es compara amb les adreces IP i DNS de totes les interf¨ªcies SNMP per trobar els equips corresponents.

  • Configurar l'element

Al camp Clau, empreu una de les claus de captura SNMP:

Clau
¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨® Valor de retorn Comentaris
snmptrap[regexp]
Atrapa tots els traps SNMP que coincideixin amb l'expressi¨® regular especificada a regexp. Si no s'especifica l'expressi¨® regular, captura qualsevol trap. Trap SNMP Aquest element nom¨¦s es pot configurar per a interf¨ªcies SNMP.
Les macros d'usuari i les expressions regulars globals s¨®n compatibles amb el par¨¤metre d'aquesta clau d'element.
snmptrap.fallback
Captura tots els traps SNMP que no han estat capturats per cap dels elements snmptrap[] d'aquesta interf¨ªcie. Trap SNMP Aquest element nom¨¦s es pot configurar per a interf¨ªcies SNMP.

La concordan?a d'expressions regulars de diverses l¨ªnies no s'admet en aquest moment.

Estableix el Tipus d'informaci¨® a 'Registre' perqu¨¨ les marques de temps s'analitzin. Tingueu en compte que altres formats com ara 'Num¨¨ric' tamb¨¦ s¨®n acceptables, per¨° poden requerir un gestor d'interrupcions personalitzat.

Perqu¨¨ el monitoratge de traps SNMP funcioni, primer s'ha de configurar correctament (veieu m¨¦s avall).

1 °ä´Ç²Ô´Ú¾±²µ³Ü°ù²¹³¦¾±¨® del monitoratge de traps SNMP

Configurant el servidor/proxy Áú»¢¶Ä²©

Per llegir els traps, s'ha de configurar el servidor o el proxy Áú»¢¶Ä²© per iniciar el proc¨¦s de traps SNMP i apuntar al fitxer de traps que ¨¦s escrivint SNMPTT o un receptor de traps Bash/Perl. Per fer-ho, editeu el fitxer de configuraci¨® (zabbix_server.conf o zabbix_proxy.conf):

StartSNMPTrapper=1
       SNMPTrapperFile=[TRAP FILE]

Si s'empra el par¨¤metre systemd , ¨¦s poc probable que aquest fitxer funcioni a /tmp.

Configurant el receptor de traps Bash

Requisits: nom¨¦s snmptrapd.

Es pot emprar un receptor de traps d' per passar traps al servidor Áú»¢¶Ä²© directament des d'snmptrapd. Per configurar-lo, afegiu l'opci¨® traphandle al fitxer de configuraci¨® snmptrapd (snmptrapd.conf), veieu l'.

segurament calgui reiniciar l'snmptrapd per aplicar els canvis a la seva configuraci¨®.

Configurant el receptor de traps amb Perl

Requisits: Perl, Net-SNMP compilat amb --enable-embedded-perl (fet per defecte des de Net-SNMP 5.4)

Es pot emprar un receptor de traps Perl (cerqueu misc/snmptrap/zabbix_trap_receiver.pl) per passar traps al servidor Áú»¢¶Ä²© directament des d'snmptrapd. Per configurar-lo:

  • afegiu l'script Perl al fitxer de configuraci¨® snmptrapd (snmptrapd.conf), per exemple:
perl do "[FULL PATH TO PERL RECEIVER SCRIPT]";
  • configureu el receptor, per exemple:
$SNMPTrapperFile = '[TRAP FILE]';
       $DateTimeFormat = '[DATE TIME FORMAT]';

segurament calgui reiniciar l'snmptrapd per aplicar els canvis a la seva configuraci¨®.

Si no s'anomena l'script, snmptrapd es negar¨¤ a comen?ar amb missatges, semblants a aquests:

Els modificadors d'expressi¨® regular "/l" i "/a" s'exclouen m¨²tuament a (eval 2) la l¨ªnia 1, al final de la l¨ªnia
       El modificador d'expressi¨® regular "/l" pot no apar¨¨ixer dues vegades a (eval 2) la l¨ªnia 1, al final de la l¨ªnia
Configurant SNMPTT

Al principi, snmptrapd s'hauria de configurar per emprar SNMPTT.

Per obtindre un millor rendiment, SNMPTT s'ha de configurar com a dimoni que empra snmptthandler-embedded per passar-hi els traps. Veieu les instruccions per .

Quan SNMPTT sigui configurat per rebre els traps, configureu snmptt.ini:

  1. habiliteu l'¨²s del m¨°dul Perl del paquet NET-SNMP:
net_snmp_perl_enable = 1
  1. registreu els traps al fitxer trap que llegir¨¤ Áú»¢¶Ä²©:
log_enable = 1
       log_file = [TRAP FILE]
  1. establiu el format de data i hora:
date_time_format = %Y-%m-%dT%H:%M:%S%z

El paquet "net-snmp-perl" s'ha esborrat a RHEL 8.0-8.2; i afegit de nou a RHEL 8.3. Per obtindre m¨¦s informaci¨®, veieu els problemes coneguts.

Ara formateu els traps perqu¨¨ Áú»¢¶Ä²© els reconegui (editeu snmptt.conf):

  1. Cada instrucci¨® FORMAT hauria de comen?ar amb "ZBXTRAP [adre?a]", on [adre?a] es comparar¨¤ amb les adreces IP i DNS de SNMP interf¨ªcies a Áú»¢¶Ä²©. Per exemple:
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
       FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
  1. Veieu tot seguit m¨¦s informaci¨® sobre el format de traps SNMP.

No empreu traps desconeguts: Áú»¢¶Ä²© no els podr¨¤ pas recon¨¨ixer. Els traps desconeguts es poden gestionar definint un esdeveniment general a snmptt.conf:

EVENT general .* "General event" Normal
Format de traps SNMP

Tots els receptors de traps Perl personalitzats i la configuraci¨® de traps SNMPTT han de formatar la trampa de la manera seg¨¹ent:

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

on

  • [timestamp] - la marca de temps en format in "%Y-%m-%dT%H:%M:%S%z"
  • ZBXTRAP - cap?alera que indica que comen?a un nou trap en aquesta l¨ªnia
  • [address] - adre?a IP emprada per trobar l'equip d'aquest trap

Tingueu en compte que "ZBXTRAP" i "[address]" es retallaran del missatge durant el processament. Si el trap t¨¦ un altre format, Áú»¢¶Ä²© podria analitzar els traps de manera inesperada.

Exemple de trap:

2024-01-11T15:28:47+0200 .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

Aix¨° donar¨¤ lloc al seg¨¹ent trap per a la interf¨ªcie SNMP amb IP=192.168.1.1:

2024-01-11T15:28:47+0200 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events"
       equip local - Enlla? a la interf¨ªcie 2. Estat de l'administraci¨®: 1. Estat operatiu: 2

Requisits del sistema

Es recomana instal¡¤lar fitxers MIB per garantir que els valors dels elements es mostren en el format correcte. Sense els fitxers MIB, es poden donar problemes de format, com ara veure valors en HEX en lloc d'UTF-8 o viceversa.

Suport d'arxius grossos

Áú»¢¶Ä²© admet fitxers grossos per a fitxers trapper SNMP. El l¨ªmit de mida m¨¤xim que pot llegir Áú»¢¶Ä²© ¨¦s 2^63 (8 EiB). Tingueu en compte que el sistema de fitxers pot imposar un l¨ªmit inferior a la mida del fitxer.

Rotaci¨® dels registres

Áú»¢¶Ä²© no proporciona cap sistema de rotaci¨® de registres: ha d'¨¦sser gestionat per l'usuari. En rotar el registre, primer hauria de canviar el nom del fitxer antic i nom¨¦s esborrar-lo m¨¦s tard perqu¨¨ no es perdi cap informaci¨®:

  1. Obriu el fitxer Áú»¢¶Ä²© a la darrera ubicaci¨® coneguda i aneu a la passa 3
  2. Áú»¢¶Ä²© comprova si el fitxer obert actualment s'ha rotat comparant el nombre d'inode amb el nombre d'inode del fitxer trap definit. Si no hi ha cap fitxer obert, Áú»¢¶Ä²© restableix la darrera ubicaci¨® i passa a la passa 1.
  3. Áú»¢¶Ä²© llegeix les dades del fitxer actualment obert i estableix la nova ubicaci¨®.
  4. S'analitzen les noves dades. Si aquest era el fitxer rotat, el fitxer es tanca i torna a la passa 2.
  5. Si no hi ha dades noves, Áú»¢¶Ä²© s'atura durant 1 segon i torna a la passa 2.
Sistema d'arxius

A causa de la implementaci¨® del fitxer trap, Áú»¢¶Ä²© necessita que el sistema de fitxers admeti inodes per diferenciar diferents fitxers (la informaci¨® s'adquireix mitjan?ant una crida a stat()).

Exemples de configuraci¨® emprant diferents versions del protocol SNMP

Aquest exemple empra snmptrapd i un script de receptor Bash per reenviar traps al servidor Áú»¢¶Ä²©.

±õ²Ô²õ³Ù²¹±ô¡¤±ô²¹³¦¾±¨®:

  1. Configureu Áú»¢¶Ä²© per iniciar el trapper SNMP i definir el fitxer trap. Afegiu a zabbix_server.conf:
StartSNMPTrapper=1
       SNMPTrapperFile=/var/lib/zabbix/snmptraps/snmptraps.log
  1. Descarregueu l'script bash a /usr/sbin/zabbix_trap_handler.sh:
curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/7.0/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh

Nota: Abans en versions pr¨¨vies a la 7.0, empreu aquest enlla? per l'script.

Si cal, ajusteu la variable ZABBIX_TRAPS_FILE a l'script. Per emprar el valor predeterminat, primer creeu el directori principal:

    mkdir -p /var/lib/zabbix/snmptraps
  1. Afegiu el seg¨¹ent a snmtrapd.conf (consulteu l')
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh

potser cal reiniciar l'snmptrapd per actualizar els canvis a la configuraci¨®.

  1. Creeu un element de TEST SNMP (recordeu els requisits de configuraci¨® inicials):

    Type: SNMP trap
    Type of information: Log Host SNMP interface IP: 127.0.0.1 Key: snmptrap["linkup"] Log time format: yyyy-MM-ddThh:mm:ss

Fixeu-vos que s'empra el format de data i hora de la ISO 8601.

  1. Tot seguit, configureu snmptrapd per a la versi¨® del protocol SNMP triada i envieu traps de prova mitjan?ant la utilitat snmptrap.
SNMPv1, SNMPv2

Els protocols SNMPv1 i SNMPv2 es basen en l'autenticaci¨® de "cadenes de comunitat". A l'exemple seg¨¹ent, emprarem "secret" com a cadena de comunitat. S'hauria d'establir amb el mateix valor als remitents de traps SNMP.

Tingueu en compte que, tot i que encara s'empra sovint a entorns de producci¨®, SNMPv2 no ofereix cap xifrat ni autenticaci¨® de remitent real. Les dades s'envien com a text sense format i, per tant, aquestes versions de protocol nom¨¦s s'han d'emprar en entorns segurs com ara una xarxa privada i mai s'han d'emprar en una xarxa p¨²blica o de tercers.

La versi¨® 1 d'SNMP no s'empra avui en dia perqu¨¨ no admet comptadors de 64 bits i es considera un protocol heretat.

Per habilitar l'acceptaci¨® de traps SNMPv1 o SNMPv2, heu d'afegir la l¨ªnia seg¨¹ent a snmptrapd.conf (substitu?u "secret" per la cadena de comunitat SNMP configurada als remitents de traps SNMP):

authCommunity log,execute,net secret

Ara s¨ª que podem enviar un trap de prova amb snmptrap. En aquest exemple farem servir l'OID com¨² "enlla?ar":

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

SNMPv3 resol els problemes de seguretat SNMPv1/v2 i proporciona autenticaci¨® i xifrat. Podeu emprar SHA o MD5 com a m¨¨tode d'autenticaci¨® i AES o DES com a xifrat.

Per habilitar l'acceptaci¨® SNMPv3, afegiu la l¨ªnia seg¨¹ent a snmptrapd.conf:

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

Tingueu en compte la paraula clau "execute" que permet executar scripts per a aquest model de seguretat d'usuari.

snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0

Si voleu emprar m¨¨todes de xifrat forts com AES192 o AES256, empreu net-snmp de la versi¨® 5.8. ?s possible que hagueu de recompilar-lo amb l'opci¨® configure: --enable-blumenthal-aes. Les versions anteriors de net-snmp no admeten AES192/AES256. Veieu tamb¨¦: .

³Õ±ð°ù¾±´Ú¾±³¦²¹³¦¾±¨®

En ambd¨®s exemples veureu l¨ªnies similars al vostre /var/lib/zabbix/snmptraps/snmptraps.log:

2024-01-30T10:04:23+0200 ZBXTRAP 127.0.0.1
       UDP: [127.0.0.1]:56585->[127.0.0.1]:162
       DISMAN-EVENT-MIB::sysUpTimeInstance = 2538834
       SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0

El valor de l'element a Áú»¢¶Ä²© ser¨¤:

2024-01-30 10:04:23 2024-01-30 10:04:21 
       
       2024-01-30T10:04:21+0200 UDP: [127.0.0.1]:56585->[127.0.0.1]:162
       DISMAN-EVENT-MIB::sysUpTimeInstance = 2538834
       SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0

Exemple amb Perl:

2024-01-30T11:42:54+0200 ZBXTRAP 127.0.0.1
       PDU INFO:
         receivedfrom                   UDP: [127.0.0.1]:58649->[127.0.0.1]:162
         notificationtype               TRAP
         version                        1
         community                      public
         errorstatus                    0
         transactionid                  1
         requestid                      2101882550
         messageid                      0
         errorindex                     0
       VARBINDS:
         DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (457671) 1:16:16.71
         SNMPv2-MIB::snmpTrapOID.0      type=6  value=OID: IF-MIB::linkUp.0

Veieu tamb¨¦