Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich habe ein Gerät, bei dem man verschiedene Betriebsdaten auslesen kann, jedoch nicht über SNMP, sondern ein proprietäres Protokoll. Darum habe ich auf dem Zabbix-Server ein Item als External Control angelegt, was ein Skript ausführt, dass eine TCP-Verbindung zum Gerät aufbaut, die Antwort auswertet und einen numerischen Wert zurück liefert.

Das klappt soweit auch.

Das Problem ist aber, dass das Ziel-Gerät nicht immer im Netzwerk erreichbar ist. Schlägt der Verbindungsaufbau einmal fehl, liefert das Skript entsprechend keinen Wert zurück. Das zieht Zabbix als Fehler und setzt das ganze Item dann auf Unsupported mit dem Ergebnis, dass der ganze Wert dann nie wieder abgefragt wird.

Kann mein Skript in diesem Falle etwas Spezielles zurück liefern, damit es Zabbix als legitim betrachtet, dass mal kein Wert zurück kommt oder anderweitig erreichen, dass das Item nicht auf Unsupported gesetzt wird?

-1, NULL oder FALSE zurück liefern bringt nichts. Dann setzt Zabbix das Item auf Unsupported mit der Begründung, der Wert sei kein Unsigned Integer.

Hallo,

prinzipiell kannst du jede Software an deine Bedürfnisse anpassen. Ich kenne Zabbix nicht (weiß nur das es Open Source ist). Dadurch hast du schon einmal Zugriff auf den Quellcode.

Es geht dir jedoch darum, dein Skript anzupassen. Wo hast du dieses denn her?

Hast du den Quellcode für dieses Skript und in welcher Sprache ist es geschrieben?

Gruß smite

  • Autor

Hallo,

das Skript habe ich selbst geschrieben. Habe ich jetzt leider nicht hier, sondern auf der Arbeit. Im Prinzip öffnet es aber nur eine TCP-Verbindung, sendet ein paar Bytes und wandelt wiederum ein paar Bytes aus der Antwort in einen Integer um, den es am Ende ausgibt.

Zabbix führt das Skript aus und bekommt eine Zahl.

Solange es eine Rückgabe gibt, ist alles in Ordnung. Zabbix nimmt den Wert und verarbeitet ihn.

Doch manchmal kommt die TCP-Verbindung nicht zustande (z.B. wenn das Ziel-Gerät aus ist) und dann gibt es keine Rückgabe. Das betrachtet Zabbix dann als Fehler und deaktiviert darauf hin die gesamte Wertabfrage, bis ich sie in der Konfig-Oberfläche wieder manuell aktiviere, was aber aus beschriebenem Grund nie von Dauer ist.

Natürlich könnte ich den Zabbix-Quellcode so anpassen, dass die Wertabfrage nicht deaktiviert ist. Das möchte ich aber deshalb nicht, weil dies bei manchen anderen Abfragen durchaus seinen Sinn haben könnte.

Als Ultima Ratio würde ich das Skript einfach den ausgelesenen Wert in eine Datei ablegen lassen und falls die TCP-Verbindung mal nichts her gibt, den Vorgängerwert ausgeben lassen.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.