2 SNMP агент

Преглед

Можда ћете желети да користите SNMP надгледање на уређајима као што су штампачи, мрежни прекидачи, рутери или UPS који обично имају SNMP омогућен и на којима би било непрактично покушавати да поставите комплетне оперативне системе и Zabbix агенте.

Да бисте могли да преузмете податке које пружају SNMP агенти на овим уређајима, Zabbix сервер мора бити почетно конфигурисан са подршком SNMP-а тако што ћете навести ознаку --with-net-snmp. Препоручује се да инсталирате MIB датотеке да бисте осигурали да се вредности ставки приказују у исправном формату. Без MIB датотека може доћи до проблема са форматирањем, као што је приказивање вредности у HEX уместо UTF-8 или обрнуто.

SNMP провере се изводе само преко UDP протокола.

Zabbix сервер и прокси демонске линије дневника сличне су следећим ако добију нетачан SNMP одговор:

   SNMP одговор од домаћина "gateway" не садржи сва тражена повезивања променљивих

Док не покривају све проблематичним случајевима, они су корисни за идентификацију појединачних SNMP уређаја за које би комбиновани захтеви требало да буду онемогућени.

Zabbix сервер/прокси ће увек поново покушати бар једном након неуспешног покушаја упита: или преко механизма поновног покушаја SNMP библиотеке или преко интерног комбинована обрада механизма.

Ако надгледате SNMPv3 уређаје, уверите се да је msgAuthoritativeEngineID (познат и као snmpEngineID или "Engine ID") никада не деле два уређаја. Према RFC2571 (одељак 3.1.1.1) мора да буде јединствен за сваки уређај.

RFC3414 захтева да SNMPv3 уређаји истрају на њиховом engineBoots. Неки уређаји то не раде, што доводи до тога да се њихове SNMP поруке одбацују као застареле након поновног покретања. У таквој ситуацији, SNMP кеш треба ручно да се обрише на серверу/проксију (користећи -R snmp_cache_reload) или сервер/прокси треба поново покренути.

Конфигурисање SNMP надгледања

Да бисте започели надгледање уређаја преко SNMP-а, потребно је извршити следеће кораке:

Корак 1

Сазнајте SNMP стринг (или OID) ставке коју желите да надгледате.

Да бисте добили листу SNMP стрингова, користите команду ** snmpwalk** (део net-snmp софтвер који је требало да инсталирате као део Zabbix инсталације) или еквивалентан алат:

   snmpwalk -v 2c -c public <host IP> .

Као '2c' овде означава SNMP верзију, можете га заменити са '1', да бисте означили SNMP верзију 1 на уређају.

Ово би требало да вам пружи листу SNMP стрингова и њихову последњу вредност. Ако није, онда је могуће да се SNMP 'community' разликује од стандардне 'public' у ком случају ћете морати да сазнате шта је то.

Затим можете да прођете кроз листу док не пронађете стринг који желите да надгледате, нпр. ако желите да надгледате бајтове који долазе на ваш прекидач на порту 3, користили бисте стринг IF-MIB::ifHCInOctets.3 из овог реда:

IF-MIB::ifHCInOctets.3 = Counter64: 3409739121

Сада можете да користите ** snmpget** команду да бисте сазнали нумерички OID за 'IF-MIB::ifHCInOctets.3':

snmpget -v 2c -c public -On <host IP> IF-MIB::ifHCInOctets.3

Имајте на уму да је последњи број у низу број порта који желите да надгледате. Такође погледајте: Диннамичке индексе.

Ово би требало да вам да нешто попут следећег:

.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 3472126941

Поново, последњи број у OID-у је број порта.

Неки од најчешће коришћених SNMP OID-ови су аутоматски преведени у нумеричку презентацију од стране Zabbix-а.

У последњем примеру изнад тип вредности је "Counter64", што интерно одговара типу ASN_COUNTER64. Комплетна листа подржаних типова је ASN_COUNTER, ASN_COUNTER64, ASN_UINTEGER, ASN_UNSIGNED64,ASN_INTEGER, ASN_INTEGER64, ASN_FLOAT, ASN_DOUBLE, ASN_TIMETICKS,ASN_GAUGE, ASN_IPADDRESS, ASN_OCTET_STR и ASN_OBJECT_ID. Ови типови отприлике одговарају "Counter32","Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks","Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" у ** snmpget** излазу, али може бити приказан и као "STRING", "Hex-STRING","OID" и други, у зависности од присуства екрана наговештај.

