SNMP-Agent

Übersicht

Möglicherweise möchten Sie SNMP-Monitoring auf Geräten wie Druckern, Netzwerk-Switches, Routern oder USV-Anlagen verwenden, die in der Regel SNMP-fähig sind und auf denen es unpraktisch wäre, komplette Betriebssysteme und Zabbix Agenten einzurichten.

Damit die von SNMP-Agenten auf diesen Geräten bereitgestellten Daten abgerufen werden können, muss der Zabbix Server zunächst mit SNMP-Unterstützung konfiguriert werden, indem das Flag --with-net-snmp angegeben wird. Es wird empfohlen, zusätzlich MIB-Dateien zu installieren, um sicherzustellen, dass die Werte der Datenpunkte im richtigen Format angezeigt werden. Ohne die MIB-Dateien können Formatierungsprobleme auftreten, z. B. die Anzeige von Werten in HEX statt UTF-8 oder umgekehrt.

SNMP-Prüfungen werden ausschließlich über das UDP-Protokoll durchgeführt.

Zabbix Server- und Proxy-Daemons protokollieren Zeilen ähnlich der folgenden, wenn sie eine fehlerhafte SNMP-Antwort erhalten:

SNMP response from host "gateway" does not contain all of the requested variable bindings

Auch wenn sie nicht alle problematischen Fälle abdecken, sind sie nützlich, um einzelne SNMP-Geräte zu identifizieren, für die kombinierte Anfragen deaktiviert werden sollten.

Zabbix Server/Proxy versucht bei SNMP-walk- und get-Datenpunkten bis zu 5 Mal erneut. Der Wiederholungsmechanismus gilt nicht für DNS-Auflösungsfehler.

Bei älteren SNMP-Prüfungen (eine einzelne OID-Nummer oder ein String) versucht Zabbix Server/Proxy nach einem erfolglosen Abfrageversuch mindestens einmal erneut: entweder über den Wiederholungsmechanismus der SNMP-Bibliothek oder über den internen Mechanismus der kombinierten Verarbeitung.

Wenn Sie SNMPv3-Geräte überwachen, stellen Sie sicher, dass msgAuthoritativeEngineID (auch bekannt als snmpEngineID oder "Engine ID") niemals von zwei Geräten gemeinsam verwendet wird. Gemäß RFC 2571 (Abschnitt 3.1.1.1) muss sie für jedes Gerät eindeutig sein.

RFC3414 verlangt, dass SNMPv3-Geräte ihre engineBoots persistent speichern. Einige Geräte tun dies nicht, was dazu führt, dass ihre SNMP-Nachrichten nach einem Neustart als veraltet verworfen werden. In einer solchen Situation muss der SNMP-Cache auf einem Server/Proxy manuell geleert werden (durch Verwendung von -R snmp_cache_reload) oder der Server/Proxy muss neu gestartet werden.

Zabbix speichert SNMPv3 EngineID → IP-Zuordnungen im Cache und verwendet zwischengespeicherte EngineIDs für nachfolgende Prüfungen erneut, anstatt jedes Mal einen Probeversuch zu senden, wodurch der Netzwerkverkehr reduziert wird. Wenn eine EngineID nicht erneut verwendet werden kann, wird ein erneuter Versuch mit einem Probeversuch durchgeführt, um die neue EngineID zu ermitteln.

Konfiguration der SNMP-Überwachung

Um die Überwachung eines Geräts über SNMP zu starten, müssen die folgenden Schritte durchgeführt werden:

Schritt 1

Ermitteln Sie die SNMP-Zeichenfolge (oder OID) des Datenpunkts, den Sie überwachen möchten.

Um eine Liste von SNMP-Zeichenfolgen zu erhalten, verwenden Sie den Befehl snmpwalk (Teil der net-snmp Software, die Sie im Rahmen der Zabbix-Installation installiert haben sollten) oder ein entsprechendes Tool:

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

Da 2c hier für die SNMP-Version steht, können Sie es auch durch 1 ersetzen, um auf dem Gerät SNMP Version 1 anzugeben.

