Примање SNMP замки је супротно од упита уређаја који подржавају SNMP.
У овом случају, информације се шаљу са уређаја који подржава SNMP на snmptrapd и прикупљају се или "заробљавају" од стране Zabbix сервера или Zabbix проксија из датотеке.
Обично се замке шаљу након неке промене услова и агент се повезује са сервером на порту 162 (за разлику од порта 161 на страни агента који се користи за упите). Коришћење замки може открити неке кратке проблеме који се јављају усред интервала упита и које подаци упита могу пропустити.
Примање SNMP замки у Zabbix-у је дизајнирано да ради са snmptrapd и једним од механизама за прослеђивање замки Zabbix-у - или Bash или Perl скриптом или SNMPTT.
Најједноставнији начин за подешавање праћења замки након конфигурисања Zabbix-а јесте коришћење Bash скрипт решења, јер Perl и SNMPTT често недостају у модерним дистрибуцијама и захтевају сложенију конфигурацију. Међутим, ово решење користи скрипту конфигурисану као traphandle
. За боље перформансе на продукционим системима, користите уграђено Perl решење (или скрипту са опцијом do perl
или SNMPTT).
Ток рада примања замке:
snmptrapd
прима замкуsnmptrapd
прослеђује замку скрипти пријемника (Bash, Perl) или SNMPTTsnmptrap[regexp]
. Замка се поставља као вредност свих упарених ставки. Ако се не пронађе одговарајућа ставка и постоји ставка snmptrap.fallback
, замка се поставља као њена вредност.Током пребацивања чвора високе доступности (HA), Zabbix ће наставити обраду након последњег записа у оквиру последње ISO 8601 временске ознаке; ако исти запис није пронађен онда ће се само временска ознака користити за идентификацију последње позиције.
Овај тип ставке захтева следећу конфигурацију фронтенда.
2. Конфигуришите ставку
Key | ||
---|---|---|
Description | Return value | Comments |
snmptrap[regexp] | ||
Хвата све SNMP замке које се подударају са регуларним изразом наведеним у regexp. Ако регуларни израз није наведен, хвата било коју замку. | SNMP замка | Ова ставка се може подесити само за SNMP интерфејсе. Кориснички макрои и глобални регуларни изрази су подржани у параметру овог кључа ставке. |
snmptrap.fallback | ||
Хвата све SNMP замке које није ухватила ниједна од snmptrap[] ставки за тај интерфејс. | SNMP замка | Ова ставка се може подесити само за SNMP интерфејсе. |
Вишелинијско подударање регуларних израза тренутно није подржано.
To read the traps, Zabbix server or proxy must be configured to start the SNMP trapper process and point to the trap file that is being written by SNMPTT or a Bash/Perl trap receiver. To do that, edit the configuration file (zabbix_server.conf or zabbix_proxy.conf):
If systemd parameter PrivateTmp is used, this file is unlikely to work in /tmp.
Requirements: only snmptrapd.
A Bash trap receiver script can be used to pass traps to Zabbix server from snmptrapd using trapper file. To configure it, add the traphandle
option to snmptrapd configuration file (snmptrapd.conf
), see example.
snmptrapd might need to be restarted to pick up changes to its configuration.
Захтеви: Perl, Net-SNMP компајлирани са --enable-embedded-perl (подразумевано готово од Net-SNMP 5.4)
Perl trap пријемник (потражите misc/snmptrap/zabbix_trap_receiver.pl) може се користити за прослеђивање замки на Zabbix серверу директно из snmptrapd-а. Да га конфигуришите:
snmptrapd ће можда морати поново да се покрене да би се покупиле промене у својој конфигурацији.
Ако име скрипте није наведено, snmptrapd ће то одбити почните са порукама, сличним овим:
At first, snmptrapd should be configured to use SNMPTT.
For the best performance, SNMPTT should be configured as a daemon using snmptthandler-embedded to pass the traps to it. See instructions for configuring SNMPTT.
When SNMPTT is configured to receive the traps, configure snmptt.ini
:
The "net-snmp-perl" package has been removed in RHEL 8.0-8.2; re-added in RHEL 8.3. For more information, see the known issues.
Now format the traps for Zabbix to recognize them (edit snmptt.conf):
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
Do not use unknown traps - Zabbix will not be able to recognize them. Unknown traps can be handled by defining a general event in snmptt.conf:
Сви прилагођени Perl пријемници замки и конфигурација SNMPTT замки морају форматирати замку на следећи начин:
где
Имајте на уму да ће "ZBXTRAP" и "[address]" бити исечени из поруке током обраде. Ако је замка форматирана другачије, Zabbix би могао неочекивано анализирати замке.
Пример клопке:
2024-01-11T15:28:47+0200 .1.3.6.1.6.3.1.1.5.3 Нормални "Статусни догађаји" localhost - ZBXTRAP 192.168.1.1 Линк прекинут на интерфејсу 2. Административно стање: 1. Оперативно стање: 2
Ово ће резултирати следећом клопком за SNMP интерфејс са IP=192.168.1.1:
2024-01-11T15:28:47+0200 .1.3.6.1.6.3.1.1.5.3 Нормални "Статусни догађаји"
localhost - Линк прекинут на интерфејсу 2. Административно стање: 1. Оперативно стање: 2
Препоручује се да инсталирате MIB датотеке како бисте осигурали да се вредности ставки приказују у исправном формату. Без MIB датотека, може доћи до проблема са форматирањем, као што је приказивање вредности у HEX уместо UTF-8 формату или обрнуто.
Zabbix има подршку за велике датотеке за SNMP trapper датотеке. Максимална датотека величине коју Zabbix може да прочита је 2^63 (8 EiB). Имајте на уму да системска датотека може наметнути доњу границу величине датотеке.
Zabbix не пружа никакав систем ротације логова - то би требало да се реши од стране корисника. Ротација логова прво треба да преименује стару датотеку и тек касније да га избрише да се не би изгубиле замке:
Због имплементације trap датотеке, Zabbix-у је потребан систем датотеке да подржава inode-е за разликовање датотека (информације се добијају помоћу stat() позива).
This example uses snmptrapd and a Bash receiver script to pass traps to Zabbix server.
Setup:
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
Note: Before 7.0 release use this link for script download.
If necessary, adjust the ZABBIX_TRAPS_FILE variable in the script. To use the default value, create the parent directory first:
snmtrapd.conf
(refer to working example)snmptrapd might need to be restarted to pick up changes to its configuration.
Create an SNMP item for testing purposes:
Host SNMP interface IP: 127.0.0.1
Key: snmptrap["linkUp"]
Log time format: yyyy-MM-ddThh:mm:ss
Note that the ISO 8601 date and time format is used.
snmptrapd
for our chosen SNMP protocol version and send test traps using the snmptrap
utility.SNMPv1 and SNMPv2 protocols rely on "community string" authentication. In the example below we will use "secret" as community string. It must be set to the same value on SNMP trap senders.
Please note that while still widely used in production environments, SNMPv2 doesn't offer any encryption and real sender authentication. The data is sent as plain text and therefore these protocol versions should only be used in secure environments such as private network and should never be used over any public or third-party network.
SNMP version 1 isn't really used these days since it doesn't support 64-bit counters and is considered a legacy protocol.
To enable accepting SNMPv1 or SNMPv2 traps you should add the following line to snmptrapd.conf
. Replace "secret" with the SNMP community string configured on SNMP trap senders:
Next we can send a test trap using snmptrap
. We will use the common "link up" OID in this example:
SNMPv3 addresses SNMPv1/v2 security issues and provides authentication and encryption. You can use the MD5 or multiple SHA authentication methods and DES/multiple AES as cipher.
To enable accepting SNMPv3 add the following lines to snmptrapd.conf
:
Please note the "execute" keyword that allows to execute scripts for this user security model.
snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0
If you wish to use strong encryption methods such as AES192 or AES256, please use net-snmp starting with version 5.8. You might have to recompile it with configure
option: --enable-blumenthal-aes
. Older versions of net-snmp do not support AES192/AES256. See also: http://www.net-snmp.org/wiki/index.php/Strong_Authentication_or_Encryption
In both examples you will see similar lines in your /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
The item value in Zabbix will be:
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
Example with 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