Корак 2

Креирање домаћина који одговара уређају.

Додајте SNMP интерфејс за домаћина:

  • Унесите IP адресу/DNS име и број порта.
  • Изаберите SNMP верзију из падајућег менија.
  • Додајте креденцијале интерфејса у зависности од изабране SNMP верзије:
    • SNMPv1, v2 захтевају само заједницу (обично 'public').
    • SNMPv3 захтева специфичније опције (видети доле).
  • Наведите максималну вредност понављања (подразумевано: 10) за нативне SNMP групне захтеве (GetBulkRequest-PDUs); само за ставке discovery[] и walk[] у SNMPv2 и v3. Имајте на уму да постављање ове вредности превисоко може проузроковати истек времена провере SNMP агента.
  • Означите поље за потврду Користи комбиноване захтеве да бисте омогућили комбиновану обраду SNMP захтева (није повезано са изворним SNMP групним захтевима "walk" и "get").
SNMPv3 parameter Description
Назив контекста Унесите назив контекста да бисте идентификовали ставку на SNMP подмрежи.
Кориснички макрои се решавају у овом пољу.
Назив безбедности Унесите назив безбедности.
Кориснички макрои се решавају у овом пољу.
Ниво безбедности Изаберите ниво безбедности:
noAuthNoPriv - не користе се протоколи за аутентификацију нити протоколи за приватност
AuthNoPriv - користи се протокол за аутентификацију, протокол за приватност се не користи
AuthPriv - користе се и протоколи за аутентификацију и за приватност
Протокол за аутентификацију Изаберите протокол за аутентификацију - MD5, SHA1; са net-snmp 5.8 и новији SHA224, SHA256, SHA384 или SHA512.
Лозинка за аутентификацију Унесите лозинку за аутентификацију.
Кориснички макрои се решавају у овом пољу.
Протокол приватности Изаберите протокол приватности - DES, AES128, AES192, AES256, AES192C (Cisco) или AES256C (Cisco).
Погледајте напомене о подршци за протокол приватности
Шифра за приватности Унесите лозинку за приватност.
Кориснички макрои се решавају у овом пољу.

У случају погрешних SNMPv3 креденцијала (назив безбедности, протокол за аутентификацију/шифра, протокол приватности):

  • Zabbix добија грешку ГРЕШКА од net-snmp, осим у случају погрешне Шифре зе приватности у ком случају Zabbix добија грешку TIMEOUT од net-snmp.
  • Доступност SNMP интерфејса ће се променити у црвено (недоступно).

Промене у Протоколу за аутентификацију, Шифри за аутентификацију, Протоколу за приватност или Шифри за приватност, направљене без промене Назива безбедности, обично се аутоматски примењују када се одговарајући SNMPv3 интерфејс ажурира у Zabbix-у. У случајевима када се Назив безбедности такође промени, сви параметри ће бити одмах ажурирани.

Можете користити један од обезбеђених SNMP шаблона који ће аутоматски додати скуп ставки. Пре коришћења шаблона, проверите да ли је компатибилан са домаћином.

Кликните на Додај да бисте сачували домаћина.

Подршка за протокол приватности

У зависности од вашег оперативног система и конфигурације net-snmp, неки протоколи приватности можда неће бити доступни:

  • На неким новијим оперативним системима (на пример, RHEL9) подршка за DES је укинута за пакет net-snmp.

  • Протоколи за шифровање AES192 и јачи нису подржани одмах на оперативним системима старијим од RHEL 8, CentOS 8, Oracle Linux 8, Debian 12, Ubuntu LTS 22.04, openSUSE Leap 15.5.

Да бисте проверили да ли библиотека net-snmp подржава AES192+, користите једну од следећих опција:

  1. net-snmp-config:
net-snmp-config --configure-options

Ако излаз садржи --enable-blumenthal-aes, AES192+ је подржан.

