Didactum Monitoring-Geräte und Sensoren – Integration in Andrisoft Wanguard
Diese Anleitung beschreibt die Integration von Didactum Monitoring-Geräten in Andrisoft Wanguard (Version 8.x). Sie erläutert die realistischen Möglichkeiten und Grenzen dieser Kombination, die empfohlene Integrationsarchitektur und die konkreten Konfigurationsschritte für SNMP-basiertes Monitoring, SNMP-Trap-Verarbeitung und ergänzende Alarmierung.
Wichtiger Hinweis zur Plattform:
Andrisoft Wanguard ist primär eine Netzwerk-DDoS-Detection- und Bandbreitenmonitoring-Lösung. Der integrierte SNMP-Sensor ist für die Bandbreitenüberwachung von Netzwerkgeräten (Router, Switches) optimiert – nicht für Umweltsensoren wie Temperatur oder Leckage. Die vollständige Überwachung von Didactum-Sensoren erfordert daher eine hybride Architektur, die in dieser Anleitung beschrieben wird.
1. Grundlagen: Wanguard und Didactum – Architektur und Möglichkeiten
1.1 Was Wanguard kann – und was nicht
Andrisoft Wanguard ist eine Enterprise-Software für die Überwachung und den Schutz von WAN-Netzwerken gegen DDoS-Angriffe. Der integrierte SNMP-Sensor überwacht Netzwerkgeräte – primär deren Schnittstellenauslastung (Bandbreite, Traffic-Counters). Umweltsensoren wie Temperatur oder Leckage sind kein primärer Anwendungsfall von Wanguard.
| Funktion | Wanguard SNMP-Sensor | Für Didactum geeignet? |
|---|---|---|
| Bandbreitenüberwachung (ifInOctets, ifOutOctets) | Ja, primärer Zweck | Nein (Didactum hat keine Netzwerk-Interfaces) |
| Gerät als SNMP-Node registrieren | Ja | Ja – für Geräteverfügbarkeit (Ping/SNMP) |
| Benutzerdefinierte OID-Abfrage | Begrenzt (via Skripte) | Ja – für Temperatur, Leckage usw. |
| SNMP-Trap-Empfang | Ja (via snmptrapd + Skript) | Ja – für proaktive Didactum-Alarme |
| Schwellwert-Alarmierung für Umweltsensoren | Nur via externe Skripte | Bedingt – mit Custom Response Scripts |
| Grafische Trendanzeige für Sensorwerte | Nein (nativ) | Nein – externes Tool erforderlich |
| DDoS-Erkennung auf Netzwerkebene | Ja, Kernfunktion | Nicht relevant für Didactum |
1.2 Empfohlene Integrationsarchitektur
Da Wanguard für Umweltsensor-Monitoring nicht primär ausgelegt ist, empfiehlt sich eine hybride Architektur:
- Wanguard: Netzwerküberwachung, DDoS-Schutz, Bandbreitenmonitoring – Didactum-Gerät als SNMP-Node für Verfügbarkeitsüberwachung und Trap-Empfang
- Ergänzendes Tool (Nagios, Icinga 2, Checkmk, NetXMS o.ä.): Vollständige Sensor-Überwachung mit Schwellwerten, Trendgrafiken und Alarmierung für Temperatur, Leckage, Feuchte usw.
- SNMP-Traps: Didactum sendet Traps an beide Systeme – Wanguard reagiert auf netzwerkrelevante Ereignisse, das Monitoring-Tool auf Umweltereignisse
1.3 Wanguard-Komponenten
| Komponente | Funktion |
|---|---|
| Wanguard Console | Web-basierte Verwaltungsoberfläche, zentrale Konfiguration und Reports |
| Wanguard Sensor (SNMP) | Abfrage von SNMP-Geräten, primär Bandbreitenmonitoring |
| Wanguard Sensor (Flow/Packet) | NetFlow/sFlow-Analyse, Paketerfassung – nicht relevant für Didactum |
| Wanguard Filter | DDoS-Mitigation – nicht relevant für Didactum |
| Response Scripts | Benutzerdefinierte Skripte bei Anomalieerkennung – nutzbar für Didactum-Integration |
| REST-API | Vollständige programmatische Steuerung – nutzbar für Custom-Integration |
2. Voraussetzungen
- Andrisoft Wanguard 8.x (Wanguard oder Wansight Lizenz)
- Linux-Server mit Wanguard Console und Sensor (Ubuntu 20.04/22.04 oder RHEL/CentOS 8+ empfohlen)
- SNMP-Tools (snmpwalk, snmpget, snmptrapd) auf dem Wanguard-Server
- Didactum Monitoring-Gerät im Netzwerk erreichbar, SNMP aktiviert
- UDP Port 161 vom Wanguard-Server zum Didactum-Gerät freigegeben
- UDP Port 162 auf dem Wanguard-Server für SNMP-Traps freigegeben
- SNMP-Community-String bekannt (Standard: public)
- Für vollständiges Sensor-Monitoring: Nagios, Icinga 2, Checkmk oder NetXMS als ergänzendes Tool
Beispiel-Netzwerkkonfiguration
| Gerät | IP-Adresse | Rolle |
|---|---|---|
| Wanguard-Server | 192.168.1.95 | Netzwerkmonitoring, DDoS-Schutz, SNMP-Trap-Empfang |
| Didactum Monitoring Unit | 192.168.1.100 | Überwachtes Gerät (SNMP-Agent) |
3. SNMP-Vorbereitung am Didactum-Gerät
3.1 SNMP aktivieren
- Didactum Web-Interface aufrufen: 192.168.1.100, Login mit Admin-Konto.
- Navigation: Einstellungen → Netzwerk → SNMP (oder: Settings → Network → SNMP).
- Folgende Parameter setzen:
- SNMP aktiviert: Ja
- SNMP-Version: v2c
- Community-String: public (in Produktion ändern)
- SNMP-Port: 161
- Allowed Managers: IP des Wanguard-Servers (192.168.1.95) eintragen
- SNMP Trap Receiver: IP des Wanguard-Servers, Port 162
- Einstellungen speichern.
3.2 Erreichbarkeit vom Wanguard-Server testen
# SNMP Walk – alle Didactum-OIDs: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 # Temperatur Sensor 1: snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # System-Beschreibung: snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.1.0
Hinweis:
Didactum gibt Temperatur- und Spannungswerte mit Faktor 10 zurück (235 = 23,5°C). In eigenen Skripten entsprechend dividieren.
4. Wanguard vorbereiten
4.1 Wanguard Console aufrufen
# Wanguard-Dienste prüfen: sudo systemctl status wanguard-console sudo systemctl status wanguard-sensor # Web-Interface aufrufen: # 192.168.1.95 (Standard-Port 443 oder konfigurierter Port)
4.2 SNMP-Tools installieren
# Debian / Ubuntu: sudo apt update sudo apt install snmp snmpd snmp-mibs-downloader snmptrapd -y # RHEL / CentOS / Rocky Linux: sudo dnf install net-snmp net-snmp-utils -y
4.3 Didactum MIB-Datei einbinden
# MIB-Datei ins System-MIB-Verzeichnis kopieren: sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/share/snmp/mibs/ # In /etc/snmp/snmp.conf aktivieren: echo "mibs +DIDACTUM-RACKMONI2-MIB" | sudo tee -a /etc/snmp/snmp.conf # Test mit MIB-Namen: snmpget -v2c -c public -m +DIDACTUM-RACKMONI2-MIB \ 192.168.1.100 tempValue.1
4.4 Wanguard-Server-Konfiguration prüfen
- Wanguard Console aufrufen.
- Navigation: Configuration → Servers.
- Server-Status prüfen – alle Komponenten sollten Online zeigen.
- Navigation: Configuration → IP Zones – vorhandene IP-Zone prüfen oder neue anlegen, die das Netzwerksegment des Didactum-Geräts enthält.
5. Didactum als SNMP-Sensor konfigurieren
Der Wanguard SNMP-Sensor ist primär für Bandbreitenmonitoring ausgelegt. Für das Didactum-Gerät nutzen wir ihn zur Verfügbarkeitsüberwachung und als Ankerpunkt für Custom-Skripte.
5.1 SNMP-Sensor anlegen
- Wanguard Console: Navigation: Configuration → Components → [+] Add.
- Typ: SNMP Sensor auswählen.
- Folgende Felder ausfüllen:
- Sensor Name: Didactum-Rack01
- Device Group: Rack-Monitoring (Organisationsbezeichnung)
- Sensor Server: Wanguard-Server auswählen
- Device IP:Port: 192.168.1.100:161
- SNMP Protocol: SNMP version 2c
- Community String: public
- Polling Interval: 60 Sekunden
- Timeout (ms): 2000
- Retries: 3
- Unter Interface Discovery: Off auswählen (Didactum hat keine relevanten Netzwerk-Interfaces).
- Unter Sensor License: Wanguard oder Wansight je nach verfügbarer Lizenz.
- Speichern.
5.2 SNMP-Tester verwenden
Wanguard enthält einen integrierten SNMP-Tester. Über die Schaltfläche neben dem Feld Device IP:Port lässt sich ein SNMP-Walk des Didactum-Geräts direkt aus der Console starten. Dies dient der Überprüfung der Erreichbarkeit und zur Ermittlung verfügbarer OIDs.
5.3 Für SNMP v3
- SNMP Protocol: SNMP version 3 auswählen.
- Zusätzliche Felder:
- Security Level: authPriv (empfohlen)
- Security Name: SNMP-v3-Benutzername vom Didactum-Gerät
- Authentication Protocol: SHA
- Authentication Passphrase: Authentifizierungspasswort
- Privacy Protocol: AES
- Privacy Passphrase: Verschlüsselungspasswort
5.4 Sensor im Event-Log prüfen
- Navigation: Events → Event Log.
- Filter: Sensor-Name Didactum-Rack01.
- Eintrag SNMP Sensor started bestätigt erfolgreiche Konfiguration.
- Fehlermeldungen wie SNMP timeout oder No such object zeigen Konfigurationsprobleme an.
6. Benutzerdefinierte SNMP-Abfragen per Skript
Da der native Wanguard SNMP-Sensor Umweltsensor-OIDs nicht direkt auswertet, werden die Didactum-Sensorwerte über benutzerdefinierte Shell-Skripte abgefragt. Diese Skripte laufen als Cron-Jobs auf dem Wanguard-Server und können bei Grenzwertüberschreitungen Wanguard-Events erzeugen oder eigenständig Benachrichtigungen versenden.
6.1 Haupt-Überwachungsskript erstellen
sudo nano /opt/wanguard-didactum/didactum_monitor.sh
#!/bin/bash
# =============================================================================
# Didactum Sensor Monitor für Wanguard
# Abfrage von Temperatur, Leckage, Luftfeuchtigkeit, Spannung via SNMP
# Erzeugt bei Grenzwertüberschreitung E-Mail-Alarme und Wanguard-Events
# =============================================================================
# Konfiguration
DIDACTUM_IP="192.168.1.100"
SNMP_COMMUNITY="public"
SNMP_VERSION="2c"
LOG_FILE="/var/log/wanguard/didactum_monitor.log"
ALERT_EMAIL="admin@example.com"
WANGUARD_API_URL="https://192.168.1.95/wanguard-api/v3"
WANGUARD_API_KEY="IHR-API-KEY"
# Schwellwerte
TEMP_WARN=30 # Warnung bei 30 °C (Rohwert: 300)
TEMP_CRIT=35 # Kritisch bei 35 °C (Rohwert: 350)
HUM_WARN_HIGH=70 # Warnung Feuchte hoch
HUM_WARN_LOW=20 # Warnung Feuchte niedrig
VOLT_WARN_LOW=207 # Warnung Spannung niedrig (V, nach Div. durch 10)
VOLT_WARN_HIGH=253 # Warnung Spannung hoch
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Hilfsfunktion: SNMP-OID abfragen
snmp_get() {
local oid="$1"
snmpget -v${SNMP_VERSION} -c ${SNMP_COMMUNITY} \
-Oqv ${DIDACTUM_IP} ${oid} 2>/dev/null
}
# Hilfsfunktion: Alarm senden
send_alert() {
local severity="$1"
local message="$2"
echo "${TIMESTAMP} [${severity}] ${message}" >> "${LOG_FILE}"
echo -e "Subject: [Wanguard/Didactum] ${severity}: ${message}\n\n${message}\n\nZeit: ${TIMESTAMP}\nGerät: ${DIDACTUM_IP}" \
| sendmail "${ALERT_EMAIL}" 2>/dev/null
}
# ── TEMPERATUR SENSOR 1 ───────────────────────────────────────────────────────
TEMP_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1")
if [ -n "${TEMP_RAW}" ] && [ "${TEMP_RAW}" -eq "${TEMP_RAW}" ] 2>/dev/null; then
TEMP=$(echo "scale=1; ${TEMP_RAW} / 10" | bc)
echo "${TIMESTAMP} Temperatur S1: ${TEMP} °C (Rohwert: ${TEMP_RAW})" >> "${LOG_FILE}"
if [ "${TEMP_RAW}" -ge $((TEMP_CRIT * 10)) ]; then
send_alert "CRITICAL" "Temperatur Sensor 1 KRITISCH: ${TEMP} °C (Grenzwert: ${TEMP_CRIT} °C) auf ${DIDACTUM_IP}"
elif [ "${TEMP_RAW}" -ge $((TEMP_WARN * 10)) ]; then
send_alert "WARNING" "Temperatur Sensor 1 WARNUNG: ${TEMP} °C (Grenzwert: ${TEMP_WARN} °C) auf ${DIDACTUM_IP}"
fi
fi
# ── LECKAGE SENSOR 1 ──────────────────────────────────────────────────────────
LEAK=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1")
if [ "${LEAK}" = "1" ]; then
send_alert "CRITICAL" "LECKAGE ERKANNT auf ${DIDACTUM_IP} – Sensor 1! Sofortiger Handlungsbedarf!"
fi
# ── LECKAGE SENSOR 2 ──────────────────────────────────────────────────────────
LEAK2=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2")
if [ "${LEAK2}" = "1" ]; then
send_alert "CRITICAL" "LECKAGE ERKANNT auf ${DIDACTUM_IP} – Sensor 2! Sofortiger Handlungsbedarf!"
fi
# ── LUFTFEUCHTIGKEIT SENSOR 1 ─────────────────────────────────────────────────
HUM=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1")
if [ -n "${HUM}" ] && [ "${HUM}" -eq "${HUM}" ] 2>/dev/null; then
echo "${TIMESTAMP} Luftfeuchtigkeit S1: ${HUM} % rF" >> "${LOG_FILE}"
if [ "${HUM}" -gt "${HUM_WARN_HIGH}" ] || [ "${HUM}" -lt "${HUM_WARN_LOW}" ]; then
send_alert "WARNING" "Luftfeuchtigkeit außerhalb Grenzwert auf ${DIDACTUM_IP}: ${HUM} % rF (OK: ${HUM_WARN_LOW}–${HUM_WARN_HIGH} %)"
fi
fi
# ── SPANNUNG SENSOR 1 ─────────────────────────────────────────────────────────
VOLT_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1")
if [ -n "${VOLT_RAW}" ] && [ "${VOLT_RAW}" -eq "${VOLT_RAW}" ] 2>/dev/null; then
VOLT=$(echo "scale=1; ${VOLT_RAW} / 10" | bc)
VOLT_INT=$(echo "${VOLT_RAW} / 10" | bc)
if [ "${VOLT_INT}" -lt "${VOLT_WARN_LOW}" ] || [ "${VOLT_INT}" -gt "${VOLT_WARN_HIGH}" ]; then
send_alert "WARNING" "Spannung außerhalb Grenzwert auf ${DIDACTUM_IP}: ${VOLT} V (OK: ${VOLT_WARN_LOW}–${VOLT_WARN_HIGH} V)"
fi
fi
# ── TÜRKONTAKT SENSOR 1 ───────────────────────────────────────────────────────
DOOR=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1")
if [ "${DOOR}" = "1" ]; then
send_alert "WARNING" "Türkontakt geöffnet auf ${DIDACTUM_IP} – Rack-Tür vorne"
fi
# ── RAUCHMELDER SENSOR 1 ──────────────────────────────────────────────────────
SMOKE=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1")
if [ "${SMOKE}" = "1" ]; then
send_alert "CRITICAL" "RAUCHMELDER ausgelöst auf ${DIDACTUM_IP}!"
fi
exit 0sudo chmod +x /opt/wanguard-didactum/didactum_monitor.sh sudo mkdir -p /opt/wanguard-didactum sudo mkdir -p /var/log/wanguard
6.2 Cron-Job für regelmäßige Abfrage einrichten
sudo crontab -e
# Didactum Sensor-Monitoring alle 5 Minuten: */5 * * * * /opt/wanguard-didactum/didactum_monitor.sh # Leckage und Sicherheitssensoren jede Minute: * * * * * /opt/wanguard-didactum/didactum_leakcheck.sh
6.3 Separates Leckage-Schnellskript (jede Minute)
sudo nano /opt/wanguard-didactum/didactum_leakcheck.sh
#!/bin/bash
# Schnellabfrage für zeitkritische Sensoren (Leckage, Rauch, Tür)
DIDACTUM_IP="192.168.1.100"
SNMP_COMMUNITY="public"
ALERT_EMAIL="admin@example.com"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
snmp_get() { snmpget -v2c -c ${SNMP_COMMUNITY} -Oqv ${DIDACTUM_IP} "$1" 2>/dev/null; }
# Leckage S1 und S2
for sensor in 1 2; do
OID=".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.${sensor}"
VAL=$(snmp_get "${OID}")
if [ "${VAL}" = "1" ]; then
echo -e "Subject: [CRITICAL] LECKAGE Sensor ${sensor} auf ${DIDACTUM_IP}\n\nLECKAGE erkannt – Sensor ${sensor} – Sofortiger Handlungsbedarf!\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
done
# Rauchmelder
SMOKE=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1")
if [ "${SMOKE}" = "1" ]; then
echo -e "Subject: [CRITICAL] RAUCHMELDER auf ${DIDACTUM_IP}\n\nRauchmelder ausgelöst!\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fisudo chmod +x /opt/wanguard-didactum/didactum_leakcheck.sh
6.4 Wanguard REST-API für Event-Erzeugung nutzen
Wanguard bietet eine REST-API, über die externe Events in die Console eingespeist werden können:
# Wanguard Event per REST-API anlegen (Beispiel: Leckage-Alarm):
curl -s -X POST \
"https://192.168.1.95/wanguard-api/v3/events" \
-H "Authorization: Bearer IHR-API-KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "Custom",
"severity": "critical",
"description": "Didactum LECKAGE erkannt auf 192.168.1.100 – Sensor 1",
"component": "Didactum-Rack01",
"timestamp": "'"$(date -u +%Y-%m-%dT%H:%M:%SZ)"'"
}'Diesen API-Aufruf in das Monitoring-Skript integrieren, damit Didactum-Alarme auch in der Wanguard-Console sichtbar sind.
7. OID-Referenz für Wanguard / Didactum
Alle OIDs basieren auf der Didactum Enterprise OID-Basis 1.3.6.1.4.1.3854. Der Platzhalter {n} steht für den Sensorindex (1 = erster Sensor usw.).
7.1 Temperatursensoren
| OID | Beschreibung | Rohwert | Skript-Formel | Schwellwert (Rohwert) |
|---|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n} | Temperaturwert Sensor n | °C × 10 | $RAW / 10 | 300 = 30 °C, 350 = 35 °C |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n} | Temperatur-Status Sensor n | Enum 0/1/2 | – | ≥ 1 = Problem |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n} | Oberer Grenzwert Sensor n | °C × 10 | $RAW / 10 | Informativ |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n} | Unterer Grenzwert Sensor n | °C × 10 | $RAW / 10 | Informativ |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n} | Sensor-Name n | Text | – | – |
7.2 Leckagesensoren
| OID | Beschreibung | Rohwert | Alarm-Bedingung |
|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n} | Leckage-Status Sensor n | 0=OK, 1=Leckage | = 1 → CRITICAL |
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.3.{n} | Leckage-Wert Sensor n | 0=trocken | ≥ 1 → CRITICAL |
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.2.{n} | Sensor-Name n | Text | – |
7.3 Luftfeuchtigkeit und weitere Sensoren
| OID | Beschreibung | Rohwert | Alarm-Bedingung |
|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n} | Luftfeuchtigkeitswert Sensor n | % rF | > 70 oder < 20 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n} | Luftfeuchtigkeits-Status n | Enum 0/1/2 | ≥ 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n} | Spannungswert Sensor n | V × 10 | < 2070 oder > 2530 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n} | Türkontakt-Status n | 0=zu, 1=offen | = 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n} | Erschütterung / Bewegung n | 0=keine, 1=Alarm | = 1 → WARNING |
| 1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n} | Rauchmelder-Status n | 0=OK, 1=Alarm | = 1 → CRITICAL |
| 1.3.6.1.2.1.1.3.0 | System Uptime | Hundertstelsekunden | – |
| 1.3.6.1.2.1.1.1.0 | Gerätebeschreibung (sysDescr) | Text | – |
8. Events und Alert-Skripte konfigurieren
8.1 Wanguard Response Scripts für Didactum-Alarme
Wanguard unterstützt benutzerdefinierte Response Scripts, die bei erkannten Anomalien ausgeführt werden. Diese können genutzt werden, um bei netzwerkrelevanten Ereignissen gleichzeitig SNMP-Checks des Didactum-Geräts auszulösen:
- Navigation: Configuration → Response Scripts → Add.
- Einstellungen:
- Script Name: Didactum-Status-Check
- Description: Prüft Didactum-Sensoren bei Netzwerkereignis
- Execution: Run on anomaly detection
- Script-Inhalt: Aufruf des Monitoring-Skripts /opt/wanguard-didactum/didactum_monitor.sh.
- Speichern und dem gewünschten Sensor oder IP-Zone zuweisen.
8.2 E-Mail-Benachrichtigung in Wanguard konfigurieren
- Navigation: Configuration → Notifications → Email.
- SMTP-Server eintragen: Host, Port, Absender, Authentifizierung.
- Test-E-Mail senden.
- Benachrichtigungsregel für Sensor-Ereignisse anlegen:
- Trigger: SNMP Sensor Offline (Didactum-Gerät nicht erreichbar)
- Empfänger: admin@example.com
8.3 Wanguard-interne Ereignisse für Didactum
| Wanguard-Ereignis | Ursache | Konfigurationsort |
|---|---|---|
| SNMP Sensor started | Sensor erfolgreich gestartet | Event Log |
| SNMP Sensor stopped | Sensor gestoppt oder Fehler | Event Log, Benachrichtigung |
| SNMP Timeout | Didactum-Gerät nicht erreichbar | Benachrichtigung konfigurieren |
| Custom Script executed | Response Script wurde ausgelöst | Event Log |
| SNMP Trap received | Trap vom Didactum-Gerät eingegangen | Event Log (wenn Trap-Handler aktiv) |
8.4 Empfohlene Schwellwerte für Skripte
| Sensor | Warning-Schwelle | Critical-Schwelle | Norm |
|---|---|---|---|
| Temperatur (Rohwert × 10) | ≥ 300 (30 °C) | ≥ 350 (35 °C) | ASHRAE A1: 15–32 °C |
| Luftfeuchtigkeit (% rF) | > 70 oder < 20 | > 80 oder < 10 | ASHRAE: 20–80 % rF |
| Leckage (0/1) | – | = 1 | Sofortalarm |
| Spannung (Rohwert × 10) | < 2070 oder > 2530 | < 1960 oder > 2600 | EN 50160 ±10 % |
| Türkontakt / Rauch | – | = 1 | Policy-abhängig |
9. SNMP-Trap-Integration
Wanguard unterstützt SNMP-Traps für eigene Anomaliemeldungen (Wanguard sendet Traps aus). Für den Empfang von Didactum-Traps wird snmptrapd auf dem Wanguard-Server konfiguriert.
9.1 snmptrapd auf dem Wanguard-Server konfigurieren
sudo nano /etc/snmp/snmptrapd.conf
# Didactum-Traps annehmen: authCommunity log,execute,net public # Trap-Handler für alle Didactum-Traps: traphandle .1.3.6.1.4.1.3854 /opt/wanguard-didactum/didactum_trap_handler.sh # Logging aktivieren: doNotLogTraps no outputOption fq
# snmptrapd aktivieren: sudo systemctl enable snmptrapd sudo systemctl start snmptrapd # Firewall-Port freigeben: sudo ufw allow 162/udp
9.2 Trap-Handler-Skript
sudo nano /opt/wanguard-didactum/didactum_trap_handler.sh
#!/bin/bash
# Didactum SNMP Trap Handler
# Wird von snmptrapd bei eingehenden Didactum-Traps aufgerufen
ALERT_EMAIL="admin@example.com"
LOG_FILE="/var/log/wanguard/didactum_traps.log"
WANGUARD_API_URL="https://192.168.1.95/wanguard-api/v3"
WANGUARD_API_KEY="IHR-API-KEY"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
# Trap-Informationen lesen:
SOURCE_IP="${1}"
TRAP_OID="${2:-unbekannt}"
echo "${TIMESTAMP} TRAP von ${SOURCE_IP}: OID=${TRAP_OID}" >> "${LOG_FILE}"
# Leckage-Trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.2"; then
MSG="LECKAGE ERKANNT via SNMP Trap von ${SOURCE_IP}!"
echo -e "Subject: [CRITICAL] Didactum Leckage-Alarm\n\n${MSG}\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
# Wanguard-Event erzeugen:
curl -s -X POST "${WANGUARD_API_URL}/events" \
-H "Authorization: Bearer ${WANGUARD_API_KEY}" \
-H "Content-Type: application/json" \
-d "{\"type\":\"Custom\",\"severity\":\"critical\",\"description\":\"${MSG}\"}" \
>> "${LOG_FILE}" 2>&1
fi
# Temperatur-Alarm-Trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.1"; then
MSG="Temperatur-Alarm via SNMP Trap von ${SOURCE_IP}!"
echo -e "Subject: [HIGH] Didactum Temperatur-Alarm\n\n${MSG}\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
# Türkontakt-Trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.10"; then
MSG="Türkontakt geöffnet via SNMP Trap von ${SOURCE_IP}!"
echo -e "Subject: [WARNING] Didactum Türkontakt\n\n${MSG}\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fi
# Rauchmelder-Trap:
if echo "${TRAP_OID}" | grep -q "3854.1.7.14"; then
MSG="RAUCHMELDER ausgelöst via SNMP Trap von ${SOURCE_IP}!"
echo -e "Subject: [CRITICAL] Didactum Rauchmelder\n\n${MSG}\nZeit: ${TIMESTAMP}" \
| sendmail "${ALERT_EMAIL}"
fisudo chmod +x /opt/wanguard-didactum/didactum_trap_handler.sh
9.3 Wichtige Didactum Trap-OIDs
| Trap-OID | Ereignis | Empfohlene Reaktion |
|---|---|---|
| 1.3.6.1.4.1.3854.1.7.1 | Temperatur-Alarm | E-Mail + Wanguard-Event |
| 1.3.6.1.4.1.3854.1.7.2 | Leckage-Alarm | E-Mail + SMS + Wanguard-Event |
| 1.3.6.1.4.1.3854.1.7.3 | Luftfeuchtigkeits-Alarm | E-Mail + Wanguard-Event |
| 1.3.6.1.4.1.3854.1.7.4 | Spannungs-Alarm | E-Mail + Wanguard-Event |
| 1.3.6.1.4.1.3854.1.7.10 | Türkontakt geöffnet | |
| 1.3.6.1.4.1.3854.1.7.14 | Rauchmelder-Alarm | E-Mail + SMS + Wanguard-Event |
| 1.3.6.1.4.1.3854.1.7.99 | Gerät-Neustart | Logging |
9.4 Trap-Test durchführen
# Test-Trap für Leckage senden: snmptrap -v2c -c public 192.168.1.95 '' \ .1.3.6.1.4.1.3854.1.7.2 \ .1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1 # Trap-Empfang im Log prüfen: sudo tail -f /var/log/wanguard/didactum_traps.log # snmptrapd-Log: sudo journalctl -u snmptrapd -f
10. Reports und Dashboards
10.1 Wanguard-Console – Verfügbare Ansichten für Didactum
Wanguard bietet in der Console folgende Ansichten, die für das Didactum-Gerät nutzbar sind:
- Reports → Devices → Overview: SNMP-Sensor-Status, Geräteverfügbarkeit des Didactum-Nodes
- Events → Event Log: Alle Wanguard-Events inkl. Custom-Events aus dem Monitoring-Skript
- Reports → Tools → SNMP Graphs: Bandbreitengrafiken (primär für Netzwerkgeräte, nicht für Umweltsensoren relevant)
10.2 Eigenes Monitoring-Dashboard (HTML) erstellen
Da Wanguard keine nativen Umweltsensor-Dashboards bietet, kann ein einfaches HTML-Dashboard die aktuellen Sensorwerte anzeigen:
sudo nano /opt/wanguard-didactum/dashboard.sh
#!/bin/bash
# Generiert eine einfache HTML-Statusseite für Didactum-Sensoren
DIDACTUM_IP="192.168.1.100"
COMMUNITY="public"
OUTPUT="/var/www/html/didactum-status.html"
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
snmp_get() { snmpget -v2c -c ${COMMUNITY} -Oqv ${DIDACTUM_IP} "$1" 2>/dev/null; }
TEMP1_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1")
TEMP1=$(echo "scale=1; ${TEMP1_RAW:-0} / 10" | bc)
TEMP2_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.16.1.3.2")
TEMP2=$(echo "scale=1; ${TEMP2_RAW:-0} / 10" | bc)
HUM=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1")
LEAK1=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1")
LEAK2=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2")
DOOR=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1")
VOLT_RAW=$(snmp_get ".1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1")
VOLT=$(echo "scale=1; ${VOLT_RAW:-0} / 10" | bc)
# Farben je Status
color_status() {
[ "$1" = "0" ] && echo "green" || echo "red"
}
temp_color() {
[ "$1" -ge 350 ] 2>/dev/null && { echo "red"; return; }
[ "$1" -ge 300 ] 2>/dev/null && { echo "orange"; return; }
echo "green"
}
cat > "${OUTPUT}" <<HTML
<!DOCTYPE html>
<html lang="de">
<head><meta charset="UTF-8">
<meta http-equiv="refresh" content="60">
<title>Didactum Status – Wanguard</title>
<style>
body { font-family: Arial, sans-serif; background: #1a1a2e; color: #eee; padding: 20px; }
h1 { color: #00d4ff; }
.card { background: #16213e; border-radius: 8px; padding: 16px; margin: 8px; display: inline-block; min-width: 180px; }
.ok { color: #00ff88; }
.warn { color: #ffaa00; }
.crit { color: #ff4444; }
.label { font-size: 12px; color: #888; }
.value { font-size: 28px; font-weight: bold; }
.ts { color: #888; font-size: 12px; margin-top: 20px; }
</style>
</head>
<body>
<h1>Didactum Rack Monitoring</h1>
<p class="label">${DIDACTUM_IP} | Letzte Aktualisierung: ${TIMESTAMP}</p>
<div class="card">
<div class="label">Temperatur Sensor 1</div>
<div class="value $([ ${TEMP1_RAW:-0} -ge 300 ] && echo warn || echo ok)">${TEMP1} °C</div>
</div>
<div class="card">
<div class="label">Temperatur Sensor 2</div>
<div class="value $([ ${TEMP2_RAW:-0} -ge 300 ] && echo warn || echo ok)">${TEMP2} °C</div>
</div>
<div class="card">
<div class="label">Luftfeuchtigkeit</div>
<div class="value ok">${HUM} % rF</div>
</div>
<div class="card">
<div class="label">Leckage Sensor 1</div>
<div class="value $([ "${LEAK1}" = "0" ] && echo ok || echo crit)">$([ "${LEAK1}" = "0" ] && echo OK || echo ALARM)</div>
</div>
<div class="card">
<div class="label">Leckage Sensor 2</div>
<div class="value $([ "${LEAK2}" = "0" ] && echo ok || echo crit)">$([ "${LEAK2}" = "0" ] && echo OK || echo ALARM)</div>
</div>
<div class="card">
<div class="label">Türkontakt</div>
<div class="value $([ "${DOOR}" = "0" ] && echo ok || echo warn)">$([ "${DOOR}" = "0" ] && echo Zu || echo OFFEN)</div>
</div>
<div class="card">
<div class="label">Spannung</div>
<div class="value ok">${VOLT} V</div>
</div>
</body></html>
HTML
echo "Dashboard aktualisiert: ${OUTPUT}"sudo chmod +x /opt/wanguard-didactum/dashboard.sh # Dashboard alle 5 Minuten aktualisieren: echo "*/5 * * * * /opt/wanguard-didactum/dashboard.sh" | sudo crontab -
Das Dashboard ist dann unter 192.168.1.95/didactum-status.html erreichbar und aktualisiert sich automatisch alle 60 Sekunden.
11. Empfohlene Hybridarchitektur mit Nagios / Icinga
Für eine vollständige, professionelle Überwachung der Didactum-Sensoren empfiehlt sich die folgende Hybridarchitektur, bei der Wanguard und ein spezialisiertes Monitoring-Tool parallel betrieben werden:
11.1 Aufgabenteilung
| Aufgabe | Wanguard | Nagios / Icinga / Checkmk |
|---|---|---|
| DDoS-Erkennung und -Mitigation | Ja (Kernfunktion) | Nein |
| Netzwerkbandbreite (Router, Switches) | Ja | Bedingt |
| Didactum-Geräteverfügbarkeit (Ping/SNMP) | Ja | Ja |
| Temperatur-/Feuchte-/Leckage-Checks | Nur via Skript | Ja (nativ) |
| Schwellwert-Alarmierung für Umweltsensoren | Nur via Skript | Ja (nativ) |
| Trendgrafiken für Sensorwerte | Nein | Ja |
| SNMP-Trap-Empfang | Via snmptrapd | Via snmptrapd oder nativ |
| Langzeitdatenspeicherung (90 Tage+) | Nein (Umweltsensoren) | Ja (RRD/InfluxDB) |
11.2 Didactum SNMP-Traps an beide Systeme senden
Das Didactum-Gerät kann Traps an mehrere Empfänger gleichzeitig senden. Im Didactum Web-Interface unter Einstellungen → Netzwerk → SNMP → Trap Receiver beide IPs eintragen:
- Trap Receiver 1: 192.168.1.95 (Wanguard-Server, Port 162)
- Trap Receiver 2: 192.168.1.50 (Nagios/Icinga-Server, Port 162)
11.3 Wanguard-Alert beim Didactum-Trap auslösen
Im Trap-Handler-Skript (Abschnitt 9.2) wird per REST-API ein Wanguard-Custom-Event erzeugt. Gleichzeitig sendet das Nagios/Icinga-System einen eigenen Alert – so sind beide Systeme informiert.
11.4 Verweise auf vollständige Monitoring-Anleitungen
Für die vollständige Integration der Didactum-Sensoren in ein spezialisiertes Monitoring-Tool stehen separate Anleitungen zur Verfügung:
- Didactum-Integration in Nagios – mit vollständigen check_snmp-Definitionen und SNMP-Trap-Empfang
- Didactum-Integration in Icinga 2 – mit DSL-Konfiguration, apply-Regeln und Grafite-Integration
- Didactum-Integration in Checkmk – mit automatischer Service-Discovery und Python-Plugin
- Didactum-Integration in NetXMS – mit DCI-Templates und Dashboard-Visualisierung
12. Fehlerbehebung (Troubleshooting)
| Problem | Mögliche Ursache / Lösung |
|---|---|
| SNMP-Sensor zeigt Timeout im Event-Log | Firewall: UDP Port 161 freigegeben? Community-String korrekt? IP des Didactum-Geräts in Device IP:Port korrekt? Test: snmpwalk -v2c -c public 192.168.1.100 vom Wanguard-Server. |
| Skript erzeugt keine E-Mails | sendmail installiert? (apt install sendmail). SMTP-Relay konfiguriert? Skript manuell testen: bash /opt/wanguard-didactum/didactum_monitor.sh. Log prüfen: cat /var/log/wanguard/didactum_monitor.log. |
| Cron-Job läuft nicht | Crontab-Eintrag korrekt? (crontab -l). Cron-Dienst läuft? (systemctl status cron). Skript ausführbar? (ls -l /opt/wanguard-didactum/). Cron-Log prüfen: journalctl -u cron. |
| Temperaturrohwert falsch (235 statt 23,5) | Im Skript: TEMP=$(echo "scale=1; ${TEMP_RAW} / 10" | bc). bc installiert? (apt install bc). Schwellwerte im Skript als Rohwerte (× 10) definiert? |
| SNMP-Traps kommen nicht an | UDP Port 162 freigegeben? (ufw allow 162/udp). snmptrapd läuft? (systemctl status snmptrapd). Trap-Receiver-IP im Didactum-Gerät korrekt? Community-String stimmt? |
| Wanguard REST-API-Aufruf schlägt fehl | API-Key gültig? (Configuration → Users → API Keys in Wanguard). SSL-Zertifikat des Wanguard-Servers vertrauenswürdig? (curl -k für Test). API-URL korrekt? (https://... /wanguard-api/v3/). |
| Dashboard zeigt keine Werte | Skript ausführbar? Web-Server (apache2 oder nginx) läuft? Schreibrechte auf /var/www/html/? Skript manuell ausführen und Ausgabe prüfen. |
| Wanguard-Event-Log zeigt keine Custom-Events | API-Key und URL im Skript korrekt? Wanguard-Server erreichbar? Curl-Ausgabe im Log prüfen. Wanguard-API-Dokumentation unter Help → API in der Console. |
Diagnose-Befehle Übersicht
# Wanguard-Dienste prüfen: sudo systemctl status wanguard-console sudo systemctl status wanguard-sensor # Wanguard-Log: sudo tail -f /var/log/wanguard/wanguard.log # SNMP-Erreichbarkeit testen: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 # Einzelne OID abfragen: snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # Monitoring-Skript manuell ausführen: bash /opt/wanguard-didactum/didactum_monitor.sh # Didactum-Monitor-Log prüfen: sudo tail -f /var/log/wanguard/didactum_monitor.log # Trap-Log prüfen: sudo tail -f /var/log/wanguard/didactum_traps.log # snmptrapd-Log: sudo journalctl -u snmptrapd -f # Test-Trap senden: snmptrap -v2c -c public 192.168.1.95 '' \ .1.3.6.1.4.1.3854.1.7.2 \ .1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1 i 1 # Cron-Log prüfen: sudo journalctl -u cron | tail -20 # Wanguard REST-API testen: curl -s -k \ -H "Authorization: Bearer IHR-API-KEY" \ "https://192.168.1.95/wanguard-api/v3/events" | python3 -m json.tool # Firewall-Status: sudo ufw status verbose
Anhang: Datei- und Skript-Übersicht
| Datei / Pfad | Zweck | Ausführung |
|---|---|---|
| /opt/wanguard-didactum/didactum_monitor.sh | Haupt-Monitoring: Temperatur, Feuchte, Spannung, Tür | Cron: alle 5 Minuten |
| /opt/wanguard-didactum/didactum_leakcheck.sh | Schnellcheck: Leckage, Rauch | Cron: jede Minute |
| /opt/wanguard-didactum/didactum_trap_handler.sh | SNMP-Trap-Handler für snmptrapd | Automatisch via snmptrapd |
| /opt/wanguard-didactum/dashboard.sh | HTML-Dashboard-Generator | Cron: alle 5 Minuten |
| /var/log/wanguard/didactum_monitor.log | Log-Datei für Monitoring-Skript | Automatisch befüllt |
| /var/log/wanguard/didactum_traps.log | Log-Datei für SNMP-Traps | Automatisch befüllt |
| /var/www/html/didactum-status.html | HTML-Statusseite (Dashboard) | Automatisch generiert |
| /etc/snmp/snmptrapd.conf | snmptrapd-Konfiguration | Einmalige Konfiguration |
Für firmware-spezifische OIDs und unterstützte Sensortypen immer die aktuelle Didactum-Gerätedokumentation konsultieren. Wanguard-API-Details sind in der Wanguard-Console unter Help → API dokumentiert.