Didactum Monitoring & Monitorix Integration
Vollständige Schritt-für-Schritt-Anleitung zur Einbindung von Didactum Monitoring-Geräten und Sensoren in Monitorix via SNMP – inklusive SNMP-Test, Shell-Skripte, ambsens.pm-Konfiguration, MIB-Import-Vorlage, Alert-Konfiguration und Fehlerbehebung.
Produkthinweis: Monitorix ist ein leichtgewichtiges Open-Source-System-Monitoring-Tool für Linux. Es verfügt über kein natives SNMP-Modul, aber das Ambient-Sensor-Modul (ambsens.pm) kann beliebige Shell-Befehle als Datenquelle nutzen – ideal für SNMP-Polling via snmpget. Diese Anleitung deckt die vollständige Integration ab.
- Software: Monitorix ≥ 3.9
- 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
Monitorix-Host
- Monitorix ≥ 3.9 installiert (Debian/Ubuntu/RHEL)
- Paket snmp und bc installiert
- UDP-Port 161 ausgehend zum Didactum-Gerät geöffnet
- Netzwerkzugang zum Didactum-Gerät vorhanden
Didactum-Gerät
- Monitoring System 100, 500, 500 II oder 550T
- SNMP aktiviert (v2c empfohlen)
- Gerät per ICMP vom Monitorix-Host erreichbar
- MIB-Datei im Web-Interface verfügbar
Architektur & Datenfluss
[Monitorix Host] [Didactum Monitoring System]
IP: 192.168.1.10 IP: 192.168.1.50
ambsens.pm (alle 5 Min.)
Shell-Skript: didactum_sensor.sh
-- SNMP Polling UDP 161 (snmpget) -->
<-- INTEGER-Wert (z.B. 215 = 21,5 °C) ------
Benötigte Pakete installieren
# Debian / Ubuntu sudo apt install snmp snmp-mibs-downloader bc monitorix # RHEL / Rocky / AlmaLinux sudo dnf install net-snmp-utils bc monitorix
2. SNMP auf dem Didactum-Gerät aktivieren
Schritt 1 – Web-Interface öffnen
Im Browser aufrufen: 192.168.1.50 (IP des Didactum-Geräts anpassen)
Schritt 2 – SNMP-Einstellungen aufrufen
Preferences → SNMP
Schritt 3 – Folgende Werte eintragen
| Feld im Didactum Web-Interface | Wert |
|---|---|
| SNMP aktivieren | Aktiviert |
| SNMP-Version | v2c (empfohlen) |
| Community String | didactum_mon (nicht „public“ verwenden!) |
| SNMP-Port | 161 |
Einstellungen speichern. SNMP-Verbindung vorab vom Monitorix-Host testen:
snmpwalk -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1
MIB-Datei herunterladen und bereitstellen
# Im Didactum Web-Interface: # Preferences → SNMP → Download MIB file # Heruntergeladene MIB auf den Monitorix-Host kopieren sudo cp DIDACTUM-MIB.mib /usr/share/snmp/mibs/ # MIB-Nutzung aktivieren sudo sed -i 's/^mibs :#/mibs :/' /etc/snmp/snmp.conf
3. SNMP OID-Referenz
Alle Didactum-OIDs beginnen mit .1.3.6.1.4.1.46501 (ältere/aktuelle Firmware). Die Sensor-ID wird am Ende angehängt.
OID-Felder je Sensor
| Feld | Bedeutung | Beispiel |
|---|---|---|
| .1.x.SENSOR_ID | Sensor-ID | .1.3.6.1.4.1.46501.5.1.1.1.101001 |
| .5.x.SENSOR_ID | Sensor-Name (String) | .1.3.6.1.4.1.46501.5.1.1.5.101001 |
| .6.x.SENSOR_ID | Status (0=Normal, 1=Warnung, 2=Kritisch, 3=Fehler) | .1.3.6.1.4.1.46501.5.1.1.6.101001 |
| .7.x.SENSOR_ID | Messwert (aktuell) | .1.3.6.1.4.1.46501.5.1.1.7.101001 |
Sensortypen mit OIDs und Skalierung
| Sensortyp | Sensor-ID | OID Messwert | Skalierung | Beispiel |
|---|---|---|---|---|
| Temperatursensor Port 1 | 101001 | .1.3.6.1.4.1.46501.5.1.1.7.101001 | Rohwert ÷ 10 = °C | 215 = 21,5 °C |
| Temperatursensor Port 2 | 101002 | .1.3.6.1.4.1.46501.5.1.1.7.101002 | Rohwert ÷ 10 = °C | 235 = 23,5 °C |
| Luftfeuchtesensor Port 1 | 102001 | .1.3.6.1.4.1.46501.5.1.1.7.102001 | Direktwert = %rH | 65 = 65 %rH |
| Kombisensor Temperatur (CAN) | 103001 | .1.3.6.1.4.1.46501.5.1.1.7.103001 | Rohwert ÷ 10 = °C | 220 = 22,0 °C |
| Kombisensor Luftfeuchte (CAN) | 103002 | .1.3.6.1.4.1.46501.5.1.1.7.103002 | Direktwert = %rH | 60 = 60 %rH |
| Türkontakt | 104001 | .1.3.6.1.4.1.46501.5.1.1.7.104001 | 0 = geschlossen, 1 = geöffnet | – |
| Rauchmelder | 106001 | .1.3.6.1.4.1.46501.5.1.1.7.106001 | 0 = OK, 1 = Alarm | – |
| Wassersensor / Leckage (Spot) | 107001 | .1.3.6.1.4.1.46501.5.1.1.7.107001 | 0 = trocken, 1 = Wasser erkannt | – |
| Wassersensor / Leckage (Kabel) | 107002 | .1.3.6.1.4.1.46501.5.1.1.7.107002 | 0 = trocken, 1 = Wasser erkannt | – |
| Systemzustand (Gerät) | – | .1.3.6.1.4.1.46501.1.1.0 | 0 = OK, 1 = Warnung, 2 = Kritisch | – |
Sensor-ID herausfinden: Im Didactum Web-Interface unter Systembaum → Sensor auswählen → Details. Diese ID wird ans Ende der OID angehängt.
Alle Sensor-IDs per snmpwalk ermitteln:
# Alle Sensornamen auflisten snmpwalk -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.5 # Alle Messwerte auflisten snmpwalk -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7
4. SNMP-Abfrage testen
Bevor Monitorix konfiguriert wird, sollten einzelne OIDs manuell getestet werden.
# Temperaturwert von Sensor 101001 abfragen snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001 # Erwartete Ausgabe (Beispiel): # iso.3.6.1.4.1.46501.5.1.1.7.101001 = INTEGER: 215 # Auswertung: 215 / 10 = 21,5 Grad Celsius # Statuswert abfragen (0=Normal, 1=Warnung, 2=Kritisch) snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.6.101001 # Leckage-Sensor abfragen (0=trocken, 1=Wasser erkannt) snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.107001
Fehlermeldung „Timeout: No Response“?
Prüfen Sie: Firewall (UDP Port 161 offen?), Community String korrekt, SNMP im Didactum Web-Interface aktiviert.
5. Shell-Skript für Monitorix erstellen
Das ambsens.pm-Modul erwartet, dass ein Shell-Befehl einen einzelnen numerischen Wert zurückgibt. Erstellen Sie folgendes universelles Wrapper-Skript:
/usr/local/bin/didactum_sensor.sh
#!/bin/bash
# Universelles Didactum-Sensor-Skript fuer Monitorix ambsens.pm
# Verwendung: didactum_sensor.sh [temp1|temp2|hum1|leak1|leak2|door1|smoke1]
DIDACTUM_IP="192.168.1.50"
COMMUNITY="didactum_mon"
case "$1" in
temp1) OID=".1.3.6.1.4.1.46501.5.1.1.7.101001"; SCALE=10 ;;
temp2) OID=".1.3.6.1.4.1.46501.5.1.1.7.101002"; SCALE=10 ;;
hum1) OID=".1.3.6.1.4.1.46501.5.1.1.7.102001"; SCALE=1 ;;
leak1) OID=".1.3.6.1.4.1.46501.5.1.1.7.107001"; SCALE=1 ;;
leak2) OID=".1.3.6.1.4.1.46501.5.1.1.7.107002"; SCALE=1 ;;
door1) OID=".1.3.6.1.4.1.46501.5.1.1.7.104001"; SCALE=1 ;;
smoke1) OID=".1.3.6.1.4.1.46501.5.1.1.7.106001"; SCALE=1 ;;
*) echo "0"; exit 1 ;;
esac
VALUE=$(snmpget -v2c -c ${COMMUNITY} -Oqv ${DIDACTUM_IP} ${OID} 2>/dev/null)
[ -z "$VALUE" ] && echo "0" && exit 1
if [ "$SCALE" -gt 1 ]; then
echo "scale=1; ${VALUE} / ${SCALE}" | bc
else
echo "${VALUE}"
fi
# Skript ausfuehrbar machen und testen sudo chmod +x /usr/local/bin/didactum_sensor.sh /usr/local/bin/didactum_sensor.sh temp1 # Erwartete Ausgabe: 21.5 /usr/local/bin/didactum_sensor.sh leak1 # Erwartete Ausgabe: 0
6. Monitorix konfigurieren (ambsens.pm)
Schritt 1 – Modul aktivieren
In /etc/monitorix/monitorix.conf im Abschnitt <graph_enable>:
<graph_enable>
...
ambsens = y
...
</graph_enable>
Schritt 2 – Grafiktitel setzen
<graph_name>
ambsens = Didactum_Sensoren
</graph_name>
<graph_title>
ambsens = Didactum Umgebungsueberwachung
</graph_title>
Schritt 3 – ambsens-Block konfigurieren
Neue Datei anlegen: /etc/monitorix/conf.d/didactum.conf
# -------------------------------------------------------
# Didactum Monitoring Integration fuer Monitorix ambsens.pm
# Monitorix >= 3.9 erforderlich
# -------------------------------------------------------
<ambsens>
# Sensor-Gruppen (kommagetrennte Liste)
list = Temperatur, Luftfeuchte, Leckage, Kontakte
# Sensor-Namen je Gruppe
<desc>
0 = Serverraum Nord, Serverraum Sued, Rack 3
1 = Feuchte Serverraum, Feuchte Keller
2 = Leckage Unterflur, Leckage Klimaanlage
3 = Tuerkontakt, Rauchmelder
</desc>
# Shell-Befehle je Sensor (Gruppe_Sensorindex)
<cmd>
# Gruppe 0: Temperatursensoren
0_0 = /usr/local/bin/didactum_sensor.sh temp1
0_1 = /usr/local/bin/didactum_sensor.sh temp2
# Gruppe 1: Luftfeuchtesensoren
1_0 = /usr/local/bin/didactum_sensor.sh hum1
# Gruppe 2: Leckage-Sensoren
2_0 = /usr/local/bin/didactum_sensor.sh leak1
2_1 = /usr/local/bin/didactum_sensor.sh leak2
# Gruppe 3: Kontaktsensoren
3_0 = /usr/local/bin/didactum_sensor.sh door1
3_1 = /usr/local/bin/didactum_sensor.sh smoke1
</cmd>
# Anzeigeeinheiten je Gruppe
<unit>
0 = Grad C
1 = %
2 = Status
3 = Status
</unit>
# Wertebereiche fuer RRD-Graphen (min, max)
<limit>
0 = -10, 60
1 = 0, 100
2 = 0, 1
3 = 0, 1
</limit>
# Alarmierung: Schwelle, Intervall (Sek.), Skript
<alerts>
0_0 = 30, 300, /usr/local/bin/didactum-alert.sh
0_1 = 30, 300, /usr/local/bin/didactum-alert.sh
2_0 = 1, 60, /usr/local/bin/didactum-alert.sh
2_1 = 1, 60, /usr/local/bin/didactum-alert.sh
3_1 = 1, 60, /usr/local/bin/didactum-alert.sh
</alerts>
graphs_per_row = 2
</ambsens>
Schritt 4 – Monitorix neu starten
# Konfiguration pruefen sudo monitorix --check-config # Dienst neu starten sudo systemctl restart monitorix # Logs beobachten sudo journalctl -u monitorix -f
Hinweis:
Nach dem ersten Start kann es bis zu 5 Minuten dauern, bevor Graphen erscheinen – Monitorix muss zunächst genügend Datenpunkte in der RRD-Datenbank sammeln.
7. MIB-Import-Konfiguration (fertige Vorlage)
Diese MIB-Datei kann direkt in iReasoning MIB Browser, PRTG, Zabbix oder Nagios importiert werden. Als DIDACTUM-ENV-MIB.mib speichern.
-- ============================================================
-- DIDACTUM-ENV-MIB
-- Vereinfachte MIB-Vorlage fuer Umgebungssensoren
-- Enterprise OID: 1.3.6.1.4.1.46501
-- ============================================================
DIDACTUM-ENV-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises
FROM SNMPv2-SMI
DisplayString
FROM SNMPv2-TC;
didactum MODULE-IDENTITY
LAST-UPDATED "202401010000Z"
ORGANIZATION "Didactum Security GmbH"
CONTACT-INFO "support@didactum-security.com"
DESCRIPTION "MIB fuer Didactum Umgebungsueberwachungssysteme"
::= { enterprises 46501 }
didactumSensors OBJECT IDENTIFIER ::= { didactum 5 }
didactumSensorTable OBJECT IDENTIFIER ::= { didactumSensors 1 }
didactumSensorEntry OBJECT IDENTIFIER ::= { didactumSensorTable 1 }
sensorID OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Eindeutige Sensor-ID"
::= { didactumSensorEntry 1 }
sensorName OBJECT-TYPE
SYNTAX DisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Bezeichnung des Sensors (konfigurierbar im WebGUI)"
::= { didactumSensorEntry 5 }
sensorStatus OBJECT-TYPE
SYNTAX Integer32 (0..3)
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Status: 0=Normal 1=Warnung 2=Kritisch 3=Fehler"
::= { didactumSensorEntry 6 }
sensorValue OBJECT-TYPE
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "Messwert: Temp/Hum Rohwert div 10, Leckage 0 oder 1"
::= { didactumSensorEntry 7 }
-- Haeufige OIDs:
-- Temperatursensor Port 1: .1.3.6.1.4.1.46501.5.1.1.7.101001
-- Temperatursensor Port 2: .1.3.6.1.4.1.46501.5.1.1.7.101002
-- Luftfeuchte Port 1: .1.3.6.1.4.1.46501.5.1.1.7.102001
-- Kombisensor Temp: .1.3.6.1.4.1.46501.5.1.1.7.103001
-- Kombisensor Hum: .1.3.6.1.4.1.46501.5.1.1.7.103002
-- Leckage Spot: .1.3.6.1.4.1.46501.5.1.1.7.107001
-- Leckage Kabel: .1.3.6.1.4.1.46501.5.1.1.7.107002
-- Tuerkonakt: .1.3.6.1.4.1.46501.5.1.1.7.104001
-- Rauchmelder: .1.3.6.1.4.1.46501.5.1.1.7.106001
-- Systemstatus: .1.3.6.1.4.1.46501.1.1.0
END
Net-SNMP Konfiguration
# /etc/snmp/snmp.conf mibdirs /usr/share/snmp/mibs:/etc/snmp/mibs mibs ALL
# Mit symbolischen Namen abfragen (nach MIB-Import) snmpget -v2c -c didactum_mon 192.168.1.50 DIDACTUM-ENV-MIB::sensorValue.101001 # Alternativ numerische OID -- funktioniert immer ohne MIB-Import snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
8. Alert-Konfiguration
Monitorix führt bei Schwellenwertüberschreitung ein externes Skript aus. Die Parameter werden als Argumente übergeben.
Empfohlene Schwellenwerte je Sensortyp
| Sensor / Event | Schwellenwert (ambsens-Konfiguration) | Empfohlenes Intervall |
|---|---|---|
| Temperatur > 28 °C | 28 (nach Skalierung durch Skript) | 300 Sekunden |
| Temperatur > 35 °C (kritisch) | 35 | 300 Sekunden |
| Leckage erkannt (Wert = 1) | 0.5 (ab Wert 1 = Alarm) | 60 Sekunden |
| Rauchmelder (Wert = 1) | 0.5 | 60 Sekunden |
| Türkontakt geöffnet (Wert = 1) | 0.5 | 60 Sekunden |
| Luftfeuchtigkeit > 80 % | 80 | 300 Sekunden |
/usr/local/bin/didactum-alert.sh
#!/bin/bash
# Monitorix Alert-Skript fuer Didactum Sensoren
# Parameter: $1=Zeitintervall $2=Schwelle $3=aktueller Wert $4=Richtung
INTERVAL=$1
THRESHOLD=$2
VALUE=$3
DIRECTION=$4
TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
LOGFILE="/var/log/didactum-alerts.log"
MAIL_TO="admin@ihredomain.de"
echo "[${TIMESTAMP}] ALARM! Wert=${VALUE} Schwelle=${THRESHOLD} Richtung=${DIRECTION}" >> ${LOGFILE}
echo "DIDACTUM SENSOR ALARM
Zeitpunkt: ${TIMESTAMP}
Sensor-Wert: ${VALUE}
Schwelle: ${THRESHOLD}
Richtung: ${DIRECTION}
Bitte sofort pruefen!" | mail -s "[ALARM] Didactum Sensor - Serverraum" ${MAIL_TO}
exit 0
sudo chmod +x /usr/local/bin/didactum-alert.sh
9. Test & Fehlerbehebung
SNMP-Verbindung testen
# Vom Monitorix-Host aus: snmpwalk -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1 # Temperaturwert (Rohwert / 10 = Grad Celsius) snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001 # Leckage-Status (0=trocken, 1=Wasser) snmpget -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.107001 # Skript manuell testen /usr/local/bin/didactum_sensor.sh temp1 /usr/local/bin/didactum_sensor.sh leak1
Fehlermeldungen und Lösungen
| Problem | Ursache & Lösung |
|---|---|
| Timeout / No Response | Community String falsch; SNMP am Didactum nicht aktiv; UDP 161 blockiert → snmpwalk testen |
| snmpget: Unknown OID | MIB nicht geladen → numerische OID verwenden oder MIB in /usr/share/snmp/mibs/ ablegen |
| Keine Graphen in Monitorix | Zu wenige Datenpunkte oder Konfigurationsfehler → journalctl -u monitorix -f beobachten, 5–10 Min. warten |
| Falscher Temperaturwert (10× zu hoch) | Skalierung vergessen → Skript gibt Rohwert aus, bc-Berechnung im Skript prüfen |
| Leckage zeigt immer 0 | Falsche Sensor-ID → snmpwalk ausführen und korrekte OID ermitteln |
| Skript hat keine Berechtigung | Monitorix läuft als anderer User → chmod +x und ggf. sudo-Regel anlegen |
| RRD-Daten fehlen nach Neukonfiguration | RRD-Datei neu erstellen → rm /var/lib/monitorix/ambsens.rrd und Monitorix neu starten |
Monitorix Logs einsehen
# Monitorix-Status sudo systemctl status monitorix # Live-Logs sudo journalctl -u monitorix -n 50 # Alle Sensoren auf einen Blick snmpwalk -v2c -c didactum_mon 192.168.1.50 .1.3.6.1.4.1.46501.5 # RRD-Datenbank pruefen rrdtool info /var/lib/monitorix/ambsens.rrd | head -30
10. Abschluss-Checkliste
Didactum-Gerät
- SNMP aktiviert (v2c oder v3)
- Community String gesetzt (nicht „public“): didactum_mon
- Gerät per Ping vom Monitorix-Host erreichbar
- MIB-Datei heruntergeladen und in /usr/share/snmp/mibs/ abgelegt
- snmpwalk vom Monitorix-Host erfolgreich
Shell-Skript
- /usr/local/bin/didactum_sensor.sh angelegt
- Skript ist ausführbar (chmod +x)
- Manueller Aufruf liefert korrekte Zahlenwerte
- IP-Adresse und Community String im Skript angepasst
Monitorix-Konfiguration
- ambsens = y in graph_enable gesetzt
- /etc/monitorix/conf.d/didactum.conf angelegt
- Sensor-Gruppen und Shell-Befehle konfiguriert
- Monitorix-Dienst neu gestartet
- Graphen erscheinen im Web-Interface nach 5–10 Minuten
Alerting & Benachrichtigung
- Alert-Skript /usr/local/bin/didactum-alert.sh angelegt und ausführbar
- E-Mail-Adresse im Alert-Skript angepasst
- Schwellenwerte in <alerts>-Block konfiguriert
- Test-Alarm ausgelöst und E-Mail empfangen