Didactum Monitoring und collectd Integration
Vollständige Schritt-für-Schritt-Anleitung zur Einbindung von Didactum Monitoring-Geräten und Sensoren in collectd via SNMP – inklusive Plugin-Konfiguration, RRDtool-Ausgabe, Grafana-Anbindung, Threshold-Alarme und InfluxDB-Integration.
- Software: collectd 5.x (Ubuntu / Debian)
- Plugin: SNMP Plugin (collectd-snmp)
- Ausgabe: RRDtool, InfluxDB oder Graphite (wahlweise)
- Visualisierung: Grafana (empfohlen)
- Geräte: Didactum Monitoring System 100T / 300T / 500T / 550T
- Sensoren: Temperatur, Leckage, Luftfeuchtigkeit, Türkontakt, Rauch
1. Voraussetzungen und Systemüberblick
collectd-Server
- Ubuntu 20.04 / 22.04 LTS oder Debian 11/12
- collectd 5.x installiert
- Pakete: collectd, collectd-utils, snmp, snmp-mibs-downloader
- UDP-Port 161 ausgehend für SNMP-Polling geöffnet
- Netzwerkzugang zum Didactum-Gerät
Didactum-Gerät
- Monitoring System 100T, 300T, 500T oder 550T
- SNMP aktiviert (v1 oder v2c – collectd-snmp unterstützt kein v3 nativ)
- MIB-Datei im Web-Interface verfügbar zum Download
Architektur & Datenfluss
[Didactum Monitoring System]
IP: 192.168.1.50
|
| SNMP Polling (UDP 161) alle 60 Sekunden
v
[collectd Daemon]
/etc/collectd/collectd.conf
|
|-- RRDtool --> /var/lib/collectd/rrd/ (Datei-Speicherung)
|-- InfluxDB --> localhost (Zeitreihen-DB)
|-- Graphite --> localhost:2003 (alternativ)
v
[Grafana Dashboard]
localhost
Wichtige collectd-Verzeichnisse
/etc/collectd/collectd.conf <-- Hauptkonfiguration /etc/collectd/collectd.conf.d/ <-- Modulare Konfigurationsdateien /var/lib/collectd/rrd/ <-- RRD-Datenbankdateien /usr/lib/collectd/ <-- Plugin-Binaries /usr/share/doc/collectd-core/ <-- Beispielkonfigurationen
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
Systemeinstellungen → SNMP
Schritt 3 – Folgende Werte eintragen
| Feld im Didactum Web-Interface | Wert |
|---|---|
| SNMP aktivieren | Aktiviert |
| SNMP-Version | v2c (collectd-snmp unterstützt v1 und v2c) |
| Community String | didactum_collectd (nicht „public" verwenden!) |
| SNMP-Port | 161 |
| Trap-Empfänger IP | 192.168.1.10 (IP des collectd-Servers, optional) |
| Trap-Port | 162 |
Hinweis:
Das collectd SNMP-Plugin unterstützt nativ nur SNMPv1 und v2c. Für SNMPv3 muss ein externes Wrapper-Skript über das exec-Plugin genutzt werden.
3. collectd installieren
Schritt 1 – Pakete installieren
sudo apt update
sudo apt install -y collectd collectd-utils \
snmp snmp-mibs-downloader \
librrd-dev rrdtool
Schritt 2 – collectd-Version prüfen
collectd -h | head -5 # oder: dpkg -l collectd
Schritt 3 – collectd-Dienst beim Systemstart aktivieren
sudo systemctl enable collectd sudo systemctl start collectd sudo systemctl status collectd
4. MIB-Datei installieren und SNMP testen
Schritt 1 – MIB-Datei aus dem Didactum Web-Interface laden
Systemeinstellungen → SNMP → "MIB-Datei herunterladen" → didactum.mib
Schritt 2 – MIB auf dem collectd-Server installieren
sudo cp didactum.mib /usr/share/snmp/mibs/ # SNMP-Konfiguration für MIB-Nutzung echo "mibdirs /usr/share/snmp/mibs" | sudo tee -a /etc/snmp/snmp.conf echo "mibs ALL" | sudo tee -a /etc/snmp/snmp.conf
Schritt 3 – SNMP-Verbindung testen
# Alle Sensorwerte auflisten
snmpwalk -v 2c -c didactum_collectd 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1
# Einzelnen Temperaturwert abfragen (Rohwert ÷ 10 = Grad Celsius)
snmpget -v 2c -c didactum_collectd 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1.7.101001
# Leckage-Status abfragen (0=trocken, 1=Wasser erkannt)
snmpget -v 2c -c didactum_collectd 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1.7.107001
Erscheinen Werte ohne Fehlermeldung, ist die SNMP-Verbindung bereit für collectd.
5. SNMP-Plugin konfigurieren
Schritt 1 – Konfigurationsdatei für Didactum anlegen
sudo nano /etc/collectd/collectd.conf.d/didactum-snmp.conf
Schritt 2 – Folgenden Inhalt eintragen
# ================================================================
# collectd SNMP-Plugin – Didactum Monitoring System
# Datei: /etc/collectd/collectd.conf.d/didactum-snmp.conf
# ================================================================
LoadPlugin snmp
<Plugin snmp>
# --------------------------------------------------------------
# DATA-Blöcke: Definition der abzufragenden Messwerte
# Diese Blöcke beschreiben WAS abgefragt wird.
# Der Host-Block legt fest, WO abgefragt wird.
# --------------------------------------------------------------
# --- Temperatursensor (digital, Sensor-ID 101001) -------------
# Scale 0.1: Rohwert ÷ 10 = Grad Celsius (235 = 23,5 °C)
<Data "didactum_temp_01">
Type "temperature"
Table false
Instance "sensor_temperatur_01"
Values ".1.3.6.1.4.1.46501.5.1.1.7.101001"
Scale 0.1
</Data>
# --- Temperatursensor-Status (0=OK, 1=Alarm, 2=Kein Signal) --
<Data "didactum_temp_status_01">
Type "gauge"
Table false
Instance "sensor_temp_status_01"
Values ".1.3.6.1.4.1.46501.5.1.1.6.101001"
</Data>
# --- Leckagesensor (0=trocken, 1=Wasser erkannt) --------------
<Data "didactum_leak_01">
Type "gauge"
Table false
Instance "sensor_leckage_01"
Values ".1.3.6.1.4.1.46501.5.1.1.7.107001"
</Data>
# --- Leckagesensor-Status -------------------------------------
<Data "didactum_leak_status_01">
Type "gauge"
Table false
Instance "sensor_leckage_status_01"
Values ".1.3.6.1.4.1.46501.5.1.1.6.107001"
</Data>
# --- Luftfeuchtigkeitssensor (Wert in %) ----------------------
<Data "didactum_hum_01">
Type "humidity"
Table false
Instance "sensor_feuchte_01"
Values ".1.3.6.1.4.1.46501.5.1.1.7.102001"
</Data>
# --- Türkontakt (0=geschlossen, 1=geöffnet) -------------------
<Data "didactum_door_01">
Type "gauge"
Table false
Instance "sensor_tuer_01"
Values ".1.3.6.1.4.1.46501.5.1.1.7.104001"
</Data>
# --- Rauchmelder (0=OK, 1=Alarm) ------------------------------
<Data "didactum_smoke_01">
Type "gauge"
Table false
Instance "sensor_rauch_01"
Values ".1.3.6.1.4.1.46501.5.1.1.7.106001"
</Data>
# --- Analoger Temperatursensor (neuere Modelle OID 39052) -----
<Data "didactum_temp_analog_01">
Type "temperature"
Table false
Instance "sensor_temp_analog_01"
Values ".1.3.6.1.4.1.39052.5.2.1.7.201001"
Scale 0.1
</Data>
# --------------------------------------------------------------
# HOST-Block: Verbindungsparameter zum Didactum-Gerät
# Dieser Block legt fest, WO und WIE abgefragt wird.
# --------------------------------------------------------------
<Host "didactum-monitor-01">
Address "192.168.1.50"
Version 2
Community "didactum_collectd"
Interval 60 # Abfrageintervall in Sekunden
Timeout 5 # Timeout in Sekunden
Retries 3 # Anzahl Wiederholungsversuche
# Alle definierten Data-Blöcke abfragen:
Collect "didactum_temp_01"
Collect "didactum_temp_status_01"
Collect "didactum_leak_01"
Collect "didactum_leak_status_01"
Collect "didactum_hum_01"
Collect "didactum_door_01"
Collect "didactum_smoke_01"
Collect "didactum_temp_analog_01"
</Host>
# --------------------------------------------------------------
# Zweites Gerät (auskommentiert – bei Bedarf aktivieren)
# --------------------------------------------------------------
# <Host "didactum-monitor-02">
# Address "192.168.1.51"
# Version 2
# Community "didactum_collectd"
# Interval 60
# Collect "didactum_temp_01"
# Collect "didactum_leak_01"
# </Host>
</Plugin>
Schritt 3 – Sicherstellen, dass das SNMP-Plugin in der Hauptkonfiguration geladen wird
sudo nano /etc/collectd/collectd.conf
Prüfen, ob folgende Zeile vorhanden und nicht auskommentiert ist:
LoadPlugin snmp
Falls die modulare Konfiguration aktiv ist, sicherstellen, dass das conf.d-Verzeichnis eingebunden wird:
Include "/etc/collectd/collectd.conf.d/*.conf"
Schritt 4 – Eigene Typen für Leckage und Status registrieren (optional)
collectd kennt den Typ gauge bereits. Für sauberere Bezeichnungen kann eine eigene types.db-Ergänzung angelegt werden:
sudo nano /etc/collectd/didactum-types.db
# Didactum eigene Typen # Format: type_name ds_name:ds_type:min:max leakage_status value:GAUGE:0:2 door_status value:GAUGE:0:1 smoke_status value:GAUGE:0:1 sensor_status value:GAUGE:0:2
In der collectd.conf einbinden:
TypesDB "/usr/share/collectd/types.db" TypesDB "/etc/collectd/didactum-types.db"
6. Ausgabe-Plugins konfigurieren
Option A – RRDtool (lokale Datei-Speicherung)
sudo nano /etc/collectd/collectd.conf
# RRDtool-Plugin aktivieren LoadPlugin rrdtool <Plugin rrdtool> DataDir "/var/lib/collectd/rrd" CacheTimeout 120 CacheFlush 900 WritesPerSecond 50 </Plugin>
Verzeichnis anlegen:
sudo mkdir -p /var/lib/collectd/rrd sudo chown collectd:collectd /var/lib/collectd/rrd
RRD-Dateien werden automatisch unter folgendem Pfad angelegt:
/var/lib/collectd/rrd/didactum-monitor-01/snmp/ temperature-sensor_temperatur_01.rrd gauge-sensor_leckage_01.rrd humidity-sensor_feuchte_01.rrd gauge-sensor_tuer_01.rrd gauge-sensor_rauch_01.rrd
Option B – InfluxDB (empfohlen für Grafana)
# collectd-Plugin für InfluxDB-Ausgabe
LoadPlugin network
<Plugin network>
<Server "192.168.1.10" "25826">
SecurityLevel "None"
</Server>
</Plugin>
In der InfluxDB-Konfiguration den collectd-Input aktivieren:
# /etc/influxdb/influxdb.conf [[collectd]] enabled = true bind-address = ":25826" database = "collectd" typesdb = "/usr/share/collectd/types.db"
Option C – CSV-Ausgabe (für einfache Auswertung)
LoadPlugin csv <Plugin csv> DataDir "/var/lib/collectd/csv" StoreRates true </Plugin>
Option D – Write-HTTP (für externe Systeme)
LoadPlugin write_http
<Plugin write_http>
<Node "didactum-backend">
URL "http://192.168.1.20:9999/collectd"
Format "JSON"
StoreRates false
</Node>
</Plugin>
7. Threshold-Plugin: Alarme konfigurieren
Das Threshold-Plugin überwacht gesammelte Werte gegen Grenzwerte und sendet Benachrichtigungen wenn Schwellen überschritten werden.
Schritt 1 – Threshold-Plugin aktivieren
sudo nano /etc/collectd/collectd.conf
LoadPlugin threshold
Schritt 2 – Threshold-Konfigurationsdatei erstellen
sudo nano /etc/collectd/collectd.conf.d/didactum-thresholds.conf
# ================================================================
# collectd Threshold-Konfiguration – Didactum Sensoren
# Datei: /etc/collectd/collectd.conf.d/didactum-thresholds.conf
# ================================================================
LoadPlugin threshold
<Plugin threshold>
# --------------------------------------------------------------
# Host-spezifische Schwellwerte für Didactum Monitor 01
# --------------------------------------------------------------
<Host "didactum-monitor-01">
# --- Temperatursensor ---------------------------------------
# Scale wurde bereits in der SNMP-Konfiguration auf 0.1 gesetzt
# Daher arbeiten wir hier direkt mit Celsius-Werten
<Type "temperature">
Instance "sensor_temperatur_01"
WarningMax 28.0 # Warnung ab 28,0 °C
FailureMax 35.0 # Kritisch ab 35,0 °C
WarningMin 5.0 # Warnung unter 5,0 °C (zu kalt)
FailureMin 2.0 # Kritisch unter 2,0 °C
Persist true # Alarm bei jedem Messwert wiederholen
PersistOK false # Keine OK-Meldung bei jedem Wert
</Type>
# --- Leckagesensor ------------------------------------------
# Wert 1 = Wasser erkannt = sofort kritisch
<Type "gauge">
Instance "sensor_leckage_01"
FailureMax 0.5 # Ab 0.5 (= Wasser erkannt) kritisch
Persist true # Alarm wiederholen solange Wasser
Invert false
</Type>
# --- Leckage-Status -----------------------------------------
<Type "gauge">
Instance "sensor_leckage_status_01"
FailureMax 0.5 # Status > 0 = Alarm oder Fehler
Persist true
</Type>
# --- Luftfeuchtigkeit ---------------------------------------
<Type "humidity">
Instance "sensor_feuchte_01"
WarningMax 80.0 # Warnung ab 80 %
FailureMax 90.0 # Kritisch ab 90 %
WarningMin 20.0 # Warnung unter 20 %
FailureMin 10.0 # Kritisch unter 10 %
Persist false
</Type>
# --- Türkontakt ---------------------------------------------
# 1 = Tür geöffnet = Warnung
<Type "gauge">
Instance "sensor_tuer_01"
WarningMax 0.5 # Ab 0.5 (= geöffnet) Warnung
Persist true # Solange offen: Alarm wiederholen
</Type>
# --- Rauchmelder --------------------------------------------
# 1 = Rauch = sofort kritisch
<Type "gauge">
Instance "sensor_rauch_01"
FailureMax 0.5 # Ab 0.5 (= Alarm) kritisch
Persist true
</Type>
# --- Temperatursensor-Status --------------------------------
# 0=OK, 1=Alarm, 2=Kein Signal
<Type "gauge">
Instance "sensor_temp_status_01"
FailureMax 0.5 # Jeder Wert > 0 ist ein Problem
Persist true
</Type>
</Host>
</Plugin>
8. Alarmierung per E-Mail (exec- und notify_email-Plugin)
Option A – notify_email-Plugin (direkt, einfach)
sudo nano /etc/collectd/collectd.conf.d/didactum-notify.conf
# E-Mail-Benachrichtigung bei Threshold-Überschreitung LoadPlugin notify_email <Plugin notify_email> SMTPServer "mail.ihredomain.de" SMTPPort 587 SMTPUser "collectd@ihredomain.de" SMTPPassword "IhrMailPasswort" From "collectd@ihredomain.de" # Empfänger (mehrere möglich): Recipient "admin@ihredomain.de" # Betreff-Präfix: Subject "[Didactum ALARM] %s" </Plugin>
Option B – exec-Plugin mit eigenem Benachrichtigungs-Skript
sudo nano /etc/collectd/collectd.conf.d/didactum-exec.conf
LoadPlugin exec <Plugin exec> # Notification-Skript aufrufen wenn Threshold ausgelöst wird NotificationExec "collectd" "/etc/collectd/scripts/didactum-alarm.sh" </Plugin>
Alarm-Skript erstellen:
sudo mkdir -p /etc/collectd/scripts sudo nano /etc/collectd/scripts/didactum-alarm.sh
#!/bin/bash # ================================================================ # Didactum Alarm-Skript für collectd # Wird aufgerufen wenn ein Threshold überschritten wird # ================================================================ # Notification-Variablen werden von collectd gesetzt: # NOTIF_SEVERITY = FAILURE | WARNING | OKAY # NOTIF_HOST = Hostname # NOTIF_PLUGIN = Plugin-Name # NOTIF_TYPE = Metric-Typ # NOTIF_INSTANCE = Instanz-Name # NOTIF_MESSAGE = Fehlermeldung # Nur bei FAILURE oder WARNING eine Mail senden if [ "$NOTIF_SEVERITY" = "OKAY" ]; then exit 0 fi EMPFAENGER="admin@ihredomain.de" ABSENDER="collectd@ihredomain.de" BETREFF="[Didactum $NOTIF_SEVERITY] $NOTIF_HOST – $NOTIF_TYPE ($NOTIF_INSTANCE)" NACHRICHT=" Didactum Sensor-Alarm ===================== Zeitpunkt: $(date '+%Y-%m-%d %H:%M:%S') Schwere: $NOTIF_SEVERITY Host: $NOTIF_HOST Plugin: $NOTIF_PLUGIN Typ: $NOTIF_TYPE Instanz: $NOTIF_INSTANCE Meldung: $NOTIF_MESSAGE " echo "$NACHRICHT" | mail -s "$BETREFF" -r "$ABSENDER" "$EMPFAENGER"
sudo chmod +x /etc/collectd/scripts/didactum-alarm.sh sudo chown collectd:collectd /etc/collectd/scripts/didactum-alarm.sh
Mailversand (Postfix) auf dem Server sicherstellen:
sudo apt install postfix mailutils -y echo "Testmail collectd" | mail -s "Test" admin@ihredomain.de
9. Grafana-Dashboard einrichten
Schritt 1 – Grafana installieren (falls noch nicht vorhanden)
sudo apt install -y software-properties-common sudo apt install -y grafana sudo systemctl enable grafana-server sudo systemctl start grafana-server # Grafana erreichbar unter: 192.168.1.10 # Standard-Login: admin / admin
Schritt 2 – Datenquelle konfigurieren
Variante A: RRDtool-Datenquelle
Grafana → Configuration → Data Sources → Add data source → SimpleJSON oder collectd-RRD-Plugin wählen → URL: localhost (RRD-Proxy installieren)
Variante B: InfluxDB-Datenquelle (empfohlen)
Grafana → Configuration → Data Sources → Add data source → InfluxDB URL: localhost Database: collectd HTTP-Method: GET → Save & Test
Schritt 3 – Neues Dashboard anlegen
Grafana → + → Dashboard → Add new panel
Schritt 4 – Panel für Temperaturverlauf
InfluxDB-Query für Grafana:
SELECT mean("value") FROM "temperature"
WHERE ("host" = 'didactum-monitor-01'
AND "type_instance" = 'sensor_temperatur_01')
AND $timeFilter
GROUP BY time($__interval) fill(null)
| Panel-Einstellung | Wert |
|---|---|
| Panel-Typ | Time series (Liniengraph) |
| Panel-Titel | Raumtemperatur – Didactum Sensor 01 |
| Einheit (Unit) | Temperature → Celsius (°C) |
| Threshold Warning | 28 |
| Threshold Critical | 35 |
| Y-Achse Min | 0 |
| Y-Achse Max | 50 |
Schritt 5 – Panel für Leckage-Status
SELECT last("value") FROM "gauge"
WHERE ("host" = 'didactum-monitor-01'
AND "type_instance" = 'sensor_leckage_01')
AND $timeFilter
| Panel-Einstellung | Wert |
|---|---|
| Panel-Typ | Stat (Einzelwert-Anzeige) |
| Panel-Titel | Leckage Status |
| Value Mapping 0 | ✅ Trocken / OK |
| Value Mapping 1 | ? Wasser erkannt! |
| Threshold 0 | Grün (OK) |
| Threshold 1 | Rot (Alarm) |
Schritt 6 – Panel für Luftfeuchtigkeit
SELECT mean("value") FROM "humidity"
WHERE ("host" = 'didactum-monitor-01'
AND "type_instance" = 'sensor_feuchte_01')
AND $timeFilter
GROUP BY time($__interval) fill(null)
Schritt 7 – Dashboard speichern
Oben rechts: Speichern-Symbol → Name: "Didactum Monitoring" → Save
10. SNMP OID-Referenz
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 | 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 | .1.3.6.1.4.1.46501.5.1.1.5.101001 |
| .6.x.SENSOR_ID | Status (0=OK, 1=Alarm, 2=Kein Signal) | .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 collectd-Konfiguration
| Sensortyp | Sensor-ID | OID Messwert | collectd Type | Scale / Hinweis |
|---|---|---|---|---|
| Temperatursensor (digital) | 101001 | .1.3.6.1.4.1.46501.5.1.1.7.101001 | temperature | Scale 0.1 (255 = 25,5 °C) |
| Temperatursensor (analog) | 201001 | .1.3.6.1.4.1.39052.5.2.1.7.201001 | temperature | Scale 0.1 |
| Wassersensor / Leckage | 107001 | .1.3.6.1.4.1.46501.5.1.1.7.107001 | gauge | 0=trocken, 1=Wasser |
| Sensor-Status allg. | beliebig | .1.3.6.1.4.1.46501.5.1.1.6.SENSOR_ID | gauge | 0=OK, 1=Alarm, 2=Kein Signal |
| Luftfeuchtigkeit | 102001 | .1.3.6.1.4.1.46501.5.1.1.7.102001 | humidity | Wert in % (65 = 65 %) |
| Potentialfreier Kontakt | 101003 | .1.3.6.1.4.1.39052.5.1.1.7.101003 | gauge | 0=offen, 1=geschlossen |
| Türkontakt | 104001 | .1.3.6.1.4.1.46501.5.1.1.7.104001 | gauge | 0=geschlossen, 1=geöffnet |
| Rauchmelder | 106001 | .1.3.6.1.4.1.46501.5.1.1.7.106001 | gauge | 0=kein Rauch, 1=Alarm |
Sensor-ID herausfinden:
Im Didactum Web-Interface unter Systembaum → Sensor auswählen → Details. Diese ID wird ans Ende der OID angehängt.
Scale-Option in collectd:
Der Parameter Scale 0.1 im Data-Block bewirkt, dass collectd den Rohwert automatisch durch 10 dividiert. So wird 235 direkt als 23,5 gespeichert – korrekte Darstellung in Grafana ohne manuelle Umrechnung.
MIB-Prefix je Modell:
Ältere Geräte verwenden .1.3.6.1.4.1.46501, neuere Modelle eventuell .1.3.6.1.4.1.39052. Die genauen OIDs entnehmen Sie der MIB-Datei Ihres Geräts.
11. Test und Fehlersuche
Konfiguration testen ohne Daemon-Start
# Konfiguration auf Syntaxfehler prüfen sudo collectd -t -C /etc/collectd/collectd.conf # collectd im Vordergrund mit ausführlicher Ausgabe starten sudo collectd -f -C /etc/collectd/collectd.conf # Mit Strg+C beenden
collectd-Dienst neu starten & Status prüfen
sudo systemctl restart collectd sudo systemctl status collectd sudo journalctl -u collectd -f --since "5 minutes ago"
RRD-Dateien prüfen
# Prüfen ob RRD-Dateien angelegt wurden
ls -la /var/lib/collectd/rrd/didactum-monitor-01/
# Letzten Wert einer RRD-Datei anzeigen
rrdtool lastupdate \
/var/lib/collectd/rrd/didactum-monitor-01/snmp/\
temperature-sensor_temperatur_01.rrd
# Schnellen Graph generieren (letzte Stunde)
rrdtool graph /tmp/temp_test.png \
--start -3600 \
--title "Didactum Temperatur" \
--vertical-label "Grad Celsius" \
DEF:temp=/var/lib/collectd/rrd/didactum-monitor-01/snmp/\
temperature-sensor_temperatur_01.rrd:value:AVERAGE \
LINE1:temp#FF0000:"Temperatur"
SNMP-Verbindung direkt testen
snmpwalk -v 2c -c didactum_collectd 192.168.1.50 \
.1.3.6.1.4.1.46501.5.1.1
Fehlermeldungen und Lösungen
| Problem | Ursache & Lösung |
|---|---|
| collectd startet nicht | Syntaxfehler in collectd.conf → collectd -t ausführen und Fehler lesen |
| Keine RRD-Dateien für Didactum | SNMP-Plugin nicht geladen; Community String falsch; Gerät nicht erreichbar |
| snmp plugin: host "..." reported a failure | Gerät nicht erreichbar; Firewall blockiert UDP 161; Community String falsch |
| Temperaturwert 10× zu hoch in Grafana | Scale 0.1 im Data-Block vergessen → SNMP-Konfiguration ergänzen |
| Threshold-Alarme kommen nicht | notify_email-Plugin nicht geladen; SMTP-Daten falsch; Alarm-Skript nicht ausführbar |
| Keine Daten in Grafana/InfluxDB | network-Plugin nicht konfiguriert; InfluxDB collectd-Input nicht aktiviert |
| "Unknown type" Fehlermeldung | Typ "humidity" oder "temperature" nicht in types.db → TypesDB-Eintrag prüfen |
| Data-Block vor Host-Block? | Data-Blöcke müssen VOR dem Host-Block definiert sein (top-down Parsing) |
collectd-Log einsehen
# Systemd-Journal sudo journalctl -u collectd -f # Logfile direkt (falls syslog-Plugin aktiv) sudo tail -f /var/log/syslog | grep collectd # Verbose-Logging in collectd.conf aktivieren: # LoadPlugin logfile # <Plugin logfile> # LogLevel debug # File "/var/log/collectd.log" # </Plugin>
12. Abschluss-Checkliste
Didactum-Gerät
- SNMP aktiviert (v2c)
- Community String gesetzt (nicht „public")
- Trap-Empfänger-IP eingetragen (optional)
- MIB-Datei heruntergeladen
- snmpwalk-Test vom collectd-Server erfolgreich
collectd-Server – Pakete & MIB
- Pakete collectd, collectd-utils, snmp, snmp-mibs-downloader installiert
- MIB-Datei unter /usr/share/snmp/mibs/ gespeichert
- /etc/snmp/snmp.conf: mibs ALL eingetragen
- collectd-Dienst läuft: systemctl status collectd
SNMP-Plugin-Konfiguration
- Datei /etc/collectd/collectd.conf.d/didactum-snmp.conf angelegt
- Data-Blöcke für alle Sensortypen definiert
- Scale 0.1 für Temperatursensoren gesetzt
- Host-Block mit korrekter IP und Community eingetragen
- Collect-Anweisungen für alle Data-Blöcke vorhanden
- Konfiguration mit collectd -t validiert (kein Fehler)
Ausgabe & Visualisierung
- RRDtool-Plugin konfiguriert und RRD-Dateien werden angelegt
- Alternativ: InfluxDB-Integration eingerichtet
- Grafana-Datenquelle verbunden
- Dashboard mit Temperatur- und Leckage-Panel erstellt
- Temperaturanzeige in °C korrekt (Scale 0.1 wirkt)
Alarme & Benachrichtigung
- Threshold-Plugin aktiviert und konfiguriert
- Schwellwerte für Temperatur (Warnung 28°C, Kritisch 35°C)
- Schwellwert für Leckage gesetzt (ab 0.5 = kritisch)
- E-Mail-Plugin (notify_email oder exec) konfiguriert
- Testmeldung per E-Mail empfangen