Примање 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 временске ознаке; ако исти запис није пронађен онда ће се само временска ознака користити за идентификацију последње позиције.
Овај тип ставке захтева следећу конфигурацију корисничког интерфејса.
1. Направите SNMP интерфејс за вашег домаћина
2. Конфигуришите ставку
Key | ||
---|---|---|
Description | Return value | Comments |
snmptrap[regexp] | ||
Хвата све SNMP замке које се подударају са регуларним изразом наведеним у regexp. Ако regexp није специфициран, хвата сваку замку. | SNMP trap | Ова ставка се може подесити само за SNMP интерфејсе. Кориснички макрои и глобални регуларни изрази су подржани у параметру кључа ове ставке. |
snmptrap.fallback | ||
Хвата све SNMP замке које није ухватила ниједна snmptrap[] ставка за тај интерфејс. | SNMP trap | Ова ставка се може подесити само за SNMP интерфејсе. |
Вишелинијско подударање регуларног израза није подржано у овом случају.
Да бисте прочитали замке, Zabbix сервер или прокси морају бити конфигурисани за покретање SNMP trapper процеса и усмере на trap датотеку која се налази написана од SNMPTT или Bash/Perl trap пријемника. Да бисте то урадили, уредите конфигурациону датотеку (zabbix_server.conf или zabbix_proxy.conf):
Ако се користи systemd параметар, PrivateTmp мало је вероватно да ће ова датотека радити у /tmp.
Захтеви: само snmptrapd.
Bash 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 треба да буде конфигурисан као демон који користи snmptthandler-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 "Status Events" Normal
FORMAT ZBXTRAP $aA Device reinitialized (coldStart)
Не користите непознате замке - Zabbix неће моћи да их препозна. Непознате замке се могу руковати дефинисањем општег догађаја у snmptt.conf:
Сви прилагођени Perl trap пријемници и конфигурација SNMPTT trap морају формирати замку на следећи начин:
где је
Имајте на уму да ће "ZBXTRAP" и "[address]" бити избачени из поруке током обраде. Ако је замка другачије форматирана, Zabbix би могао рашчланити замке неочекивано.
Пример замке:
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
Ово ће резултирати следећом замком за SNMP интерфејс са IP=192.168.1.1:
2024-01-11T15:28:47+0200 .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
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/7.0/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh
Ако је потребно, прилагодите променљиву ZABBIX_TRAPS_FILE у скрипти. Да бисте користили подразумевану вредност, прво креирајте родитељски директоријум:
snmtrapd.conf
(погледајте радни пример)snmptrapd ће можда морати да се поново покрене да би се покупиле промене у својој конфигурацији.
Type: SNMP trap
Type of information: Log Host interface: SNMP 127.0.0.1
Key: snmptrap["linkUp"]
Log time format: yyyyMMdd.hhmmss
Имајте на уму да се користи ISO 8601 формат датума и времена.
snmptrapd
за нашу изабрану верзију SNMP протокола и шаљите тестне замке користећи услужни програм snmptrap
.SNMPv1 и SNMPv2 протоколи се ослањају на аутентификацију "стринг заједнице". У примеру испод користићемо "тајну" као стринг заједнице. Мора бити подешен на исту вредност на SNMP трап пошиљаоцима.
Имајте на уму да иако се још увек широко користи у производним окружењима, SNMPv2 не нуди никакво шифровање и стварну аутентификацију пошиљаоца. Подаци се шаљу као обичан текст и стога ове верзије протокола треба да се користе само у безбедним окружењима као што је приватна мрежа и никада не би требало да се користе преко било које јавне мреже или мреже треће стране.
SNMP верзија 1 се заправо не користи ових дана јер се Не подржава 64-битне бројаче и сматра се застарелим протоколом.
Да бисте омогућили прихватање SNMPv1 или SNMPv2 замки, требало би да додате следећи ред у snmptrapd.conf
. Замените "secret" стрингом SNMP заједнице конфигурисаним на пошиљаоцима SNMP трап-а:
Следеће можемо да пошаљемо тест замку користећи snmptrap
. Користићемо уобичајени OID "link up" у овом примеру:
SNMPv3 решава безбедносне проблеме SNMPv1/v2 и обезбеђује аутентификацију и шифровање .Можете користити MD5 или вишеструке SHA методе аутентификације и DES/више AES као шифру.
Да бисте омогућили прихватање SNMPv3 додајте следеће редове у snmptrapd.conf
:
Молимо запазите ову кључну реч која дозвољава кориснику да изврши безбедносни скрипт модел.
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
option: --enable-blumenthal-aes
. Старије верзије нет-снмп не подржавају AES192/AES256. Такође погледајте: Strong Authentication or Encryption.
У оба примера видећете сличне редове у /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:
receivedfromUDP: [127.0.0.1]:58649->[127.0.0.1]:162
notificationtypeTRAP
version1
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