3 SNMP Agent

Übersicht

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

Damit die von SNMP-Agents auf diesen Geräten bereitgestellten Daten abgerufen werden können, muss der Zabbix-Server zunächst mit SNMP-Unterstützung konfiguriert werden, indem der Schalter --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 ausgefü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 der 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, wodurch ihre SNMP-Nachrichten nach einem Neustart als veraltet verworfen werden. In einem solchen Fall muss der SNMP-Cache auf einem Server/Proxy manuell geleert werden (mit -R snmp_cache_reload) oder der Server/Proxy muss neu gestartet werden.

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 OID) des Datenpunkts, den Sie überwachen möchten.

Um eine Liste von SNMP-Strings 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.

Dadurch sollten Sie eine Liste von SNMP-Strings und ihrem letzten Wert erhalten. 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 den gewünschten String finden, den Sie überwachen möchten. Wenn Sie beispielsweise die eingehenden Bytes auf Ihrem Switch an Port 3 ü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 etwas in der folgenden Art 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 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 grob "Counter32", "Counter64", "UInteger32", "INTEGER", "Float", "Double", "Timeticks", "Gauge32", "IpAddress", "OCTET STRING", "OBJECT IDENTIFIER" in der Ausgabe von snmpget, können aber 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/DNS-Namen und die Portnummer ein.
  2. Wählen Sie die SNMP-Version aus der Dropdown-Liste aus.
  3. Fügen Sie die Schnittstellenanmeldedaten je nach ausgewählter SNMP-Version 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 überschritten 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 Kontextnamen ein, um den Datenpunkt im SNMP-Subnetz zu identifizieren.
    Benutzer-Makros werden in diesem Feld aufgelöst.
  • Security name - Geben Sie den Sicherheitsnamen ein.
    Benutzer-Makros werden in diesem Feld aufgelöst.
  • Security level - Wählen Sie die Sicherheitsstufe:
    • 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 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-Anmeldedaten (Sicherheitsname, 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 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.

Sie können eine der bereitgestellten SNMP-Vorlagen verwenden, die automatisch eine Reihe von Datenpunkten hinzufügen. Bevor Sie eine Vorlage verwenden, überprüfen Sie, ob 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 möglicherweise einige Privacy-Protokolle nicht verfügbar:

  • Auf einigen neueren Betriebssystemen (zum Beispiel RHEL9) wird die Unterstützung von 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 erneut, wobei Sie die Option --with-net-snmp=/home/user/yourcustomnetsnmp/bin/net-snmp-config angeben.

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 im Formular für den neuen Datenpunkt die erforderlichen Parameter 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 zur Datenpunktkonfiguration festgelegt werden. Es empfiehlt sich, 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, falls vorherige Versuche wegen eines Timeouts oder Fehlers fehlschlagen (z. B. kann ein Timeout von 3 Sekunden 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-Anfragen 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 in einer einzelnen Bulk-Antwort zurückgegebenen OIDs festlegt.
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 bei 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 zur Datenpunktkonfiguration festgelegt werden. Es empfiehlt sich, 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, falls vorherige Versuche wegen eines Timeouts oder Fehlers 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 in Kombination 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 in der 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 zu erhalten, 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 vom SNMP-Gerät den kumulativen Wert 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 der 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 selben 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 mit einem Feld „max-repetitions“ von höchstens 128 verwendet wird.

Daher lassen sich die Vorteile der kombinierten Verarbeitung für die einzelnen SNMP-Datentypen wie folgt zusammenfassen:

  • 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 Überprüfung des Index verwendet und „Durchlaufen“ zum Erstellen des Caches.
  • SNMP-Low-Level-Discovery-Regeln profitieren von 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, andere antworten entweder mit einem „tooBig(1)“-Fehler oder überhaupt nicht, sobald die potenzielle Antwort eine bestimmte Grenze ü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 die 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. Wenn dies jedoch ebenfalls fehlschlägt, greift Zabbix auf die Abfrage einzelner Werte zurück. Wenn dies zu diesem Zeitpunkt weiterhin 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. Unter der Annahme, dass die größte Antwortgröße 32 Variablen beträgt, haben die nachfolgenden Anfragen beispielsweise 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 mit 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 der tatsächlichen Antwortgrößenbegrenzung des Geräts entspricht: Manchmal liegt die Antwort unterhalb des Limits, manchmal darüber. Die zweite Möglichkeit ist, dass ein UDP-Paket in eine der beiden Richtungen einfach verloren gegangen ist. Aus diesen Gründen reduziert Zabbix bei einer fehlgeschlagenen Abfrage 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. Wenn 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 eher durch verlorene UDP-Pakete als 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 zu unvollständigen oder fehlerhaften Antworten führen, die falsche Berechnungen pro Sekunde (Delta) verursachen, beispielsweise scheinbare Spitzen bei Schnittstellenzählern, deaktivieren Sie Use combined requests für die betroffene Schnittstelle, um separate Abfragen pro Datenpunkt zu erzwingen. Dadurch werden falsche Spitzen häufig verhindert. 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 ähnlichen Einträgen 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 des 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 unvollständige Daten empfangen werden.