3 SNMP Agent

Übersicht

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

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

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 wiederholt SNMP-walk- und get-Datenpunkte bis zu 5-mal. Der Wiederholungsmechanismus gilt nicht für DNS-Auflösungsfehler.

Bei veralteten SNMP-Prüfungen (einzelne OID-Nummer oder Zeichenfolge) wiederholt Zabbix-Server/Proxy nach einem erfolglosen Abfrageversuch mindestens einmal: 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 (mit -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 wieder, anstatt jedes Mal eine Probe zu senden, wodurch der Netzwerkverkehr reduziert wird. Wenn eine EngineID nicht wiederverwendet werden kann, wird ein erneuter Versuch mit einer Probe 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 den SNMP-String (oder die OID) des Datenpunkts, den Sie überwachen möchten.

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

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 SNMP Version 1 auf dem Gerät anzugeben.

Dies sollte Ihnen eine Liste von SNMP-Strings und deren letztem Wert liefern. Falls nicht, ist es möglich, dass die SNMP-'community' vom Standardwert 'public' abweicht; in diesem Fall müssen Sie herausfinden, welcher Wert verwendet wird.

Anschließend können Sie die Liste durchgehen, bis Sie den String finden, den Sie überwachen möchten, z. B. wenn Sie die eingehenden Bytes auf Port 3 Ihres Switches überwachen möchten, würden Sie den String 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 im String 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 obigen Beispiel ist der Werttyp "Counter64", was intern dem Typ ASN_COUNTER64 entspricht. Die vollständige Liste der unterstützten Typen lautet 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 in etwa "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 Anzeigehinweises auch als "STRING", "Hex-STRING", "OID" und anders dargestellt werden.

Schritt 2

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

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

  • Geben Sie die IP-Adresse/DNS-Namen und die Portnummer ein.
  • Wählen Sie die SNMP-Version aus der Dropdown-Liste aus.
  • 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 unten).
  • 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.
  • 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").
SNMPv3 parameter Description
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 aus:
noAuthNoPriv - es werden weder Authentifizierungs- noch Datenschutzprotokolle verwendet
AuthNoPriv - es wird ein Authentifizierungsprotokoll verwendet, aber kein Datenschutzprotokoll
AuthPriv - es werden sowohl Authentifizierungs- als auch Datenschutzprotokolle verwendet
Authentication protocol Wählen Sie das Authentifizierungsprotokoll - MD5, SHA1; mit net-snmp 5.8 und neuer 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-Anmeldedaten (Security-Name, Authentifizierungsprotokoll/-Passphrase, Datenschutzprotokoll):

  • 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 auf 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.

Sie können eine der bereitgestellten SNMP-Vorlagen verwenden, die automatisch eine Reihe von Datenpunkten hinzufügen. Vergewissern Sie sich vor der Verwendung einer Vorlage, dass sie mit dem Host kompatibel ist.

Klicken Sie auf Add, um den Host zu speichern.

Unterstützung von Privacy-Protokollen

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) wurde die Unterstützung von DES für das net-snmp-Paket eingestellt.

  • Die Verschlüsselungsprotokolle AES192 und stärker werden auf Betriebssystemen älter als RHEL 8, CentOS 8, Oracle Linux 8, Debian 12, Ubuntu LTS 22.04 und 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 standardmäßig nicht 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 dann den Zabbix Server neu, wobei Sie die Option --with-net-snmp=/home/user/yourcustomnetsnmp/bin/net-snmp-config angeben.

Schritt 3

Erstellen Sie einen Datenpunkt zur Überwachung.

Gehen Sie nun zurück zu Zabbix und klicken Sie für den 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 von SNMP-Datenpunkten, die Ihrem Host zugeordnet sind, oder nur eine leere Liste. Wir gehen davon aus, dass Sie den Datenpunkt selbst erstellen, und zwar anhand der Informationen, die Sie gerade mit snmpwalk und snmpget gesammelt haben. Klicken Sie daher auf Datenpunkt erstellen.