Имајте на уму да је net-snmp-config део развојног пакета за SNMP (libsnmp-dev за Debian/Ubuntu, net-snmp-devel за CentOS/RHEL/OL/SUSE) и можда неће бити инсталиран подразумевано.

  1. snmpget:
snmpget -v 3 -x AES-256

Ако излаз садржи Invalid privacy protocol specified after -3x flag: AES-256, AES192+ није подржан. Ако излаз садржи No hostname specified., AES192+ није подржан.

Ако ваша net-snmp библиотека не подржава AES192 и новије протоколе, поново компајлирајте net-snmp са опцијом --enable-blumenthal-aes, а затим поново компајлирајте Zabbix сервер наводећи опцију --with-net-snmp=/home/user/yourcustomnetsnmp/bin/net-snmp-config.

Корак 3

Креирајте ставку за праћење.

Дакле, сада се вратите на Zabbix и кликните на Ставке за SNMP домаћина који сте раније креирали. У зависности од тога да ли сте користили шаблон или не приликом креирања домаћина, имаћете или листу SNMP ставки повезаних са вашим домаћином или само празну листу. Радићемо на претпоставци да ћете сами креирати ставку користећи информације које сте управо прикупили помоћу snmpwalk и snmpget, па кликните на Креирај ставку.

Попуните потребне параметре у новом обрасцу ставке:

Parameter Description
Назив Унесите назив ставке.
Тип Овде изаберите SNMP агент.
Кључ Унесите кључ као нешто значајно.
Интерфејс домаћина Обавезно изаберите SNMP интерфејс, нпр., вашег прекидача/рутера.
SNMP OID Користите један од подржаних формата за унос (s) вредности:

walk[OID1,OID2,...] - преузмите подстабло вредности.
На пример: walk[1.3.6.1.2.1.2.2.1.2,1.3.6.1.2.1.2.2.1.3].
Ова опција асинхроно користи масовне захтеве за изворне SNMP (GetBulkRequest-PDUs).
Подешавања временског ограничења за ову ставку могу се подесити у обрасцу конфигурација ставке. Размислите о подешавању ниске вредности временског ограничења како бисте избегли дуга кашњења ако је уређај недоступан, јер ће се извршити до 5 поновних покушаја (од Zabbix-а 7.0.14) ако претходни покушаји истекну или не успеју (нпр., временско ограничење од 3 секунде може резултирати временом чекања од 15 секунди).
Можете ово користити као главну ставку, са зависним ставкама које извлаче податке из главне ставки користећи предобраду.
Могуће је навести више OID-ова у једној snmp шетњи, као што је walk[OID1,OID2,...] да би се асинхроно обрадио један OID истовремено.
Ако групни захтев не врати резултате, онда се покушава преузети један запис без групног захтева.
MIB имена су подржана као параметри; Дакле, walk[1.3.6.1.2.1.2.2.1.2] и walk[ifDescr] ће вратити исти излаз.
Ако је наведено неколико OIDs/MIBs, тј. walk[ifDescr,ifType,ifPhysAddress], онда је излаз спојена листа.
GetBulk захтеви се користе са SNMPv2 и v3 интерфејсима и GetNext за SNMPv1 интерфејсе; максимални број понављања за групне захтеве се конфигурише на нивоу интерфејса.
Параметар максимални број понављања утиче на групне захтеве тако што одређује максималан број OIDs-ова враћених у једном групном одговору.
Већа вредност резултира већим групним одговорима, смањујући број потребних преноса. Међутим, не могу сви уређаји да подржавају веома високе вредности, што може проузроковати проблеме.
Ова ставка враћа излаз услужног програма snmpwalk са параметрима -Oe -Ot -On.
Ову ставку можете користити као главну ставку у SNMP откривању.

get[OID] - асинхроно преузима једну вредност.
На пример: get[1.3.6.1.2.1.31.1.1.1.6.3]
Подешавања временског ограничења за ову ставку могу се подесити у обрасцу ставка конфигурације. Размислите о подешавању ниске вредности временског ограничења како бисте избегли дуга кашњења ако уређај није доступан, јер ће се извршити до 5 поновних покушаја (од Zabbix-а 7.0.14) ако ранији покушаји истекну или не успеју (нпр., временски ограничење од 3 секунде може резултирати временом чекања од 15 секунди).