Dies sollte Ihnen eine Liste von SNMP-Zeichenfolgen und deren letztem Wert liefern. Falls nicht, ist es möglich, dass die SNMP-„Community“ von der Standard-Community public abweicht; in diesem Fall müssen Sie diese ermitteln.

Sie können dann die Liste durchgehen, bis Sie die Zeichenfolge finden, die Sie überwachen möchten. Wenn Sie z. B. die eingehenden Bytes an Ihrem Switch auf Port 3 überwachen möchten, würden Sie die Zeichenfolge IF-MIB::ifHCInOctets.3 aus dieser Zeile verwenden:

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

Sie können nun den Befehl snmpget verwenden, um die numerische OID für IF-MIB::ifHCInOctets.3 zu ermitteln:

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

Beachten Sie, dass die letzte Zahl in der Zeichenfolge die Portnummer ist, die Sie überwachen möchten. Siehe auch: Dynamische Indizes.

Dies sollte Ihnen etwa Folgendes liefern:

.1.3.6.1.2.1.31.1.1.1.6.3 = Counter64: 3472126941

Auch hier ist die letzte Zahl in der OID die Portnummer.

Einige der am häufigsten verwendeten SNMP-OIDs werden von Zabbix automatisch in eine numerische Darstellung übersetzt.

Im letzten Beispiel oben ist der Werttyp "Counter64", was intern dem ASN_COUNTER64-Typ entspricht. Die vollständige Liste der unterstützten Typen ist 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 und ASN_OBJECT_ID. Diese Typen entsprechen ungefähr "Counter32", "Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks", "Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" in der Ausgabe von snmpget, können jedoch je nach Vorhandensein eines Display-Hinweises auch als "STRING", "Hex-STRING", "OID" und andere angezeigt werden.

Schritt 2

Erstellen Sie einen Host, der einem Gerät entspricht.

Fügen Sie dem Host eine SNMP-Schnittstelle hinzu:

  1. Geben Sie die IP-Adresse bzw. den DNS-Namen und die Portnummer ein.
  2. Wählen Sie die SNMP-Version aus der Dropdown-Liste aus.
  3. Fügen Sie je nach ausgewählter SNMP-Version die Schnittstellenanmeldedaten hinzu:
    • SNMPv1, v2 erfordern nur die Community (in der Regel 'public').
    • SNMPv3 erfordert spezifischere Optionen; siehe SNMPv3.
  4. Geben Sie den Maximalwert für Wiederholungen (Standard: 10) für native SNMP-Bulk-Anfragen (GetBulkRequest-PDUs) an; nur für discovery[]- und walk[]-Datenpunkte in SNMPv2 und v3. Beachten Sie, dass ein zu hoher Wert dazu führen kann, dass das Timeout der SNMP-Agent-Prüfung ausgelöst wird.
  5. Aktivieren Sie das Kontrollkästchen Kombinierte Anfragen verwenden, um die kombinierte Verarbeitung von SNMP-Anfragen zu ermöglichen (nicht im Zusammenhang mit nativen SNMP-Bulk-Anfragen "walk" und "get").

Sie können eine der bereitgestellten SNMP-Vorlagen verwenden, die automatisch eine Reihe von Datenpunkten hinzufügen. Bevor Sie eine Vorlage verwenden, prüfen Sie, ob sie mit dem Host kompatibel ist.

Klicken Sie auf Hinzufügen, um den Host zu speichern.

SNMPv3

Die folgenden Parameter sind für SNMPv3 erforderlich:

  • Context name - Geben Sie den Context-Namen ein, um den Datenpunkt im SNMP-Subnetz zu identifizieren.
    Benutzer-Makros werden in diesem Feld aufgelöst.
  • Security name - Geben Sie den Security-Namen ein.
    Benutzer-Makros werden in diesem Feld aufgelöst.
  • Security level - Wählen Sie den Security-Level:
    • noAuthNoPriv - es werden weder Authentifizierungs- noch Datenschutzprotokolle verwendet;
    • AuthNoPriv - das Authentifizierungsprotokoll wird verwendet, das Datenschutzprotokoll nicht;
    • AuthPriv - sowohl Authentifizierungs- als auch Datenschutzprotokolle werden verwendet.
  • Authentication protocol - Wählen Sie das Authentifizierungsprotokoll: MD5, SHA1; mit net-snmp 5.8 und neuer auch SHA224, SHA256, SHA384 oder SHA512.
  • Authentication passphrase - Geben Sie die Authentifizierungs-Passphrase ein.
    Benutzer-Makros werden in diesem Feld aufgelöst.
  • Privacy protocol - Wählen Sie das Datenschutzprotokoll: DES, AES128, AES192, AES256, AES192C (Cisco) oder AES256C (Cisco).
    Siehe Hinweise zur Unterstützung von Datenschutzprotokollen.
  • Privacy passphrase - Geben Sie die Datenschutz-Passphrase ein.
    Benutzer-Makros werden in diesem Feld aufgelöst.

