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:
snmptrapd
rep un trapsnmptrapd
reenvia el trap a l'script receptor (Bash, Perl) o SNMPTTsnmptrap[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.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¨®.
La configuraci¨® dels camps seg¨¹ents a la interf¨ªcie web ¨¦s espec¨ªfica d'aquest tipus d'elements:
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.
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).
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):
Si s'empra el par¨¤metre systemd , ¨¦s poc probable que aquest fitxer funcioni a /tmp.
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¨®.
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:
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:
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
:
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):
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
No empreu traps desconeguts: Áú»¢¶Ä²© no els podr¨¤ pas recon¨¨ixer. Els traps desconeguts es poden gestionar definint un esdeveniment general a snmptt.conf:
Tots els receptors de traps Perl personalitzats i la configuraci¨® de traps SNMPTT han de formatar la trampa de la manera seg¨¹ent:
on
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
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.
Áú»¢¶Ä²© 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.
Áú»¢¶Ä²© 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¨®:
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()).
Aquest exemple empra snmptrapd i un script de receptor Bash per reenviar traps al servidor Áú»¢¶Ä²©.
±õ²Ô²õ³Ù²¹±ô¡¤±ô²¹³¦¾±¨®:
zabbix_server.conf
:/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:
snmtrapd.conf
(consulteu l')potser cal reiniciar l'snmptrapd per actualizar els canvis a la configuraci¨®.
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.
snmptrapd
per a la versi¨® del protocol SNMP triada i envieu traps de prova mitjan?ant la utilitat snmptrap
.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):
Ara s¨ª que podem enviar un trap de prova amb snmptrap
. En aquest exemple farem servir l'OID com¨² "enlla?ar":
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
:
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