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 или "ID мотора") никада не деле два уређаја. Према RFC2571 (одељак 3.1.1.1) мора да буде јединствен за сваки уређај.

RFC3414 захтева да SNMPv3 уређаји истрају на њиховом покретању мотора . Неки уређаји то не раде, што доводи до тога да се њихове 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 'заједница' разликује од стандардне 'јавне' у ком случају ћете морати да сазнате шта је то.

Затим можете да прођете кроз листу док не пронађете стринг који желите да надгледате, нпр. ако желите да надгледате бајтове који долазе на ваш прекидач на порту 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

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

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

.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 and 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 захтевају само заједницу (обично 'јавну')
  • SNMPv3 захтева конкретније опције (погледајте испод)
  • Одредите максималну вредност понављања (подразумевано: 10) за изворни SNMP масовни захтеви (GetBulkRequest-PDUs); само за ставке discovery[] и walk[] у SNMPv2 и v3. Имајте на уму да постављање ове вредности на превисоку може да изазове временско ограничење за проверу SNMP агента.
  • Означите поље за потврду Користи комбиноване захтеве да бисте омогућили комбиновану обраду SNMP захтева (који се не односе на изворне SNMP групне захтеве "walk" и "get")
SNMPv3 parameter Description
Context name Унесите контекст име за идентификацију ставке на SNMP подмрежи.
Кориснички макрои се решавају у овом пољу.
Security name Унесите безбедносно име.
Кориснички макрои се решавају у овом пољу.
Security level Изаберите безбедност ниво:
noAuthNoPriv - не користи се аутентификација нити протоколи приватности
AuthNoPriv - користи се протокол за аутентификацију, протокол приватности није
AuthPriv - користе се и протоколи за аутентификацију и приватност
Authentication protocol Изаберите протокол за потврду идентитета - * MD5, SHA1; са net-snmp 5.8 и новијим SHA224, SHA256, SHA384* или * SHA512*.
Authentication passphrase Унесите приступну фразу за аутентификацију.
Кориснички макрои се решавају у овом пољу.
Privacy protocol Изаберите протокол приватности - DES, AES128, AES192, AES256, AES192C (Cisco) or AES256C (Cisco).
Погледајте напомене о подршци протокола приватности
* Privacy passphrase * Унесите приступну фразу за приватност.
Овим се решавају кориснички макрои поље.

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

  • Zabbix прима ГРЕШКУ од net-snmp, осим погрешне Privacy passphrase у ком случају Zabbix прима грешку ИСТЕКА ВРЕМАН од net-snmp;
  • Доступност SNMP интерфејса ће се пребацити на црвено (недоступно).

Промене у Протоколу за аутентификацију,Приступној фрази за аутентификацију, Протоколу приватности или Приступној фрази за приватност, направљене без промене Сигурносног имена, ступиће на снагу тек након што се кеш на серверу/проксију ручно обрише (користећи -Rsnmp_cache_reload) или сервер/прокси се поново покреће. У случајевима када се промени и Сигурносно име, сви параметри ће бити одмах ажурирани.

Можете користити један од понуђених 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.

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

  1. нет-снмп-цонфиг:

    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

Ако излаз садржи Неважећи протокол приватности наведен после ознаке -3x: AES-256, AES192+ није подржан. Ако излаз садржи Није наведено име домаћина, 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
* Name* Унесите назив ставке.
* Type* Изаберите ** SNMP агент** овде.
* Key* Унесите кључ као нешто значајно.
Host interface Обавезно изаберите SNMP интерфејс, нпр. вашег комутатора/рутера.
SNMP OID Користите један од подржаних формата да унесете OID вредност(е):

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) асинхроно.
Подешавања временског ограничења за ову ставку могу да се подесе у конфигурација ставке.
Можете да користите ово као главну ставку, са зависним ставкама које извлаче податке из главне ставке користећи претходну обраду.
Могуће је навести више OID-ова у једној snmp шетњи, као што је валк[walk[OID1,OID2...] за асинхрону обраду једног по једног OID-а.
Ако групни захтев не враћа резултате, онда се покушава да преузме један запис без групног захтева.
MIB имена су подржана као параметри; стога ће walk[1.3.6.1.2.1.2.2.1.2] и walk[ifDescr] вратити исти излаз.
Ако је наведено неколико OID-ова/MIB-ова, тј. walk[ifDescr,ifType,ifPhysAddress] , онда је излаз спојена листа.
GetBulk захтеви се користе са SNMPv2 и v3 интерфејси и GetNext за SNMPv1 интерфејсе; максимални број понављања за групне захтеве је конфигурисан на нивоу интерфејса.
Ова ставка враћа излаз услужног програма снмпвалк са параметрима -Oe -Ot -On.
Ову ставку можете користити као главну ставку у SNMP откривање.<бр><бр>get[OID] - преузми сингле вредност асинхроно.
На пример: get[1.3.6.1 .2.1.31.1.1.1.6.3]
Подешавања временског ограничења за ову ставку могу се подесити у конфигурација ставке.

** OID** - (застарели) унесите један текстуални или нумерички OID да бисте синхроно преузели једну вредност, опционо у комбинацији са друге вредности.<бр>На пример: 1.3.6.1.2.1.31.1.1.1.6.3.
За ову опцију, временско ограничење за проверу ставке биће једнака вредности подешеној у [конфигурационој датотеци] (/manual/appendix/config/zabbix_server#timeout).

Препоручује се** да користите 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)
** Key** <Јединствени стринг који ће се користити као референца на покретаче><бр>На пример, "my_param".

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

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 групни захтеви

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

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

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

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

Доћи ће до поновног покушаја за групне SNMP ставке да би се избегло неуспех ако један од пакета је изгубљен. Временско ограничење за SNMP ставке са get и walk је подешено за целу сесију. Ако се истекне временско ограничење онда ће се поновити покушај једном, временско ограничење ће бити ресетовано и последњи захтев ће бити поново послат омогућавајући наставак сесије од последњег захтева ако се један пакет изгуби или стигне прекасно.

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

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

  • обичне SNMP ставке
  • SNMP ставке са динамичким индексима
  • SNMP [правила откривања ниског нивоа]. (/manual/discovery/low_level_discovery/examples/snmp_oids_walk)

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

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

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

Дакле, предности комбиноване обраде за сваки тип SNMP ставке су наведене у наставку:

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

Међутим, постоји технички проблем који нису сви уређаји могу да врате 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 прокси конфигурационе датотеке за смањење учесталости захтева. Ставке могу постати неподржане ако се примају делимични подаци током откривања или OID шетње.