Bei falschen SNMPv3-Zugangsdaten (Security name, Authentication protocol/Passphrase, Privacy protocol):

  • Zabbix erhält von net-snmp einen ERROR, außer bei einer falschen Privacy passphrase; in diesem Fall erhält Zabbix von net-snmp einen TIMEOUT-Fehler.
  • Die Verfügbarkeit der SNMP-Schnittstelle wechselt zu rot (nicht verfügbar).

Änderungen an Authentication protocol, Authentication passphrase, Privacy protocol oder Privacy passphrase, die ohne Änderung des Security name vorgenommen werden, werden normalerweise automatisch angewendet, wenn die entsprechende SNMPv3-Schnittstelle in Zabbix aktualisiert wird. Wenn auch der Security name geändert wird, werden alle Parameter sofort aktualisiert.

Unterstützung für Privacy-Protokolle

Abhängig von Ihrem Betriebssystem und der net-snmp-Konfiguration sind einige Privacy-Protokolle möglicherweise nicht verfügbar:

  • Auf einigen neueren Betriebssystemen (zum Beispiel RHEL9) wird die Unterstützung für DES für das Paket net-snmp entfernt.

  • Verschlüsselungsprotokolle AES192 und stärker werden auf Betriebssystemen, die älter sind als RHEL 8, CentOS 8, Oracle Linux 8, Debian 12, Ubuntu LTS 22.04, openSUSE Leap 15.5, nicht standardmäßig unterstützt.

Um zu prüfen, ob die net-snmp-Bibliothek AES192+ unterstützt, verwenden Sie eine der folgenden Optionen:

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

Wenn die Ausgabe --enable-blumenthal-aes enthält, wird AES192+ unterstützt.

Beachten Sie, dass net-snmp-config Teil des Entwicklungspakets für SNMP ist (libsnmp-dev für Debian/Ubuntu, net-snmp-devel für CentOS/RHEL/OL/SUSE) und möglicherweise nicht standardmäßig installiert ist.

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

Wenn die Ausgabe Invalid privacy protocol specified after -3x flag: AES-256 enthält, wird AES192+ nicht unterstützt. Wenn die Ausgabe No hostname specified. enthält, wird AES192+ nicht unterstützt.

Wenn Ihre net-snmp-Bibliothek AES192 und höhere Protokolle nicht unterstützt, kompilieren Sie net-snmp mit der Option --enable-blumenthal-aes neu und kompilieren Sie anschließend den Zabbix-Server mit der Option --with-net-snmp=/home/user/yourcustomnetsnmp/bin/net-snmp-config neu.

Schritt 3

Erstellen Sie einen Datenpunkt zur Überwachung.

Kehren Sie nun zu Zabbix zurück und klicken Sie beim zuvor erstellten SNMP-Host auf Datenpunkte. Je nachdem, ob Sie beim Erstellen Ihres Hosts eine Vorlage verwendet haben oder nicht, sehen Sie entweder eine Liste der mit Ihrem Host verknüpften SNMP-Datenpunkte oder eine leere Liste. Wir gehen davon aus, dass Sie den Datenpunkt selbst anhand der Informationen erstellen, die Sie gerade mit snmpwalk und snmpget gesammelt haben. Klicken Sie daher auf Datenpunkt erstellen.

Füllen Sie die erforderlichen Parameter im Formular für den neuen Datenpunkt aus:

Parameter Beschreibung
Name Geben Sie den Namen des Datenpunkts ein.
Typ Wählen Sie hier SNMP agent aus.
Schlüssel Geben Sie einen aussagekräftigen Schlüssel ein.
Host-Schnittstelle Stellen Sie sicher, dass Sie die SNMP-Schnittstelle auswählen, z. B. die Ihres Switches/Routers.
SNMP-OID Verwenden Sie eines der unterstützten Formate, um OID-Werte einzugeben:

walk[OID1,OID2,...] – ruft einen Teilbaum von Werten ab.
Beispiel: walk[1.3.6.1.2.1.2.2.1.2,1.3.6.1.2.1.2.2.1.3].
Diese Option verwendet native SNMP-Bulk-Anfragen (GetBulkRequest-PDUs) asynchron.
Die Timeout-Einstellungen für diesen Datenpunkt können im Formular Datenpunktkonfiguration festgelegt werden. Erwägen Sie, einen niedrigen Timeout-Wert festzulegen, um lange Verzögerungen zu vermeiden, wenn das Gerät nicht erreichbar ist, da bis zu fünf Wiederholungsversuche durchgeführt werden, wenn vorherige Versuche wegen eines Timeouts oder Fehlers fehlschlagen (ein Timeout von beispielsweise 3 Sekunden kann zu einer Wartezeit von 15 Sekunden führen).
Sie können diesen Datenpunkt als Master-Datenpunkt verwenden und abhängige Datenpunkte erstellen, die mithilfe der Vorverarbeitung Daten aus dem Master-Datenpunkt extrahieren.
Es ist möglich, mehrere OIDs in einem einzelnen SNMP-Walk anzugeben, z. B. walk[OID1,OID2,...], um jeweils eine OID asynchron zu verarbeiten.
Wenn die Bulk-Anfrage keine Ergebnisse liefert, wird versucht, einen einzelnen Datensatz ohne Bulk-Anfrage abzurufen.
MIB-Namen werden als Parameter unterstützt. Daher liefern walk[1.3.6.1.2.1.2.2.1.2] und walk[ifDescr] dieselbe Ausgabe.
Wenn mehrere OIDs/MIBs angegeben werden, z. B. walk[ifDescr,ifType,ifPhysAddress], wird die Ausgabe als verkettete Liste zurückgegeben.
GetBulk-Anfragen werden mit SNMPv2- und SNMPv3-Schnittstellen verwendet, GetNext mit SNMPv1-Schnittstellen. Die maximale Anzahl von Wiederholungen für Bulk-Anfragen wird auf Schnittstellenebene konfiguriert.
Der Parameter für die maximale Anzahl von Wiederholungen beeinflusst Bulk-Anfragen, indem er die maximale Anzahl der OIDs festlegt, die in einer einzelnen Bulk-Antwort zurückgegeben werden.
Ein höherer Wert führt zu größeren Bulk-Antworten und reduziert die Anzahl der erforderlichen Übertragungen. Allerdings unterstützen möglicherweise nicht alle Geräte sehr hohe Werte, was zu Problemen führen kann.
Dieser Datenpunkt gibt die Ausgabe des Dienstprogramms snmpwalk mit den Parametern -Oe -Ot -On zurück.
Sie können diesen Datenpunkt als Master-Datenpunkt in der SNMP-Erkennung verwenden.

get[OID] – ruft einen einzelnen Wert asynchron ab.
Beispiel: get[1.3.6.1.2.1.31.1.1.1.6.3]
Die Timeout-Einstellungen für diesen Datenpunkt können im Formular Datenpunktkonfiguration festgelegt werden. Erwägen Sie, einen niedrigen Timeout-Wert festzulegen, um lange Verzögerungen zu vermeiden, wenn das Gerät nicht erreichbar ist, da bis zu fünf Wiederholungsversuche durchgeführt werden, wenn vorherige Versuche wegen eines Timeouts oder Fehlers fehlschlagen (ein Timeout von beispielsweise 3 Sekunden kann zu einer Wartezeit von 15 Sekunden führen).

