Примање 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 интерфејсе. |
Вишелинијско подударање регуларних израза тренутно није подржано.
Да би читао замке, Zabbix сервер или прокси мора бити конфигурисан да покрене SNMP процес трапера и покаже на датотеку трапа коју пише SNMPTT или Bash/Perl пријемник трапа. Да бисте то урадили, уредите конфигурациону датотеку (zabbix_server.conf или zabbix_proxy.conf):
Ако се користи системски параметар PrivateTmp, мало је вероватно да ће ова датотека радити у /tmp.
Захтеви: само snmptrapd.
Bash trap пријемник скрипта може се користити за прослеђивање trap-ова Zabbix серверу са snmptrapd-а користећи trapper датотеку. Да бисте га конфигурисали, додајте опцију traphandle
у snmptrapd конфигурациону датотеку (snmptrapd.conf
), погледајте пример.
snmptrapd ће можда требати поново покренути да би се примениле промене у његовој конфигурацији.
Захтеви: Perl, Net-SNMP компајлирани са --enable-embedded-perl (подразумевано готово од Net-SNMP 5.4)
Perl trap пријемник (потражите misc/snmptrap/zabbix_trap_receiver.pl) може се користити за прослеђивање замки на Zabbix серверу директно из snmptrapd-а. Да га конфигуришите:
snmptrapd ће можда морати поново да се покрене да би се покупиле промене у својој конфигурацији.
Ако име скрипте није наведено, snmptrapd ће то одбити почните са порукама, сличним овим:
Прво, snmptrapd треба конфигурисати да користи SNMPTT.
За најбоље перформансе, SNMPTT треба конфигурисати као демона користећи snmpthandler-embedded за прослеђивање замки. Погледајте упутства за конфигурисање SNMPTT-а.
Када је SNMPTT конфигурисан за пријем клопки, конфигуришите snmptt.ini
:
Пакет „net-snmp-perl“ је уклоњен у RHEL 8.0-8.2; поново додат у RHEL 8.3. За више информација, погледајте познате проблеме.
Сада форматирајте замке да би их Zabbix препознао (уредите snmptt.conf):
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Статусни догађаји" Normal
FORMAT ZBXTRAP $aA Уређај поново иницијализован (coldStart)
Не користите непознате замке - Zabbix их неће моћи препознати. Непознате замке могу се решити дефинисањем општег догађаја у 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() позива).
Овај пример користи snmptrapd и Bash скрипту за пријем да би проследио клопке Zabbix серверу.
Подешавање:
zabbix_server.conf
:/usr/sbin/zabbix_trap_handler.sh
:curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/trunk/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh
Ако је потребно, подесите променљиву ZABBIX_TRAPS_FILE у скрипти. Да бисте користили подразумевану вредност, прво креирајте родитељски директоријум:
snmtrapd.conf
(погледајте радни пример)snmptrapd ће можда требати поново покренути да би се примениле промене у његовој конфигурацији.
Тип: SNMP trap
Тип информација: Дневник Интерфејс хоста: SNMP 127.0.0.1
Кључ: snmptrap["linkUp"]
Формат времена дневника: ggggMMdd.hhmmss
Имајте на уму да се користи формат датума и времена ISO 8601.
snmptrapd
за нашу изабрану верзију SNMP протокола и послати тест трапове користећи услужни програм snmptrap
.SNMPv1 и SNMPv2 протоколи се ослањају на аутентификацију „заједничког низа“. У примеру испод користићемо „secret“ као стринг заједнице. Мора бити подешен на исту вредност на SNMP пошиљаоцима замки.
Имајте на уму да, иако се још увек широко користи у производним окружењима, SNMPv2 не нуди никакво шифровање и аутентификацију правог пошиљаоца. Подаци се шаљу као обичан текст и стога ове верзије протокола треба користити само у безбедним окружењима као што је приватна мрежа и никада се не смеју користити преко било које јавне или мреже треће стране.
SNMP верзија 1 се данас не користи јер не подржава 64-битне бројаче и сматра се застарелим протоколом.
Да бисте омогућили прихватање SNMPv1 или SNMPv2 замки, требало би да додате следећи ред у snmptrapd.conf
. Замените „secret“ са SNMP стрингом заједнице конфигурисаним на SNMP пошиљаоцима замки:
Затим можемо послати тест замку користећи snmptrap
. У овом примеру ћемо користити уобичајени OID за „линк-уп“:
SNMPv3 решава безбедносне проблеме SNMPv1/v2 и пружа аутентификацију и шифровање. Можете користити MD5 или вишеструке SHA методе аутентификације и DES/вишеструки AES као шифру.
Да бисте омогућили прихватање SNMPv3, додајте следеће линије у snmptrapd.conf
:
Имајте на уму кључну реч „execute“ која омогућава извршавање скрипти за овај модел безбедности корисника.
snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0
Ако желите да користите јаке методе шифровања као што су AES192 или AES256, користите net-snmp почевши од верзије 5.8. Можда ћете морати да га поново компајлирате са опцијом configure
: --enable-blumenthal-aes
.
Старије верзије net-snmp не подржавају AES192/AES256. Погледајте такође: Јака аутентификација или шифровање.
У оба примера видећете сличне редове у вашем /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
Вредност ставке у Zabbix-у ће бити:
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
Пример са 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.0type=6value=OID: IF-MIB::linkUp.0