Füllen Sie die erforderlichen Parameter im neuen Datenpunktformular 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 Achten Sie darauf, die SNMP-Schnittstelle auszuwä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 requests (GetBulkRequest-PDUs) asynchron.
Die Timeout-Einstellungen für diesen Datenpunkt können im Formular Datenpunktkonfiguration festgelegt werden. Erwägen Sie, einen niedrigen Timeout-Wert zu setzen, um lange Verzögerungen zu vermeiden, falls das Gerät nicht erreichbar ist, da bis zu 5 Wiederholungsversuche durchgeführt werden, wenn frühere Versuche zeitüberschreiten oder fehlschlagen (z. B. kann ein Timeout von 3 Sekunden zu einer Wartezeit von 15 Sekunden führen).
Sie können dies als Master-Datenpunkt verwenden, mit abhängigen Datenpunkten, die Daten aus dem Master mithilfe von Vorverarbeitung 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 zurückgibt, 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 sind, also walk[ifDescr,ifType,ifPhysAddress], wird die Ausgabe als zusammengefasste Liste zurückgegeben.
GetBulk-Anfragen werden mit SNMPv2- und v3-Schnittstellen verwendet, GetNext mit SNMPv1-Schnittstellen; die maximale Wiederholungsanzahl für Bulk-Anfragen wird auf Schnittstellenebene konfiguriert.
Der Parameter für die maximale Wiederholungsanzahl beeinflusst Bulk-Anfragen, indem er die maximale Anzahl von OIDs bestimmt, 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 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 asynchron einen einzelnen Wert 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 zu setzen, um lange Verzögerungen zu vermeiden, falls das Gerät nicht erreichbar ist, da bis zu 5 Wiederholungsversuche durchgeführt werden, wenn frühere Versuche zeitüberschreiten oder fehlschlagen (z. B. kann ein Timeout von 3 Sekunden 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.
Für diese Option entspricht das Timeout der Datenpunktprüfung dem im Server-Konfigurationsfile festgelegten Wert.

Es wird empfohlen, walk[OID]- und get[OID]-Datenpunkte zu verwenden, da sie eine bessere Leistung bieten. Alle walk[OID]- und get[OID]-Datenpunkte werden asynchron ausgeführt - es ist nicht erforderlich, auf die Antwort einer Anfrage zu warten, 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 definiert.

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 statt der letzten Änderung.

Alle Pflichtfelder sind mit einem roten Sternchen markiert.

Speichern Sie nun den Datenpunkt und gehen Sie zu Überwachung > Neueste Daten für Ihre SNMP-Daten.

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

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

Alle SNMP-Datenpunkte auf einer einzelnen Schnittstelle mit identischen Parametern werden so geplant, dass sie gleichzeitig abgefragt werden. Die ersten beiden Arten von Datenpunkten werden von Pollern in Stapeln von jeweils höchstens 128 Datenpunkten verarbeitet, während Low-Level-Discovery-Regeln weiterhin wie bisher einzeln verarbeitet werden.

Auf niedrigerer Ebene gibt es zwei Arten von Operationen zum Abfragen von Werten: das Abrufen mehrerer angegebener Objekte und das Durchlaufen eines OID-Baums.

Beim "Abrufen" wird ein GetRequest-PDU mit höchstens 128 Variablenbindungen verwendet. Beim "Durchlaufen" wird für SNMPv1 ein GetNextRequest-PDU verwendet, und für SNMPv2 und SNMPv3 wird ein GetBulkRequest mit dem Feld "max-repetitions" von höchstens 128 verwendet.

Daher sind die Vorteile der kombinierten Verarbeitung für die einzelnen SNMP-Datenpunkttypen unten aufgeführt:

  • reguläre SNMP-Datenpunkte profitieren von Verbesserungen beim "Abrufen";
  • SNMP-Datenpunkte mit dynamischen Indizes profitieren sowohl von Verbesserungen beim "Abrufen" als auch beim "Durchlaufen": "Abrufen" wird zur Indexprüfung verwendet und "Durchlaufen" zum Aufbau des Caches;
  • SNMP-Low-Level-Discovery-Regeln profitieren von Verbesserungen beim "Durchlaufen".

Es gibt jedoch ein technisches Problem: Nicht alle Geräte sind in der Lage, 128 Werte pro Anfrage zurückzugeben. Einige liefern immer eine korrekte Antwort, andere antworten jedoch entweder mit einem "tooBig(1)"-Fehler oder gar nicht mehr, sobald die mögliche Antwort eine bestimmte Grenze überschreitet.

Um für ein bestimmtes Gerät die optimale Anzahl der abzufragenden Objekte zu ermitteln, verwendet Zabbix die folgende Strategie. Es beginnt vorsichtig damit, 1 Wert pro Anfrage abzufragen. Wenn das erfolgreich ist, werden 2 Werte pro Anfrage abgefragt. Wenn auch das erfolgreich ist, werden 3 Werte pro Anfrage abgefragt, und so weiter, indem die Anzahl der abgefragten Objekte jeweils mit 1,5 multipliziert wird. Daraus ergibt sich die folgende Folge von Anfragegrößen: 1, 2, 3, 4, 6, 9, 13, 19, 28, 42, 63, 94, 128.

Sobald ein Gerät jedoch keine korrekte Antwort mehr liefert (zum Beispiel bei 42 Variablen), führt Zabbix zwei Schritte aus.

Zuerst halbiert es für den aktuellen Datenpunkt-Stapel die Anzahl der Objekte in einer einzelnen Anfrage und fragt 21 Variablen ab. Wenn das Gerät erreichbar ist, sollte die Abfrage in den allermeisten Fällen funktionieren, da 28 Variablen bereits als funktionierend bekannt waren und 21 deutlich darunter liegt. Falls das dennoch fehlschlägt, fällt Zabbix auf die Abfrage der Werte einzeln zurück. Wenn auch das an diesem Punkt noch fehlschlägt, dann antwortet das Gerät definitiv nicht, und die Anfragegröße ist nicht das Problem.

Der zweite Schritt, den Zabbix für nachfolgende Datenpunkt-Stapel ausführt, besteht darin, mit der zuletzt erfolgreichen Anzahl von Variablen zu beginnen (in unserem Beispiel 28) und die Anfragegrößen jeweils um 1 zu erhöhen, bis die Grenze erreicht ist. Angenommen, die größte funktionierende Antwortgröße beträgt 32 Variablen, dann haben die nachfolgenden Anfragen die Größen 29, 30, 31, 32 und 33. Die letzte Anfrage wird fehlschlagen, und Zabbix wird niemals wieder eine Anfrage der Größe 33 stellen. Von diesem Zeitpunkt an wird Zabbix für dieses Gerät höchstens 32 Variablen abfragen.

Wenn große Abfragen mit dieser Anzahl von Variablen fehlschlagen, kann das zwei Ursachen haben. Die genauen Kriterien, nach denen ein Gerät die Antwortgröße begrenzt, sind nicht bekannt, aber wir versuchen, dies anhand der Anzahl der Variablen zu approximieren. Die erste Möglichkeit ist also, dass diese Anzahl von Variablen im Allgemeinen ungefähr der tatsächlichen Grenze für die Antwortgröße des Geräts entspricht: Manchmal ist die Antwort kleiner als die Grenze, manchmal größer. Die zweite Möglichkeit ist, dass einfach ein UDP-Paket in eine der beiden Richtungen verloren gegangen ist. Aus diesen Gründen reduziert Zabbix bei einer fehlgeschlagenen Abfrage die maximale Anzahl der zu versuchenden Variablen, um weiter in den komfortablen Bereich des Geräts vorzudringen, jedoch nur bis zu zwei Mal.

Im obigen Beispiel wird Zabbix, wenn eine Abfrage mit 32 Variablen fehlschlägt, die Anzahl auf 31 reduzieren. Wenn auch das fehlschlägt, reduziert Zabbix die Anzahl auf 30. Zabbix wird die Anzahl jedoch nicht unter 30 senken, da davon ausgegangen wird, dass weitere Fehler auf verlorene UDP-Pakete und nicht auf die Begrenzung des Geräts zurückzuführen sind.

Wenn ein Gerät kombinierte Anfragen aus anderen Gründen nicht korrekt 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 teilweise oder fehlerhafte Antworten verursachen, die zu falschen Berechnungen der Werte pro Sekunde (Delta) führen (zum Beispiel scheinbare Spitzen in 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, die asynchron ausgeführt werden und nicht der pro Schnittstelle geltenden Stapelverarbeitung von Use combined requests unterliegen — sie können anstelle der klassischen synchronen OID-Prüfungen verwendet werden, um Probleme im Zusammenhang mit kombinierten Anfragen zu vermeiden. Suchen Sie in den Server-/Proxy-Protokollen nach Einträgen, die dem im Abschnitt Übersicht gezeigten ähneln, um betroffene Geräte zu identifizieren.

Zusätzlich kann es erforderlich sein, den Parameter UnavailableDelay in den Konfigurationsdateien des Zabbix Server oder Zabbix Proxy zu erhöhen, wenn die Schnittstelle häufig nicht verfügbar ist, um die Häufigkeit der Anfragen zu verringern. Datenpunkte können nicht unterstützt werden, wenn während der Discovery oder OID-Durchläufe nur teilweise Daten empfangen werden.