OID – (veraltet) geben Sie eine einzelne textuelle oder numerische OID ein, um synchron einen einzelnen Wert abzurufen, optional kombiniert mit anderen Werten.
Beispiel: 1.3.6.1.2.1.31.1.1.1.6.3.
Bei dieser Option entspricht das Timeout der Datenpunktprüfung dem im Server-Konfigurationsdatei festgelegten Wert.

Es wird empfohlen, für eine bessere Leistung Datenpunkte mit walk[OID] und get[OID] zu verwenden. Alle Datenpunkte mit walk[OID] und get[OID] werden asynchron ausgeführt – es ist nicht erforderlich, die Antwort auf eine Anfrage abzuwarten, bevor andere Prüfungen gestartet werden. Auch die DNS-Auflösung erfolgt asynchron.
Die maximale Parallelität asynchroner Prüfungen beträgt 1000 (definiert durch MaxConcurrentChecksPerPoller). Die Anzahl der asynchronen SNMP-Poller wird durch den Parameter StartSNMPPollers festgelegt.

Beachten Sie, dass für Netzwerkverkehrsstatistiken, die von einer der Methoden zurückgegeben werden, im Tab Vorverarbeitung ein Schritt Änderung pro Sekunde hinzugefügt werden muss. Andernfalls erhalten Sie den kumulativen Wert vom SNMP-Gerät anstelle der letzten Änderung.

Alle Pflichtfelder sind mit einem roten Sternchen gekennzeichnet.

Speichern Sie nun den Datenpunkt und gehen Sie zu Überwachung > Neueste Daten, um Ihre SNMP-Daten anzuzeigen.

Beispiel 1

Allgemeines Beispiel:

Parameter Beschreibung
OID 1.2.3.45.6.7.8.0 (oder .1.2.3.45.6.7.8.0)
Key <Eindeutige Zeichenfolge, die als Referenz für Auslöser verwendet wird>
Zum Beispiel „my_param“.

Beachten Sie, dass OID entweder in numerischer oder in Zeichenfolgenform angegeben werden kann. In einigen Fällen muss eine Zeichenfolgen-OID jedoch in eine numerische Darstellung umgewandelt werden. Das Dienstprogramm snmpget kann zu diesem Zweck verwendet werden:

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

Beispiel 2

Überwachung der Uptime:

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

Native SNMP-Bulk-Anfragen

Der Datenpunkt walk[OID1,OID2,...] ermöglicht die Nutzung nativer SNMP-Funktionalität für Bulk-Anfragen (GetBulkRequest-PDUs), die in den SNMP-Versionen 2/3 verfügbar ist.

Eine GetBulk-Anfrage in SNMP führt mehrere GetNext-Anfragen aus und gibt das Ergebnis in einer einzigen Antwort zurück. Dies kann sowohl für reguläre SNMP-Datenpunkte als auch für die SNMP-Erkennung verwendet werden, um Netzwerk-Roundtrips zu minimieren.

Der SNMP-Datenpunkt walk[OID1,OID2,...] kann als Master-Datenpunkt verwendet werden, der Daten in einer Anfrage sammelt, zusammen mit abhängigen Datenpunkten, die die Antwort bei Bedarf mittels Vorverarbeitung auswerten.

Beachten Sie, dass die Verwendung nativer SNMP-Bulk-Anfragen nicht mit der Option zum Kombinieren von SNMP-Anfragen zusammenhängt, was eine Zabbix-eigene Methode zum Zusammenfassen mehrerer SNMP-Anfragen ist (siehe nächsten Abschnitt).