OID - (застарело) унесите један текстуални или нумерички OID да бисте синхроно преузели једну вредност, опционо у комбинацији са другим вредностима.
На пример: 1.3.6.1.2.1.31.1.1.1.6.3.
За ову опцију, временски ограничење провере ставке биће једнако вредности подешеној у датотеци за конфигурацију сервера датотека за конфигурацију.

Препоручује се коришћење ставки walk[OID] и get[OID] за боље перформансе. Све ставке walk[OID] и get[OID] се извршавају асинхроно - није потребно добити одговор на један захтев пре него што се покрену друге провере. DNS решавање је такође асинхроно.
Максимална конкурентност асинхроних провера је 1000 (дефинисано помоћу MaxConcurrentChecksPerPoller). Број асинхроних SNMP анкетара је дефинисан параметром StartSNMPPollers.

Имајте на уму да за статистику мрежног саобраћаја, коју враћа било која од метода, мора бити додат корак Промена у секунди на картици Предобрада; у супротном ћете добити кумулативну вредност са SNMP уређаја уместо најновије промене.

Сва обавезна поља за унос су означена црвеном звездицом.

Сада сачувајте ставку и идите на Праћење > Најновији подаци за ваше SNMP податке.

Пример 1

Општи пример:

Parameter Description
OID 1.2.3.45.6.7.8.0 (или .1.2.3.45.6.7.8.0)
Кључ <Unique string to be used as reference to triggers>
На пример, "my_param".

Имајте на уму да OID може бити дат у нумеричком или стринг облику. Међутим, у неким случајевима, стринг OID мора бити конвертован у нумеричку репрезентацију. Услужни програм snmpget може се користити за ову сврху:

snmpget -On localhost public enterprises.ucdavis.memory.memTotalSwap.0

Пример 2

Праћење радног времена:

Parameter Description
OID MIB::sysUpTime.0
Key router.uptime
Value type Float
Units uptime
Preprocessing step: Custom multiplier 0.01

Захтеви за групне SNMP израде путем изворних SNMP-ова

Ставка walk[OID1,OID2,...] омогућава коришћење изворне SNMP функционалности за групне захтеве (GetBulkRequest-PDU), доступне у SNMP верзијама 2/3.

GetBulk захтев у SNMP-у извршава више GetNext захтева и враћа резултат у једном одговору. Ово се може користити за редовне SNMP ставке, као и за SNMP откривање ради минимизирања мрежних обртаја.

SNMP ставка walk[OID1,OID2,...] може се користити као главна ставка која прикупља податке у једном захтеву са зависним ставкама које анализирају одговор по потреби користећи предобраду.

Имајте на уму да коришћење изворних SNMP групних захтева није повезано са опцијом комбиновања SNMP захтева, што је Zabbix-ов сопствени начин комбиновања више SNMP захтева (погледајте следећи одељак).

Поновни покушај ће се десити за SNMP групне ставке како би се избегао неуспех ако се један од пакета изгуби. Временско ограничење за SNMP ставке са get и walk (подешено у форми конфигурација ставке) је подешено за целу сесију. Ако се временско ограничење достигне, доћи ће до поновног покушаја, временско ограничење ће бити ресетовано, а последњи захтев ће бити поново послат, што омогућава наставак сесије од последњег захтева ако је један пакет изгубљен или је стигао прекасно. Размислите о подешавању ниске вредности временског ограничења како бисте избегли дуга кашњења ако је уређај недоступан, јер ће се извршити до 5 поновних покушаја (од Zabbix-а 7.0.14) ако претходни покушаји истекну или не успеју (нпр., временско ограничење од 3 секунде може резултирати временом чекања од 15 секунди).

Интерни рад комбиноване обраде

Zabbix сервер и прокси могу да упитују SNMP уређаје за више вредности у једном захтеву. Ово утиче на неколико врста SNMP ставки:

Све SNMP ставке на једном интерфејсу са идентичним параметрима су заказане за истовремено упитивање. Прве две врсте ставки узимају анкетари у групама од највише 128 ставки, док се правила откривања ниског нивоа обрађују појединачно, као и раније.

