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].
Ова опција користи изворнe SNMP масовнe захтевe (GetBulkRequest-PDUs) асинхроно.
Подешавања временског ограничења за ову ставку могу да се подесе у конфигурацији ставке. Размислите о подешавању ниске вредности временског ограничења како бисте избегли дуга кашњења ако је уређај недоступан, јер ће се извршити до 5 поновних покушаја (од Zabbix-а 7.0.14) ако претходни покушаји истекну или не успеју (нпр. временски ограничење од 3 секунде може резултирати временом чекања од 15 секунди).
Можете ово користити као главну ставку, са зависним ставкама које извлаче податке из главне ставкe користећи предобраду.
Могуће је навести више 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 интерфејсе; максимални број понављања за групне захтеве је конфигурисан на нивоу интерфејса.
Параметар max repetitions утиче на групне захтеве тако што одређује максималан број OID-ова враћених у једном групном одговору.
Већа вредност резултира већим групним одговорима, смањујући број потребних преноса. Међутим, не могу сви уређаји да подржавају веома високе вредности, што може проузроковати проблеме.
Ова ставка враћа излаз услужног програма 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]
(/manual/appendix/config/zabbix_server#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 (подешено у обрасцу конфигурација ставке) је подешено за целу сесију. Ако се достигне временски ограничење, доћи ће до поновног покушаја, временски ограничење ће се ресетовати, а последњи захтев ће бити поново послат, омогућавајући наставак сесије од последњег захтева ако се један пакет изгуби или стигне прекасно. Размислите о подешавању ниске вредности временског ограничења како бисте избегли дуга кашњења ако уређај није доступан, јер ће се извршити до 5 поновних покушаја (од Zabbix-а 7.0.14) ако ранији истекну или не успеју (нпр. временски ограничење од 3 секунде може резултирати временом чекања од 15 секунди).

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

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 шетње.