Für SNMP-Bulk-Datenpunkte erfolgen bis zu fünf Wiederholungsversuche, um einen Fehler zu vermeiden, falls eines der Pakete verloren geht. Das Timeout für SNMP-Datenpunkte mit get und walk (festgelegt im Formular Datenpunktkonfiguration) wird für eine gesamte Sitzung gesetzt. Das Timeout wird unabhängig davon angewendet, ob die Daten vollständig abgerufen werden; wenn Daten nur teilweise empfangen werden (zum Beispiel wenn Daten erfolgreich nur für eine von mehreren OIDs erfasst werden), wird der Datenpunkt mit der Meldung „Only partial data received“ nicht unterstützt. Wird das Timeout erreicht, erfolgt ein Wiederholungsversuch, das Timeout wird zurückgesetzt und die letzte Anfrage wird erneut gesendet, sodass die Sitzung ab der letzten Anfrage fortgesetzt werden kann, wenn ein einzelnes Paket verloren geht oder zu spät eintrifft. Erwägen Sie, einen niedrigen Timeout-Wert festzulegen, um lange Verzögerungen zu vermeiden, wenn das Gerät nicht erreichbar ist, da bis zu 5 Wiederholungsversuche durchgeführt werden, wenn frühere Versuche ein Timeout erreichen oder fehlschlagen (z. B. kann ein Timeout von 3 Sekunden zu einer Wartezeit von 15 Sekunden führen).

Interne Funktionsweise der kombinierten Verarbeitung

Der Zabbix Server und Proxy können SNMP-Geräte in einer einzigen Anfrage nach mehreren Werten abfragen. Dies betrifft mehrere Typen von SNMP-Datenpunkten:

Alle SNMP-Datenpunkte auf einer einzelnen Schnittstelle mit identischen Parametern werden zur gleichen Zeit für die Abfrage eingeplant. Die ersten beiden Typen von Datenpunkten werden von Pollern in Stapeln von höchstens 128 Datenpunkten verarbeitet, während Low-Level-Discovery-Regeln wie bisher einzeln verarbeitet werden.

Auf der unteren Ebene gibt es zwei Arten von Vorgängen zum Abfragen von Werten: das Abrufen mehrerer angegebener Objekte und das Durchlaufen eines OID-Baums.

Für das „Abrufen“ wird eine GetRequest-PDU mit höchstens 128 Variablenbindungen verwendet. Für das „Durchlaufen“ wird für SNMPv1 eine GetNextRequest-PDU verwendet, während für SNMPv2 und SNMPv3 eine GetBulkRequest-PDU mit einem Feld „max-repetitions“ von höchstens 128 verwendet wird.

Daraus ergeben sich für die einzelnen SNMP-Datentypen folgende Vorteile der kombinierten Verarbeitung:

  • Reguläre SNMP-Datenpunkte profitieren von den Verbesserungen beim „Abrufen“.
  • SNMP-Datenpunkte mit dynamischen Indizes profitieren sowohl von den Verbesserungen beim „Abrufen“ als auch beim „Durchlaufen“: „Abrufen“ wird zur Indexüberprüfung und „Durchlaufen“ zum Erstellen des Caches verwendet.
  • SNMP-Low-Level-Discovery-Regeln profitieren von den Verbesserungen beim „Durchlaufen“.

Es gibt jedoch ein technisches Problem: Nicht alle Geräte können 128 Werte pro Anfrage zurückgeben. Einige geben immer eine ordnungsgemäße Antwort zurück, während andere entweder mit dem Fehler „tooBig(1)“ antworten oder überhaupt nicht antworten, sobald die potenzielle Antwort eine bestimmte Größe überschreitet.

Um die optimale Anzahl von Objekten zu ermitteln, die für ein bestimmtes Gerät abgefragt werden sollen, verwendet Zabbix die folgende Strategie. Zunächst wird vorsichtig mit der Abfrage von 1 Wert pro Anfrage begonnen. Wenn dies erfolgreich ist, werden 2 Werte pro Anfrage abgefragt. Wenn dies erneut erfolgreich ist, werden 3 Werte pro Anfrage abgefragt. Anschließend wird die Anzahl der abgefragten Objekte jeweils mit 1,5 multipliziert. Daraus ergibt sich folgende Sequenz von Anfragegrößen: 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128.

Sobald ein Gerät jedoch keine ordnungsgemäße Antwort mehr liefert, beispielsweise bei 42 Variablen, führt Zabbix zwei Aktionen aus.

Erstens halbiert Zabbix für den aktuellen Datenpunktstapel die Anzahl der Objekte in einer einzelnen Anfrage und fragt 21 Variablen ab. Wenn das Gerät erreichbar ist, sollte die Abfrage in der überwiegenden Mehrheit der Fälle funktionieren, da bekannt ist, dass 28 Variablen funktionieren, und 21 deutlich weniger sind. Falls dies dennoch fehlschlägt, greift Zabbix auf die Abfrage der Werte einzeln zurück. Wenn dies ebenfalls fehlschlägt, antwortet das Gerät definitiv nicht, und die Anfragegröße ist nicht die Ursache.

