Didactum Monitoring & Zenoss Integration
Vollständige Schritt-für-Schritt-Anleitung zur Einbindung von Didactum Monitoring-Geräten und Sensoren in Zenoss Core / Zenoss Service Dynamics (ZSD) via SNMP – inklusive Device-Discovery, ZenPack-Konfiguration, MIB-Import, SNMP-Datenquellen (Datasources) und Schwellwert-Konfiguration (Thresholds) im Monitoring-Template, vollständiger OID-Referenz für alle Sensortypen (Temperatur, Leckage, Luftfeuchtigkeit, Türkontakt, Rauch), SNMP-Trap-Verarbeitung sowie Event-Klassen- und Benachrichtigungs-Konfiguration.
Architektur-Hinweis: Zenoss arbeitet mit Monitoring-Templates und ZenPacks. Das Didactum-Gerät wird als Device in Zenoss angelegt und einer Device-Klasse zugeordnet. Ein Monitoring-Template definiert, welche OIDs (Datasources) abgefragt und welche Schwellwerte (Thresholds) überwacht werden. SNMP-Traps werden vom Didactum-Gerät an den Zenoss-Server gesendet (UDP-Port 162) und über Event-Klassen-Mappings in Zenoss-Events umgewandelt. Der Zenoss-Server sendet SNMP-GET-Anfragen (UDP-Port 161) aktiv an das Didactum-Gerät.
- Software: Zenoss Core 6.x oder Zenoss Service Dynamics (ZSD)
- Komponenten: Zenoss Server, zenhub, zenperfsnmp, zentrap, zenactions
- Protokoll: SNMP v1 / v2c / v3
- Geräte: Didactum Monitoring System 100T / 300T / 500T / 550T
- Sensoren: Temperatur, Leckage, Luftfeuchtigkeit, Türkontakt, Rauch
1. Voraussetzungen & Systemüberblick
Zenoss Server
| Komponente | Anforderung / Details |
|---|---|
| Zenoss Version | Zenoss Core 6.x oder Zenoss Service Dynamics; ältere Versionen (4.x / 5.x) funktionieren analog |
| Daemon zenperfsnmp | Muss aktiv sein – zuständig für SNMP-Polling; zenoss status prüfen |
| Daemon zentrap | Muss aktiv sein – zuständig für SNMP-Trap-Empfang auf UDP-Port 162 |
| Daemon zenactions | Muss aktiv sein – zuständig für E-Mail-Benachrichtigungen |
| Netzwerk (ausgehend) | UDP-Port 161 vom Zenoss-Server zum Didactum-Gerät (SNMP-Polling) |
| Netzwerk (eingehend) | UDP-Port 162 vom Didactum-Gerät zum Zenoss-Server (SNMP-Traps) |
| Netzwerkzugang | IP-Erreichbarkeit vom Zenoss-Server zum Didactum-Gerät erforderlich |
Didactum-Gerät
| Anforderung | Details |
|---|---|
| Modell | Monitoring System 100T, 300T, 500T oder 550T |
| SNMP | SNMP aktiviert (v2c empfohlen) |
| Community String | Individueller Community String (nicht „public" verwenden) |
| Trap-Ziel | IP-Adresse des Zenoss-Servers |
| MIB-Datei | Unter Systemeinstellungen → SNMP herunterladbar |
Enterprise OIDs je Firmware-Generation
| Gerät / Firmware | Enterprise OID (Basis) |
|---|---|
| Ältere Modelle / ältere Firmware | .1.3.6.1.4.1.46501 |
| Neuere Modelle / aktuelle Firmware | .1.3.6.1.4.1.39052 |
Hinweis: Welche Enterprise OID Ihr Gerät verwendet, ermitteln Sie per:
snmpwalk -v 2c -c public 192.168.1.50 .1.3.6.1.2.1.1.2.0
2. SNMP auf dem Didactum-Gerät aktivieren
Schritt 1 – Web-Interface öffnen
192.168.1.50 (IP des Didactum-Geräts anpassen)
Schritt 2 – SNMP-Einstellungen aufrufen
Systemeinstellungen → SNMP
Schritt 3 – Folgende Werte eintragen
| Feld im Didactum Web-Interface | Empfohlener Wert |
|---|---|
| SNMP aktivieren | Aktiviert |
| SNMP-Version | v2c (empfohlen) |
| Community String (Read) | didactum_zenoss (nicht „public" verwenden!) |
| SNMP-Port | 161 |
| Trap-Ziel (Trap Destination) | IP-Adresse des Zenoss-Servers |
| Trap-Community | didactum_trap |
| Trap-Port | 162 |
Schritt 4 – MIB-Datei herunterladen
Systemeinstellungen → SNMP → "MIB-Datei herunterladen" Datei wird als didactum.mib gespeichert. Diese Datei wird in Schritt 3 in Zenoss importiert.
Einstellungen speichern. Das Gerät sendet SNMP-Traps ab sofort an den Zenoss-Server.
3. MIB-Datei in Zenoss importieren
Zenoss speichert MIB-Dateien auf dem Server im Dateisystem und lädt sie über die Kommandozeile oder das Webinterface. Nach dem Import löst Zenoss OID-Nummern in SNMP-Trap-Events mit symbolischen Namen auf.
Schritt 1 – MIB-Datei auf den Zenoss-Server kopieren
Standard MIB-Verzeichnis Zenoss Core (Linux): /opt/zenoss/share/mibs/site/ Datei hochladen (z. B. per SCP vom Admin-Rechner): scp didactum.mib zenoss@192.168.1.100:/opt/zenoss/share/mibs/site/ Alternativ direkt auf dem Server: cp didactum.mib /opt/zenoss/share/mibs/site/
Schritt 2 – MIB kompilieren (als zenoss-Benutzer)
su - zenoss cd /opt/zenoss # MIB kompilieren python $ZENHOME/bin/zenmib run /opt/zenoss/share/mibs/site/didactum.mib # Erfolgsmeldung: # INFO zen.ZenMib: Loaded MIB DIDACTUM-MIB # INFO zen.ZenMib: Saved X OIDs to ZODB
Schritt 3 – MIB-Import über die Zenoss-Weboberfläche (alternative Methode)
Zenoss Web UI → Advanced → MIBs → Add MIB → "Upload MIB File" → didactum.mib auswählen → "Add" klicken → MIB erscheint in der MIB-Liste als DIDACTUM-MIB
Schritt 4 – MIB-Import verifizieren
Zenoss Web UI → Advanced → MIBs → DIDACTUM-MIB → OID-Baum wird angezeigt → sensorValue (.1.3.6.1.4.1.46501.5.1.1.7) erscheint mit symbolischem Namen
Fertige MIB-Importkonfiguration (DIDACTUM-MIB.txt)
Falls keine MIB-Datei aus dem Gerät verfügbar ist, folgende minimale MIB-Struktur als DIDACTUM-MIB.txt in das Zenoss-MIB-Verzeichnis kopieren und wie oben kompilieren:
-- ================================================================
-- DIDACTUM-MIB – Minimale MIB für Zenoss Import
-- Datei: DIDACTUM-MIB.txt
-- Für ältere Geräte: enterprises.46501
-- Für neuere Geräte: enterprises.39052 (OID anpassen)
-- ================================================================
DIDACTUM-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises
FROM SNMPv2-SMI
NOTIFICATION-TYPE
FROM SNMPv2-SMI;
didactum MODULE-IDENTITY
LAST-UPDATED "202401010000Z"
ORGANIZATION "Didactum Security GmbH"
CONTACT-INFO "support@didactum-security.com"
DESCRIPTION "Didactum Monitoring System MIB"
::= { enterprises 46501 }
sensorTable OBJECT-TYPE
SYNTAX SEQUENCE OF SensorEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "Tabelle aller angeschlossenen Sensoren"
::= { didactum 5 1 1 }
sensorEntry OBJECT-TYPE
SYNTAX SensorEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION "Einzelner Sensor-Eintrag"
INDEX { sensorIndex }
::= { sensorTable 1 }
SensorEntry ::= SEQUENCE {
sensorIndex Integer32,
sensorID Integer32,
sensorType Integer32,
sensorName OCTET STRING,
sensorStatus Integer32,
sensorValue Integer32
}
sensorIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
DESCRIPTION "Index" ::= { sensorEntry 1 }
sensorID OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
DESCRIPTION "Sensor ID" ::= { sensorEntry 2 }
sensorType OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
DESCRIPTION "Sensor-Typ" ::= { sensorEntry 3 }
sensorName OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current
DESCRIPTION "Sensor-Name" ::= { sensorEntry 5 }
sensorStatus OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
DESCRIPTION "0=OK 1=Alarm 2=Kein Signal" ::= { sensorEntry 6 }
sensorValue OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current
DESCRIPTION "Messwert (Temperatur: x10)" ::= { sensorEntry 7 }
didactumAlarmTrap NOTIFICATION-TYPE
OBJECTS { sensorName, sensorStatus, sensorValue }
STATUS current
DESCRIPTION "Alarm-Trap bei Sensor-Statusänderung"
::= { didactum 1 1 }
END
4. Device-Klasse und Didactum-Gerät anlegen
Schritt 1 – Device-Klasse anlegen
Zenoss Web UI → Infrastructure → Device Classes → Add Device Class Class Path: /Devices/Environmental/Didactum Description: Didactum Environmental Monitoring Devices
Schritt 2 – SNMP-Einstellungen der Device-Klasse setzen
Zenoss Web UI → Infrastructure → Device Classes → /Devices/Environmental/Didactum → Configuration Properties (zProperties) zSnmpCommunity: didactum_zenoss zSnmpVer: v2c zSnmpPort: 161 zSnmpTimeout: 5 zSnmpTries: 3 → Speichern
Schritt 3 – Didactum-Gerät hinzufügen
Zenoss Web UI → Infrastructure → Devices → Add Device Device Name / IP: 192.168.1.50 Device Class: /Devices/Environmental/Didactum Title: Didactum-Monitor-01 Collector: localhost (oder Remote-Collector falls vorhanden) → "Add" klicken → Zenoss startet automatisch Device-Modeling
Schritt 4 – Device-Modeling prüfen
Zenoss Web UI → Infrastructure → Devices → Didactum-Monitor-01 → Reiter "Details" → sysDescr: Didactum Monitoring System (wird automatisch aus SNMP ausgelesen) → sysUpTime, sysContact, sysLocation erscheinen nach erfolgreichem Modeling Falls Modeling fehlschlägt: → Zenoss CLI: zenmodeler run -d 192.168.1.50 → Log prüfen: tail -f /opt/zenoss/log/zenmodeler.log
5. Monitoring-Template mit Datasources und Thresholds anlegen
In Zenoss definiert ein Monitoring-Template vollständig, welche OIDs abgefragt (Datasources / Datapoints) und welche Schwellwerte überwacht (Thresholds) werden. Das Template wird der Device-Klasse /Devices/Environmental/Didactum zugewiesen und gilt automatisch für alle Geräte dieser Klasse.
Wichtig – Temperaturschwellwerte: Das Didactum-Gerät liefert Temperaturwerte als Rohwert × 10. 25,5 °C = OID-Wert 255. Alle Temperaturschwellen im Monitoring-Template müssen ebenfalls × 10 angegeben werden.
Schritt 1 – Neues Monitoring-Template anlegen
Zenoss Web UI → Advanced → Monitoring Templates → Add Template Template Name: DidactumSensors Device Class: /Devices/Environmental/Didactum Description: SNMP-Monitoring für Didactum Umweltsensoren → "Add" klicken
Schritt 2 – Datasources (OID-Abfragen) anlegen
Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors
→ Datasources → Add Datasource
-- ================================================================
-- Datasource 1: Temperatursensor Messwert (Sensor-ID 101001)
-- ================================================================
Name: temperature_value_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.7.101001
Component: (leer lassen)
Enabled: Ja
→ Speichern
Datapoint temperature_value_01_value:
RRD Type: GAUGE
Description: Temperatur Sensor 01 Rohwert x10 (235 = 23,5 Grad C)
-- ================================================================
-- Datasource 2: Temperatursensor Status
-- ================================================================
Name: temperature_status_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.6.101001
Enabled: Ja
Datapoint temperature_status_01_value:
RRD Type: GAUGE
Description: 0=OK, 1=Alarm, 2=Kein Signal
-- ================================================================
-- Datasource 3: Wassersensor / Leckage (Sensor-ID 107001)
-- ================================================================
Name: leakage_value_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.7.107001
Enabled: Ja
Datapoint leakage_value_01_value:
RRD Type: GAUGE
Description: 0=trocken/OK, 1=Wasser erkannt/CRITICAL
-- ================================================================
-- Datasource 4: Luftfeuchtigkeit (Sensor-ID 102001)
-- ================================================================
Name: humidity_value_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.7.102001
Enabled: Ja
Datapoint humidity_value_01_value:
RRD Type: GAUGE
Description: Luftfeuchtigkeit in %
-- ================================================================
-- Datasource 5: Türkontakt (Sensor-ID 104001)
-- ================================================================
Name: door_contact_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.7.104001
Enabled: Ja
Datapoint door_contact_01_value:
RRD Type: GAUGE
Description: 0=geschlossen/OK, 1=geöffnet/Warning
-- ================================================================
-- Datasource 6: Rauchmelder (Sensor-ID 106001)
-- ================================================================
Name: smoke_detector_01
Type: SNMP
OID: .1.3.6.1.4.1.46501.5.1.1.7.106001
Enabled: Ja
Datapoint smoke_detector_01_value:
RRD Type: GAUGE
Description: 0=kein Rauch/OK, 1=Alarm/CRITICALSchritt 3 – Thresholds (Schwellwerte) anlegen
Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors → Thresholds → Add Threshold -- ================================================================ -- Threshold 1: Temperatur Warning -- ================================================================ Name: Temperatur_Warning Type: MinMaxThreshold Datapoints: temperature_value_01_value Max Value: 280 (Rohwert 280 = 28,0 Grad C) Min Value: (leer) Severity: Warning Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 2: Temperatur Critical -- ================================================================ Name: Temperatur_Critical Type: MinMaxThreshold Datapoints: temperature_value_01_value Max Value: 350 (Rohwert 350 = 35,0 Grad C) Severity: Critical Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 3: Temperatur Sensor kein Signal -- ================================================================ Name: Temperatur_NoSignal Type: MinMaxThreshold Datapoints: temperature_status_01_value Max Value: 1 Severity: Warning Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 4: Leckage Critical -- ================================================================ Name: Leckage_Critical Type: MinMaxThreshold Datapoints: leakage_value_01_value Max Value: 0 (Alarm wenn Wert > 0, also ab 1) Severity: Critical Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 5: Luftfeuchtigkeit Warning -- ================================================================ Name: Humidity_Warning Type: MinMaxThreshold Datapoints: humidity_value_01_value Max Value: 80 Severity: Warning Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 6: Luftfeuchtigkeit Critical -- ================================================================ Name: Humidity_Critical Type: MinMaxThreshold Datapoints: humidity_value_01_value Max Value: 90 Severity: Critical Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 7: Türkontakt geöffnet -- ================================================================ Name: Door_Open_Warning Type: MinMaxThreshold Datapoints: door_contact_01_value Max Value: 0 (Alarm wenn Wert > 0) Severity: Warning Event Class: /Environmental/Didactum → Speichern -- ================================================================ -- Threshold 8: Rauchmelder Critical -- ================================================================ Name: Smoke_Critical Type: MinMaxThreshold Datapoints: smoke_detector_01_value Max Value: 0 (Alarm wenn Wert > 0) Severity: Critical Event Class: /Environmental/Didactum → Speichern
Schritt 4 – Template dem Gerät zuweisen und binden
Zenoss Web UI → Infrastructure → Devices → Didactum-Monitor-01 → Reiter "Monitoring Templates" → Template "DidactumSensors" erscheint (durch Device-Klassen-Zuweisung automatisch) → Falls nicht: "Add Template" → DidactumSensors wählen → Apply → Zenoss startet SNMP-Polling gemäß Template-Definition → Nach dem ersten Polling-Zyklus (Standard: 5 Minuten) erscheinen Graphen
6. Event-Klassen für Didactum-Alarme konfigurieren
Zenoss ordnet alle Ereignisse (Events) in Event-Klassen ein. Für Didactum wird eine eigene Event-Klasse angelegt, die Threshold-Alarme und SNMP-Trap-Events zusammenfasst und einheitlich behandelt.
Schritt 1 – Event-Klasse anlegen
Zenoss Web UI → Events → Event Classes → Add Event Class Class Path: /Environmental/Didactum Description: Didactum Environmental Monitoring Alarme
Schritt 2 – Event-Klassen-Mapping für SNMP-Traps anlegen
Zenoss Web UI → Events → Event Classes → /Environmental/Didactum
→ Event Class Mappings → Add Mapping
-- Mapping 1: Allgemeiner Didactum Alarm-Trap --
Mapping Name: DidactumAlarmTrap
Event Class: /Environmental/Didactum
Rule: oid.startswith(".1.3.6.1.4.1.46501.1.1")
Severity: Critical
Summary: Didactum Sensor-Alarm: ${evt/oid}
Message: Didactum SNMP-Trap von ${evt/device}: ${evt/summary}
→ Speichern
-- Mapping 2: Trap von neuerem Gerät (Enterprise OID 39052) --
Mapping Name: DidactumAlarmTrap_39052
Rule: oid.startswith(".1.3.6.1.4.1.39052.1.1")
Severity: Critical
Summary: Didactum Sensor-Alarm (39052): ${evt/oid}
→ SpeichernSchritt 3 – Event-Transforms konfigurieren (optional)
Zenoss Web UI → Events → Event Classes → /Environmental/Didactum → Transform
# Python-Transform: Severity nach Sensor-Typ anpassen
if "leakage" in evt.component.lower() or "smoke" in evt.component.lower():
evt.severity = 5 # Critical
elif "temperature" in evt.component.lower():
if int(evt.current) >= 350:
evt.severity = 5 # Critical
else:
evt.severity = 3 # Warning
→ Speichern7. SNMP-Trap-Empfang konfigurieren
Schritt 1 – zentrap-Daemon prüfen
Als zenoss-Benutzer auf dem Zenoss-Server: zenoss status | grep zentrap # Erwartetes Ergebnis: zentrap ... running Falls zentrap nicht läuft: zenoss start zentrap # oder: supervisorctl start zentrap (bei Zenoss 6.x / ZSD)
Schritt 2 – Trap-Community in Zenoss konfigurieren
Zenoss Web UI → Advanced → Settings → SNMP Traps Trap Port: 162 Community String: didactum_trap (muss mit Didactum-Gerät übereinstimmen) → Speichern → zentrap neu starten: zenoss restart zentrap
Schritt 3 – Trap-Weiterleitung im Didactum Web-Interface setzen
Didactum Web-Interface → Systemeinstellungen → SNMP → Trap-Ziele Trap Destination: 192.168.1.100 (IP des Zenoss-Servers) Trap Community: didactum_trap Trap Version: v2c Trap Port: 162 → Speichern
Schritt 4 – Trap-Empfang testen
Im Didactum Web-Interface Test-Trap auslösen: Systemeinstellungen → SNMP → "Test Trap senden" In Zenoss prüfen: Zenoss Web UI → Events → Event Console → Neues Event mit Device 192.168.1.50 erscheint → Event Class: /Environmental/Didactum → Severity: Critical → Summary: Didactum Sensor-Alarm zentrap-Log auf dem Server prüfen: tail -f /opt/zenoss/log/zentrap.log
8. Benachrichtigungen (Notifications) konfigurieren
Action anlegen (E-Mail)
Zenoss Web UI → Events → Triggers → Actions → Add Action
Action Name: Didactum_Email_Admin
Action Type: Email
Host (SMTP): mail.ihredomain.de
From: zenoss@ihredomain.de
To: admin@ihredomain.de
Subject: [Zenoss] Didactum Alarm: ${evt/device} – ${evt/summary}
Body:
Zeitpunkt: ${evt/firstTime}
Gerät: ${evt/device} (${evt/ipAddress})
Schwere: ${evt/severity}
Event Class: ${evt/eventClass}
Zusammenfassung: ${evt/summary}
Meldung: ${evt/message}
OID: ${evt/oid}
→ SpeichernTrigger anlegen
Zenoss Web UI → Events → Triggers → Add Trigger
Trigger Name: Didactum_Critical_Trigger
Enabled: Ja
Rule: (evt/eventClass).startswith("/Environmental/Didactum")
and evt/severity >= 4 (4=Error / 5=Critical)
→ SpeichernNotification anlegen und Trigger verknüpfen
Zenoss Web UI → Events → Triggers → Notifications → Add Notification Notification Name: Didactum_Sensor_Alert Action: Didactum_Email_Admin Trigger: Didactum_Critical_Trigger Delay: 0 Sekunden (sofort) Repeat: 300 Sekunden (alle 5 Minuten wiederholen solange Alarm aktiv) → Speichern Zweite Notification für Warning: Trigger: Didactum_Warning_Trigger (analog; evt/severity >= 3) Delay: 0 Sekunden Repeat: 600 Sekunden → Speichern
9. Graphen und Dashboard konfigurieren
Graph-Definition im Monitoring-Template anlegen
Zenoss Web UI → Advanced → Monitoring Templates → DidactumSensors → Graph Definitions
→ Add Graph Definition
-- Graph 1: Temperatur-Trend --
Graph Name: Temperatur Sensor 01
Units: Rohwert (÷10 = Grad C)
Graph Points:
- Datapoint: temperature_value_01_value
Legend: Temperatur (Rohwert x10)
Color: #e05050
Threshold Lines:
- 280 (Warning) / 350 (Critical)
→ Speichern
-- Graph 2: Luftfeuchtigkeit --
Graph Name: Luftfeuchtigkeit Sensor 01
Units: %
Graph Points:
- Datapoint: humidity_value_01_value
Legend: Luftfeuchtigkeit %
→ SpeichernDashboard-Portlets konfigurieren
Zenoss Web UI → Dashboard → Add Portlet
Portlet 1: Device Issues
Filter: Device Class = /Devices/Environmental/Didactum
Zeigt: Gerätestatus und aktive Events
Portlet 2: Event View
Filter: Event Class = /Environmental/Didactum
Severity: Warning und Critical
Zeigt: Alle aktiven Didactum-Alarme
Portlet 3: Network Map
Filter: /Devices/Environmental/Didactum
Zeigt: Didactum-Geräte mit Status-Farbkodierung
Portlet 4: Device Performance (Pro-Version)
Device: Didactum-Monitor-01
Template: DidactumSensors
Graph: Temperatur Sensor 0110. SNMP OID-Referenz für Didactum-Sensoren
Alle Didactum-OIDs beginnen mit .1.3.6.1.4.1.46501 (ältere Firmware) bzw. .1.3.6.1.4.1.39052 (neuere Modelle). Die Sensor-ID wird am Ende angehängt.
OID-Felder je Sensor
| Feld | OID-Suffix | Bedeutung | Beispiel (Sensor 101001) |
|---|---|---|---|
| Sensor-Index | .5.1.1.1.SENSOR_ID | Interner Index | .1.3.6.1.4.1.46501.5.1.1.1.101001 |
| Sensor-ID | .5.1.1.2.SENSOR_ID | Numerische Sensor-ID | .1.3.6.1.4.1.46501.5.1.1.2.101001 |
| Sensor-Typ | .5.1.1.3.SENSOR_ID | Typ-Kennziffer | .1.3.6.1.4.1.46501.5.1.1.3.101001 |
| Sensor-Name | .5.1.1.5.SENSOR_ID | Bezeichnung (String) | .1.3.6.1.4.1.46501.5.1.1.5.101001 |
| Sensor-Status | .5.1.1.6.SENSOR_ID | 0=OK, 1=Alarm, 2=Kein Signal | .1.3.6.1.4.1.46501.5.1.1.6.101001 |
| Sensor-Messwert | .5.1.1.7.SENSOR_ID | Aktueller Messwert | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
Sensortypen mit vollständigen OIDs und Zenoss-Threshold-Werten
| Sensortyp | Sensor-ID | OID Messwert | OID Status | Zenoss Threshold (Max Value) |
|---|---|---|---|---|
| Temperatursensor (digital) | 101001 | .1.3.6.1.4.1.46501.5.1.1.7.101001 | .1.3.6.1.4.1.46501.5.1.1.6.101001 | Warning Max 280 / Critical Max 350 (Rohwert × 10) |
| Temperatursensor (analog) | 201001 | .1.3.6.1.4.1.39052.5.2.1.7.201001 | .1.3.6.1.4.1.39052.5.2.1.6.201001 | Warning Max 280 / Critical Max 350 (× 10) |
| Wassersensor / Leckage | 107001 | .1.3.6.1.4.1.46501.5.1.1.7.107001 | .1.3.6.1.4.1.46501.5.1.1.6.107001 | Critical Max 0 (Alarm wenn Wert > 0) |
| Luftfeuchtigkeit | 102001 | .1.3.6.1.4.1.46501.5.1.1.7.102001 | .1.3.6.1.4.1.46501.5.1.1.6.102001 | Warning Max 80 / Critical Max 90 (direkt %) |
| Potentialfreier Kontakt | 101003 | .1.3.6.1.4.1.39052.5.1.1.7.101003 | .1.3.6.1.4.1.39052.5.1.1.6.101003 | Warning Max 0 (Alarm wenn Wert > 0) |
| Türkontakt | 104001 | .1.3.6.1.4.1.46501.5.1.1.7.104001 | .1.3.6.1.4.1.46501.5.1.1.6.104001 | Warning Max 0 (Alarm wenn Wert > 0) |
| Rauchmelder | 106001 | .1.3.6.1.4.1.46501.5.1.1.7.106001 | .1.3.6.1.4.1.46501.5.1.1.6.106001 | Critical Max 0 (Alarm wenn Wert > 0) |
Sensor-ID ermitteln: Im Didactum Web-Interface unter Systembaum → Sensor auswählen → Details. Die angezeigte Sensor-ID wird als letztes Element an die OID angehängt. Bei mehreren gleichartigen Sensoren erhöht sich die letzte Stelle: 101001, 101002, 101003 usw.
Zenoss Threshold-Logik: MinMaxThreshold löst einen Alarm aus, wenn der Wert den Max Value überschreitet. Für binäre Sensoren (Leckage, Türkontakt, Rauch) daher Max Value = 0 setzen: Alarm sobald Wert > 0. Für Temperatur: Max Value = 280 (Warning) bzw. 350 (Critical) als Rohwert × 10.
11. Nützliche Zenoss-CLI-Befehle
Daemon-Status prüfen
su - zenoss zenoss status # Relevante Daemons für Didactum-Integration: # zenperfsnmp – SNMP-Polling # zentrap – SNMP-Trap-Empfang # zenactions – E-Mail-Benachrichtigungen # zenmodeler – Device-Modeling
SNMP-Verbindung testen
# snmpwalk – alle Sensor-Werte auflisten
snmpwalk -v 2c -c didactum_zenoss 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1
# snmpget – Temperaturwert abfragen (Rohwert ÷ 10 = °C)
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1.7.101001
# Erwartete Ausgabe: INTEGER: 235 (= 23,5 °C)
# snmpget – Leckage-Status
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1.7.107001
# Erwartete Ausgabe (trocken): INTEGER: 0
# snmpget – Sensor-Status
snmpget -v 2c -c didactum_zenoss 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1.6.101001
# Erwartete Ausgabe (OK): INTEGER: 0
Device-Modeling manuell anstoßen
zenmodeler run -d 192.168.1.50 --debug tail -f /opt/zenoss/log/zenmodeler.log
SNMP-Polling-Status prüfen
zenperfsnmp run -d 192.168.1.50 --debug tail -f /opt/zenoss/log/zenperfsnmp.log
MIB manuell laden
zenmib run /opt/zenoss/share/mibs/site/didactum.mib --debug
12. Fehlersuche und Lösungen
| Problem | Ursache & Lösung |
|---|---|
| Device-Modeling schlägt fehl | SNMP auf dem Didactum-Gerät nicht aktiviert; Community String in zProperties falsch; UDP-Port 161 durch Firewall blockiert → snmpwalk direkt vom Zenoss-Server aus testen; zProperties der Device-Klasse prüfen |
| zenmib meldet Fehler beim MIB-Import | Abhängige MIBs fehlen (SNMPv2-SMI, RFC1213-MIB) → Basis-MIBs aus /opt/zenoss/share/mibs/ referenzieren; alternativ DIDACTUM-MIB.txt aus Abschnitt 3 verwenden; zenmib run --debug für Details |
| OID liefert „No Such Object" | Falsche Enterprise OID (46501 vs. 39052) → sysObjectID per snmpwalk prüfen: snmpwalk -v 2c -c COMMUNITY IP .1.3.6.1.2.1.1.2.0 |
| Temperaturwert erscheint 10× zu hoch | Kein Fehler – Didactum liefert Rohwert × 10. Zenoss MinMaxThreshold Max Value als × 10-Wert setzen (28 °C = 280). Graph-Label auf ÷10 = °C anpassen. |
| Threshold löst keinen Event aus | MinMaxThreshold-Logik: Alarm wenn Wert > Max Value. Für binäre Sensoren Max Value = 0 setzen. zenperfsnmp läuft? → zenoss status | grep zenperfsnmp |
| SNMP-Traps kommen nicht in der Event Console an | zentrap-Daemon nicht aktiv → zenoss start zentrap; Trap-Ziel-IP im Didactum-Gerät falsch; UDP-Port 162 durch Firewall blockiert; Trap-Community stimmt nicht überein → tail -f /opt/zenoss/log/zentrap.log |
| Trap-Event ohne Event-Klassen-Mapping | Event landet in /Unknown statt /Environmental/Didactum → Event Class Mapping für Trap-OID .1.3.6.1.4.1.46501.1.1 anlegen (Abschnitt 6) |
| Keine E-Mail bei Alarm | zenactions-Daemon nicht aktiv; SMTP-Konfiguration fehlt; Trigger-Regel trifft nicht zu; Notification nicht aktiv → zenoss status | grep zenactions; Trigger-Regel in der Web UI testen |
| Graphen zeigen keine Daten | Erstes Polling-Intervall (Standard: 5 Minuten) noch nicht abgelaufen; Datasource-OID falsch → zenperfsnmp-Log prüfen; Datasource-OID im Template verifizieren |
| Monitoring-Template wird nicht angewendet | Template der falschen Device-Klasse zugewiesen; Gerät in falscher Device-Klasse → Devices → Didactum-Monitor-01 → Device Class prüfen; Template explizit binden |
13. Abschluss-Checkliste
Didactum-Gerät
- SNMP aktiviert (v2c)
- Community String gesetzt (nicht „public"): didactum_zenoss
- Trap-Ziel auf IP des Zenoss-Servers gesetzt
- Trap-Community gesetzt: didactum_trap
- MIB-Datei heruntergeladen (didactum.mib)
- snmpwalk vom Zenoss-Server erfolgreich
Zenoss Server
- DIDACTUM-MIB in /opt/zenoss/share/mibs/site/ kopiert und per zenmib kompiliert
- MIB-Auflösung in der Zenoss Web UI unter Advanced → MIBs verifiziert
- Device-Klasse /Devices/Environmental/Didactum angelegt
- zProperties der Device-Klasse gesetzt (Community, Version, Port)
- Gerät Didactum-Monitor-01 angelegt und Device-Modeling erfolgreich
- Monitoring-Template DidactumSensors angelegt
- Alle 6 Datasources (OIDs) im Template angelegt
- Alle 8 Thresholds im Template angelegt
- Temperaturschwellen als Rohwert × 10 gesetzt (Warning Max 280 / Critical Max 350)
- Binäre Sensor-Thresholds mit Max Value 0 gesetzt (Alarm wenn Wert > 0)
- Template der Device-Klasse zugewiesen und am Gerät gebunden
- Event-Klasse /Environmental/Didactum angelegt
- Event-Klassen-Mappings für Trap-OIDs angelegt
- zentrap-Daemon aktiv (UDP-Port 162)
- Trap-Community in Zenoss Advanced → Settings gesetzt
- Trigger und Notification für E-Mail-Benachrichtigung konfiguriert
- zenactions-Daemon aktiv
Tests & Verifizierung
- Device-Modeling abgeschlossen (sysDescr erscheint in Device-Details)
- Erste Graphen-Daten nach einem Polling-Zyklus (5 Minuten) vorhanden
- Temperatur-Graph zeigt Rohwerte (÷10 = °C)
- Test-Trap über Didactum Web-Interface ausgelöst → Event in Event Console erscheint
- Event-Klasse: /Environmental/Didactum (durch Mapping korrekt zugeordnet)
- E-Mail bei Test-Alarm empfangen
- Dashboard-Portlets zeigen Didactum-Gerätestatus und Events
- Threshold-Test: snmpwalk bestätigt Rohwert; Schwellwert manuell über Testwert setzen → Event wird erzeugt