На нижем нивоу, постоје две врсте операција које се изводе за упитивање вредности: добијање више наведених објеката и обилазак OID стабла.

За "getting" се користи GetRequest-PDU са највише 128 повезивања променљивих. За "walking", GetNextRequest-PDU се користи за SNMPv1, а GetBulkRequest са пољем "max-repetitions" од највише 128 се користи за SNMPv2 и SNMPv3.

Стога су предности комбиноване обраде за сваки тип SNMP ставке наведене у наставку:

  • редовне SNMP ставке имају користи од побољшања "getting";
  • SNMP ставке са динамичким индексима имају користи од побољшања и "getting" and "walking": "getting" се користи за верификацију индекса, а "walking" за изградњу кеша;
  • SNMP правила откривања ниског нивоа имају користи од побољшања "walking".

Међутим, постоји технички проблем да нису сви уређаји способни да врате 128 вредности по захтеву. Неки увек враћају исправан одговор, али други или одговарају грешком "tooBig(1)" или уопште не одговарају када потенцијални одговор пређе одређену границу.

Да би пронашао оптималан број објеката за упит за дати уређај, Zabbix користи следећу стратегију. Почиње опрезно са упитом за 1 вредност у захтеву. Ако је то успешно, захтева 2 вредности у захтеву. Ако је и то поново успешно, захтева 3 вредности у захтеву и наставља слично множењем броја упитаних објеката са 1.5, што резултира следећим низом величина захтева: 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128.

Међутим, када уређај одбије да да правилан одговор (на пример, за 42 променљиве), Zabbix ради две ствари.

Прво, за тренутну групу елемената преполовљује број објеката у једном захтеву и упитује 21 променљиву. Ако је уређај активан, онда би упит требало да ради у већини случајева, јер је познато да 28 променљивих ради, а 21 је знатно мање од тога. Међутим, ако то и даље не успе, Zabbix се враћа на упит за вредности једну по једну. Ако и даље не успева у овом тренутку, онда уређај дефинитивно не реагује и величина захтева није проблем.

Друга ствар коју Zabbix ради за наредне групе елемената јесте да почиње са последњим успешним бројем променљивих (28 у нашем примеру) и наставља да повећава величине захтева за 1 док се не достигне ограничење. На пример, под претпоставком да је највећа величина одговора 32 променљиве, наредни захтеви ће бити величина 29, 30, 31, 32 и 33. Последњи захтев ће бити неуспешан и Zabbix више никада неће издати захтев величине 33. Од тог тренутка, Zabbix ће упитивати највише 32 променљиве за овај уређај.

Ако велики упити не успеју са овим бројем променљивих, то може значити једну од две ствари. Тачни критеријуми које уређај користи за ограничавање величине одговора не могу бити познати, али покушавамо да то апроксимирамо користећи број променљивих. Дакле, прва могућност је да је овај број променљивих око стварног ограничења величине одговора уређаја у општем случају: понекад је одговор мањи од ограничења, понекад је већи од тога. Друга могућност је да се UDP пакет у било ком смеру једноставно изгубио. Из ових разлога, ако Zabbix добије неуспешан упит, смањује максималан број променљивих како би покушао да се дубље уклопи у опсег који је уређају удобан, али само до два пута.

У горњем примеру, ако се деси да упит са 32 променљиве не успе, Zabbix ће смањити број на 31. Ако се и то деси неуспешно, Zabbix ће смањити број на 30. Међутим, Zabbix неће смањити број испод 30, јер ће претпоставити да су даљи неуспеси последица губитка UDP пакета, а не ограничења уређаја.

Међутим, ако уређај не може правилно да обради комбиноване захтеве из других разлога и хеуристика описана горе не функционише, постоји подешавање "Користи комбиноване захтеве" за сваки интерфејс које омогућава онемогућавање комбинованих захтева за тај уређај.

Поред тога, ако интерфејс често постаје недоступан, можда ће бити потребно повећати параметар UnavailableDelay у конфигурационим датотекама Zabbix сервер или Zabbix proxy како би се смањила учесталост захтева. Ставке могу постати неподржане ако се делимични подаци приме током откривања или OID прегледа.