Zweitens beginnt Zabbix für nachfolgende Datenpunktstapel mit der letzten erfolgreichen Anzahl von Variablen, in unserem Beispiel 28, und erhöht die Anfragegröße anschließend jeweils um 1, bis das Limit erreicht ist. Angenommen, die größte Antwortgröße beträgt 32 Variablen, haben die nachfolgenden Anfragen die Größen 29, 30, 31, 32 und 33. Die letzte Anfrage schlägt fehl, und Zabbix wird nie wieder eine Anfrage der Größe 33 senden. Ab diesem Zeitpunkt fragt Zabbix für dieses Gerät höchstens 32 Variablen ab.

Wenn große Abfragen bei dieser Anzahl von Variablen fehlschlagen, kann dies eine von zwei Ursachen haben. Die genauen Kriterien, anhand derer ein Gerät die Antwortgröße begrenzt, sind nicht bekannt. Wir versuchen jedoch, dies anhand der Anzahl der Variablen näherungsweise zu bestimmen. Die erste Möglichkeit ist, dass diese Anzahl von Variablen im Allgemeinen ungefähr dem tatsächlichen Antwortgrößenlimit des Geräts entspricht: Manchmal ist die Antwort kleiner als das Limit, manchmal größer. Die zweite Möglichkeit ist, dass ein UDP-Paket in eine der beiden Richtungen verloren gegangen ist. Wenn Zabbix eine fehlgeschlagene Abfrage erhält, reduziert es daher die maximale Anzahl der Variablen, um in den komfortablen Bereich des Geräts zu gelangen, jedoch höchstens zweimal.

Wenn im obigen Beispiel eine Abfrage mit 32 Variablen zufällig fehlschlägt, reduziert Zabbix die Anzahl auf 31. Falls auch diese Abfrage fehlschlägt, reduziert Zabbix die Anzahl auf 30. Zabbix reduziert die Anzahl jedoch nicht unter 30, da davon ausgegangen wird, dass weitere Fehler durch verlorene UDP-Pakete und nicht durch das Limit des Geräts verursacht werden.

Wenn ein Gerät kombinierte Anfragen aus anderen Gründen nicht ordnungsgemäß verarbeiten kann und die oben beschriebene Heuristik nicht funktioniert, gibt es für jede Schnittstelle die Einstellung „Use combined requests“, mit der kombinierte Anfragen für dieses Gerät deaktiviert werden können.

Wenn kombinierte Anfragen partielle oder fehlerhafte Antworten verursachen, die zu falschen Berechnungen pro Sekunde (Delta) führen, beispielsweise scheinbaren Spitzen bei Schnittstellenzählern, deaktivieren Sie Use combined requests für die betroffene Schnittstelle, um separate Abfragen pro Datenpunkt zu erzwingen. Dies verhindert häufig falsche Spitzen. Alternativ können Sie asynchrone get[]- oder walk[]-Datenpunkte verwenden. Diese werden asynchron ausgeführt und unterliegen nicht der schnittstellenbezogenen Stapelverarbeitung durch Use combined requests. Sie können anstelle älterer synchroner OID-Prüfungen verwendet werden, um Probleme im Zusammenhang mit kombinierten Anfragen zu vermeiden. Suchen Sie in den Server-/Proxy-Protokolleinträgen nach einem ähnlichen Eintrag wie dem im Abschnitt Übersicht gezeigten, um betroffene Geräte zu identifizieren.

Wenn die Schnittstelle außerdem häufig nicht verfügbar wird, kann es erforderlich sein, den Parameter UnavailableDelay in den Konfigurationsdateien des Zabbix Servers oder Zabbix Proxys zu erhöhen, um die Häufigkeit der Anfragen zu reduzieren. Datenpunkte können nicht unterstützt werden, wenn während der Erkennung oder beim Durchlaufen von OIDs nur teilweise Daten empfangen werden.