Didactum Monitoring-Geräte und Sensoren – Integration in Opmantek NMIS
Diese Anleitung beschreibt die vollständige Integration von Didactum Monitoring-Geräten in Opmantek NMIS (Network Management Information System), Version 8.x und 9.x (auch als Firstwave NMIS bekannt). Ziel ist die zentrale Überwachung aller Sensoren – Temperatur, Luftfeuchtigkeit, Leckage, Spannung, Türkontakte und weitere – über ein benutzerdefiniertes NMIS-Device-Model, inklusive RRD-Trendgrafiken, proaktiver Schwellwertalarme und SNMP-Trap-Verarbeitung.
Hinweis zur Produktgeschichte: NMIS wurde seit 1999 von Opmantek entwickelt und ist unter GPL als Open Source verfügbar. Opmantek wurde von Firstwave übernommen; das Produkt wird seither als Firstwave NMIS weiterentwickelt. NMIS 8 und NMIS 9 verwenden identische Model-Dateistrukturen – diese Anleitung ist für beide Versionen gültig, versionsspezifische Unterschiede werden explizit gekennzeichnet.
1. Grundlagen und Architektur
NMIS sammelt Fault-, Performance- und Konfigurationsdaten von Netzwerkgeräten via SNMP. Die Erweiterbarkeit basiert auf einem Device Model-System: Für jeden Gerätetyp definiert eine Perl-Hashdatei, welche OIDs abgefragt werden, wie die Daten in RRD-Datenbanken gespeichert werden, welche Graphen erzeugt werden und welche Schwellwerte zu Alarmen führen. Für Didactum-Geräte wird ein eigenes Model angelegt.
NMIS Model-Architektur
| Datei | Zweck | Relevanz für Didactum |
|---|---|---|
| Model-Didactum.nmis | Gerätespezifisches Model: OIDs, RRD-Typen, Graphtypen, Schwellwertnamen | Zentrale Datei – hier werden alle Didactum-OIDs definiert |
| Common-database.nmis | RRD-Dateipfade für alle Metriken | Speicherpfade für Temperatur, Leckage, Feuchte usw. |
| Common-heading.nmis | Beschriftungen (Labels) für Graphen | Lesbare Namen für Graph-Überschriften |
| Common-stats.nmis | RRDtool-Definitionen für Statisik-Berechnungen | Min/Max/Avg-Berechnungen für Sensor-Werte |
| Common-threshold.nmis | Schwellwertdefinitionen (warning, minor, major, critical, fatal) | Alarm-Grenzen für alle Didactum-Sensoren |
| Common-graph-*.nmis | Graph-Templates (RRDtool-Definitionen für Grafiken) | Visualisierung der Temperatur- und Sensor-Verläufe |
NMIS Verzeichnisstruktur
| Pfad (NMIS 8) | Pfad (NMIS 9) | Inhalt |
|---|---|---|
| /usr/local/nmis8/models/ | /usr/local/nmis9/models-default/ | Integrierte Standard-Models (nicht bearbeiten) |
| /usr/local/nmis8/models-custom/ | /usr/local/nmis9/models-custom/ | Eigene/angepasste Models (hier Didactum-Model ablegen) |
| /usr/local/nmis8/conf/ | /usr/local/nmis9/conf/ | Konfigurationsdateien (Nodes, System-Config) |
| /usr/local/nmis8/database/ | /usr/local/nmis9/database/ | RRD-Datenbanken für Zeitreihendaten |
| /usr/local/nmis8/logs/ | /usr/local/nmis9/logs/ | Log-Dateien |
Verarbeitungsablauf für Didactum-Sensoren
- NMIS pollt das Didactum-Gerät via SNMP basierend auf dem Device Model.
- OID-Werte werden gelesen und in RRD-Dateien geschrieben.
- Bei jedem Threshold-Check werden Werte gegen Schwellwerte geprüft.
- Grenzwertüberschreitungen erzeugen NMIS-Events (Proactive Alerts).
- Events lösen Benachrichtigungen per E-Mail oder Eskalation aus.
- Aus den RRD-Daten werden automatisch Trendgrafiken erzeugt.
2. Voraussetzungen
- Opmantek NMIS 8.x oder NMIS 9.x auf einem Linux-Server (CentOS/RHEL 7+ oder Ubuntu 18+)
- NMIS Web-Interface erreichbar (Standard: Port 80 oder 443)
- Root-Zugriff auf den NMIS-Server für Model-Dateien
- Perl mit SNMP-Modulen (Net::SNMP, SNMP) – in der Regel mit NMIS installiert
- SNMP-Tools (snmpwalk, snmpget) zur Vorbereitung
- Didactum Monitoring-Gerät im Netzwerk erreichbar, SNMP aktiviert
- UDP Port 161 vom NMIS-Server zum Didactum-Gerät freigegeben
- UDP Port 162 auf dem NMIS-Server für SNMP-Traps freigegeben
- SNMP-Community-String bekannt (Standard: public)
Beispiel-Netzwerkkonfiguration
| Gerät | IP-Adresse | Rolle |
|---|---|---|
| NMIS-Server | 192.168.1.96 | Monitoring-Server, Web-Interface, Trap-Receiver |
| 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 NMIS-Servers (192.168.1.96)
- SNMP Trap Receiver: IP des NMIS-Servers, Port 162
- Einstellungen speichern.
3.2 Erreichbarkeit testen und SNMP-Walk durchführen
# SNMP Walk – alle Didactum-OIDs: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 # Temperatur Sensor 1 (Rohwert × 10): snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # System-OID (für Model-Erkennung): snmpget -v2c -c public 192.168.1.100 1.3.6.1.2.1.1.2.0 # NMIS-eigenes SNMP-Tool (NMIS 8): /usr/local/nmis8/bin/nmis.pl type=snmpwalk node=didactum-rack01 # NMIS-eigenes SNMP-Tool (NMIS 9): /usr/local/nmis9/bin/nmis-cli.pl snmpwalk=didactum-rack01
Wichtig:
Didactum gibt Temperatur- und Spannungswerte mit Faktor 10 zurück (235 = 23,5°C). Im NMIS-Model wird dies über die Option calculate oder direkt in der Common-threshold.nmis berücksichtigt.
4. NMIS vorbereiten
4.1 NMIS-Dienste prüfen
# NMIS-Dienststatus (NMIS 8): /usr/local/nmis8/bin/nmis.pl type=status # NMIS-Dienststatus (NMIS 9): systemctl status nmis9d # oder: /usr/local/nmis9/bin/nmis-cli.pl status # Web-Interface aufrufen: # 192.168.1.96/nmis8 (NMIS 8) # 192.168.1.96/nmis9 (NMIS 9)
4.2 Didactum MIB-Datei in NMIS laden
# MIB-Datei ins NMIS-MIB-Verzeichnis kopieren: sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/local/nmis8/mibs/ # oder für NMIS 9: sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/local/nmis9/mibs/ # MIB mit NMIS-Tool verarbeiten (NMIS 8): /usr/local/nmis8/bin/nmis-mibs.pl action=load mib=DIDACTUM-RACKMONI2-MIB # System-SNMP-MIB-Verzeichnis (für snmpwalk-Namensauflösung): sudo cp DIDACTUM-RACKMONI2-MIB.mib /usr/share/snmp/mibs/ echo "mibs +DIDACTUM-RACKMONI2-MIB" | sudo tee -a /etc/snmp/snmp.conf
4.3 Model-Tool für automatische Modellgenerierung verwenden (NMIS 9)
NMIS 9 bietet ein leistungsstarkes Tool, das aus einem SNMP-Walk automatisch ein Basis-Model generiert:
# Zunächst Node anlegen (Abschnitt 5), dann Model automatisch generieren: /usr/local/nmis9/admin/model_tool.pl \ node=didactum-rack01 \ model=Didactum-RackMonitor \ common_exclude="Windows|^tcp|^udp" # Generiertes Model liegt in: # /usr/local/nmis9/models-custom/Model-Didactum-RackMonitor.nmis # Model bearbeiten und Didactum-spezifische OIDs ergänzen (Abschnitt 6).
5. Didactum-Gerät als Node anlegen
5.1 Node über das Web-Interface anlegen
- NMIS Web-Interface aufrufen.
- Navigation: System → Add/Edit Nodes and Devices.
- Neuen Node hinzufügen – folgende Felder ausfüllen:
- Name: didactum-rack01 (kein Leerzeichen, Groß-/Kleinschreibung beachten)
- Host (IP/DNS): 192.168.1.100
- Group: Didactum-Monitoring (neue Gruppe)
- Role: access (oder core je nach Klassifikation)
- Type: generic
- Model: Automatic (zunächst, wird später auf eigenes Model geändert)
- SNMP version: snmpv2c
- SNMP Community: public
- Collect: true
- Active: true
- Klick auf Add and Update Node.
5.2 Node per Kommandozeile anlegen (NMIS 8)
# Nodes-Konfigurationsdatei öffnen:
sudo nano /usr/local/nmis8/conf/Nodes.nmis
# Neuen Eintrag hinzufügen:
'didactum-rack01' => {
'active' => 'true',
'collect' => 'true',
'host' => '192.168.1.100',
'group' => 'Didactum-Monitoring',
'model' => 'Automatic',
'netType' => 'lan',
'roleType' => 'access',
'community' => 'public',
'version' => 'snmpv2c',
'ping' => 'true',
'snmpport' => '161',
'threshold' => 'true',
'rancid' => 'false',
'location' => 'Serverraum A, Rack 03',
'notes' => 'Didactum Rack Monitoring Unit II',
},# Syntax prüfen: perl -c /usr/local/nmis8/conf/Nodes.nmis # Node-Update anstoßen: /usr/local/nmis8/bin/nmis.pl type=update node=didactum-rack01
5.3 Node per CSV-Import (für mehrere Geräte)
# CSV-Import-Skript: /usr/local/nmis8/admin/import_nodes.pl /tmp/didactum_nodes.csv # CSV-Format (Beispiel didactum_nodes.csv): # name,host,group,model,version,community,collect,active # didactum-rack01,192.168.1.100,Didactum-Monitoring,Automatic,snmpv2c,public,true,true # didactum-rack02,192.168.1.101,Didactum-Monitoring,Automatic,snmpv2c,public,true,true
5.4 Node-Status nach dem Anlegen prüfen
# Manuellen Update-Lauf starten: /usr/local/nmis8/bin/nmis.pl type=update node=didactum-rack01 # Oder für NMIS 9: /usr/local/nmis9/bin/nmis-cli.pl act=update node=didactum-rack01 # Im Web-Interface: # System → Node Admin → didactum-rack01 → Status prüfen # SNMP-Status sollte "ok" zeigen, ping sollte "Reachable" sein
6. Device Model für Didactum erstellen
Das Device Model ist die zentrale Konfigurationsdatei, die bestimmt, welche OIDs NMIS vom Didactum-Gerät abfragt und wie diese gespeichert und visualisiert werden.
6.1 Model-Datei erstellen
# NMIS 8: sudo nano /usr/local/nmis8/models-custom/Model-Didactum.nmis # NMIS 9: sudo nano /usr/local/nmis9/models-custom/Model-Didactum.nmis
#############################################################################
# Model-Didactum.nmis
# NMIS Device Model für Didactum Rack Monitoring Units
# Unterstützte OIDs: Temperatur, Leckage, Luftfeuchtigkeit, Spannung,
# Türkontakt, Rauchmelder, Bewegungssensor
# Enterprise OID-Basis: 1.3.6.1.4.1.3854
#############################################################################
%hash = (
'system' => {
'nodegraph' => 'response,didactum-temperature,didactum-humidity,didactum-status',
'nodeModel' => 'Didactum',
'nodeType' => 'generic',
'nodeVendor' => 'Didactum',
'sys' => {
'standard' => {
'snmp' => {
'sysDescr' => {
'oid' => 'sysDescr',
'title' => 'Description',
},
'sysObjectID' => {
'oid' => 'sysObjectID',
'title' => 'Object ID',
},
'sysUpTime' => {
'oid' => 'sysUpTime',
'title' => 'Uptime',
},
'sysContact' => {
'oid' => 'sysContact',
'title' => 'Contact',
},
'sysName' => {
'oid' => 'sysName',
'title' => 'Name',
},
'sysLocation' => {
'oid' => 'sysLocation',
'title' => 'Location',
},
},
},
},
},
'systemHealth' => {
'sections' => 'didactum_temperature,didactum_humidity,didactum_status,didactum_voltage',
'rrd' => {
# ── TEMPERATURSENSOREN ─────────────────────────────────────────────
'didactum_temperature' => {
'graphtype' => 'didactum-temperature',
'indexed' => 'false',
'threshold' => 'didactum_temp',
'snmp' => {
'tempValue1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1',
'title' => 'Temperatur Sensor 1 (x10)',
'option' => 'gauge,0:U',
'calculate' => '$r / 10',
},
'tempValue2' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.16.1.3.2',
'title' => 'Temperatur Sensor 2 (x10)',
'option' => 'gauge,0:U',
'calculate' => '$r / 10',
},
'tempValue3' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.16.1.3.3',
'title' => 'Temperatur Sensor 3 (x10)',
'option' => 'gauge,0:U',
'calculate' => '$r / 10',
},
'tempStatus1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.16.1.4.1',
'title' => 'Temp Status S1',
'option' => 'gauge,0:U',
'threshold' => 'didactum_temp_status',
},
},
},
# ── LUFTFEUCHTIGKEIT ───────────────────────────────────────────────
'didactum_humidity' => {
'graphtype' => 'didactum-humidity',
'indexed' => 'false',
'threshold' => 'didactum_humidity',
'snmp' => {
'humValue1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.17.1.3.1',
'title' => 'Luftfeuchtigkeit Sensor 1',
'option' => 'gauge,0:100',
},
'humValue2' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.17.1.3.2',
'title' => 'Luftfeuchtigkeit Sensor 2',
'option' => 'gauge,0:100',
},
},
},
# ── LECKAGE UND STATUS-SENSOREN ────────────────────────────────────
'didactum_status' => {
'graphtype' => 'didactum-status',
'indexed' => 'false',
'snmp' => {
'leakStatus1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1',
'title' => 'Leckage Sensor 1',
'option' => 'gauge,0:1',
'threshold' => 'didactum_leak',
},
'leakStatus2' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.18.1.4.2',
'title' => 'Leckage Sensor 2',
'option' => 'gauge,0:1',
'threshold' => 'didactum_leak',
},
'doorStatus1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.10.1.3.1',
'title' => 'Türkontakt Sensor 1',
'option' => 'gauge,0:1',
'threshold' => 'didactum_door',
},
'smokeStatus1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.14.1.3.1',
'title' => 'Rauchmelder Sensor 1',
'option' => 'gauge,0:1',
'threshold' => 'didactum_smoke',
},
'vibStatus1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.11.1.3.1',
'title' => 'Bewegungssensor 1',
'option' => 'gauge,0:1',
'threshold' => 'didactum_door',
},
},
},
# ── SPANNUNGSSENSOREN ──────────────────────────────────────────────
'didactum_voltage' => {
'graphtype' => 'didactum-voltage',
'indexed' => 'false',
'threshold' => 'didactum_voltage',
'snmp' => {
'voltValue1' => {
'oid' => '.1.3.6.1.4.1.3854.1.2.2.1.15.1.3.1',
'title' => 'Spannung Sensor 1 (x10)',
'option' => 'gauge,0:U',
'calculate' => '$r / 10',
},
},
},
}, # end rrd
}, # end systemHealth
); # end hash6.2 Model-Syntax prüfen
# Syntax der Model-Datei prüfen (Pflicht nach jeder Änderung!): perl -c /usr/local/nmis8/models-custom/Model-Didactum.nmis # Ausgabe "syntax OK" bedeutet: keine Syntaxfehler. # Ausgabe mit Fehlermeldung: Zeile und Fehlerart werden angezeigt.
6.3 Node auf das neue Model umstellen
- NMIS Web-Interface: System → Add/Edit Nodes → Node didactum-rack01 bearbeiten.
- Feld Model: von Automatic auf Didactum ändern.
- Klick auf Save and Update Node.
# Oder per Kommandozeile (NMIS 8) in Nodes.nmis: # 'model' => 'Didactum', # Update ausführen: /usr/local/nmis8/bin/nmis.pl type=update node=didactum-rack01
7. Common-Dateien konfigurieren
Für vollständige Grafiken und Schwellwerte müssen die NMIS Common-Dateien um Didactum-spezifische Einträge ergänzt werden. Diese Dateien liegen im models-custom-Verzeichnis (eigene Kopie anlegen, nicht die Standard-Dateien überschreiben).
7.1 Common-database.nmis – RRD-Dateipfade
# Bestehende Datei kopieren und erweitern:
sudo cp /usr/local/nmis8/models/Common-database.nmis \
/usr/local/nmis8/models-custom/Common-database.nmis
sudo nano /usr/local/nmis8/models-custom/Common-database.nmisFolgende Einträge im %hash im Abschnitt 'database' ergänzen:
# Didactum-Datenbankpfade (in den database-Hash einfügen): 'didactum_temperature' => '/nodes/$node/health/didactum-temperature.rrd', 'didactum_humidity' => '/nodes/$node/health/didactum-humidity.rrd', 'didactum_status' => '/nodes/$node/health/didactum-status.rrd', 'didactum_voltage' => '/nodes/$node/health/didactum-voltage.rrd',
7.2 Common-heading.nmis – Graph-Überschriften
sudo cp /usr/local/nmis8/models/Common-heading.nmis \
/usr/local/nmis8/models-custom/Common-heading.nmis
# Einträge ergänzen:
'didactum-temperature' => 'Didactum Temperatur (°C)',
'didactum-humidity' => 'Didactum Luftfeuchtigkeit (% rF)',
'didactum-status' => 'Didactum Status-Sensoren',
'didactum-voltage' => 'Didactum Spannung (V)',7.3 Common-stats.nmis – Statistik-Definitionen
# In Common-stats.nmis folgende Einträge im 'stats'-Hash ergänzen:
'didactum_temperature' => [
'DEF:tempValue1=$database:tempValue1:AVERAGE',
'DEF:tempValue2=$database:tempValue2:AVERAGE',
'PRINT:tempValue1:AVERAGE:tempValue1=%1.1lf',
'PRINT:tempValue1:MAX:tempValue1_max=%1.1lf',
'PRINT:tempValue2:AVERAGE:tempValue2=%1.1lf',
],
'didactum_status' => [
'DEF:leakStatus1=$database:leakStatus1:AVERAGE',
'PRINT:leakStatus1:AVERAGE:leakStatus1=%1.0lf',
'DEF:doorStatus1=$database:doorStatus1:AVERAGE',
'PRINT:doorStatus1:AVERAGE:doorStatus1=%1.0lf',
],7.4 Alle Common-Dateien nach Änderung auf Syntax prüfen
# Alle geänderten Common-Dateien prüfen: perl -c /usr/local/nmis8/models-custom/Common-database.nmis perl -c /usr/local/nmis8/models-custom/Common-heading.nmis perl -c /usr/local/nmis8/models-custom/Common-stats.nmis perl -c /usr/local/nmis8/models-custom/Common-threshold.nmis
8. OID-Referenz für NMIS
Alle OIDs basieren auf der Didactum Enterprise OID-Basis 1.3.6.1.4.1.3854. Der Platzhalter {n} steht für den Sensorindex.
8.1 Temperatursensoren
| OID | Beschreibung | Rohwert | NMIS-Calculate | NMIS-Option |
|---|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n} | Temperaturwert Sensor n | °C × 10 | $r / 10 | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n} | Temperatur-Status Sensor n | Enum 0/1/2 | – | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n} | Oberer Grenzwert Sensor n | °C × 10 | $r / 10 | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n} | Unterer Grenzwert Sensor n | °C × 10 | $r / 10 | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n} | Sensor-Name n | Text | – | – |
8.2 Leckage- und Binär-Sensoren
| OID | Beschreibung | Rohwert | NMIS-Threshold-Name |
|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n} | Leckage-Status Sensor n | 0=OK, 1=Leckage | didactum_leak |
| 1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n} | Türkontakt-Status n | 0=zu, 1=offen | didactum_door |
| 1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n} | Rauchmelder-Status n | 0=OK, 1=Alarm | didactum_smoke |
| 1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n} | Erschütterung / Bewegung n | 0=keine, 1=Alarm | didactum_door |
8.3 Luftfeuchtigkeit und Spannung
| OID | Beschreibung | Rohwert | NMIS-Calculate | NMIS-Option |
|---|---|---|---|---|
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n} | Luftfeuchtigkeitswert Sensor n | % rF | – | gauge,0:100 |
| 1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n} | Luftfeuchtigkeits-Status n | Enum 0/1/2 | – | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n} | Spannungswert Sensor n | V × 10 | $r / 10 | gauge,0:U |
| 1.3.6.1.4.1.3854.1.2.2.1.15.1.4.{n} | Spannungs-Status Sensor n | Enum 0/1/2 | – | gauge,0:U |
| 1.3.6.1.2.1.1.3.0 | System Uptime | Hundertstelsekunden | – | gauge,0:U |
9. Schwellwerte und Alarmierung konfigurieren
9.1 Common-threshold.nmis – Schwellwertdefinitionen
sudo cp /usr/local/nmis8/models/Common-threshold.nmis \
/usr/local/nmis8/models-custom/Common-threshold.nmis
sudo nano /usr/local/nmis8/models-custom/Common-threshold.nmisFolgende Einträge im threshold-Hash ergänzen:
#####################################################################
# Didactum-Schwellwerte
# Alle Temperaturwerte sind nach calculate ($r / 10) bereits in °C
#####################################################################
# Temperaturschwellwerte (IT-Rack):
'didactum_temp' => {
'item' => 'tempValue1',
'event' => 'Proactive Didactum Temperature',
'select' => {
'default' => {
'value' => {
'fatal' => '40', # 40,0 °C
'critical' => '35', # 35,0 °C
'major' => '32', # 32,0 °C
'minor' => '30', # 30,0 °C
'warning' => '28', # 28,0 °C
},
},
},
},
# Leckage-Schwellwerte (binär: 0=OK, 1=Alarm):
'didactum_leak' => {
'item' => 'leakStatus1',
'event' => 'Proactive Didactum Leak Detected',
'select' => {
'default' => {
'value' => {
'fatal' => '1',
'critical' => '1',
'major' => '1',
'minor' => '1',
'warning' => '0.5',
},
},
},
},
# Türkontakt / Bewegung:
'didactum_door' => {
'item' => 'doorStatus1',
'event' => 'Proactive Didactum Door Open',
'select' => {
'default' => {
'value' => {
'major' => '1',
'minor' => '1',
'warning' => '0.5',
},
},
},
},
# Rauchmelder:
'didactum_smoke' => {
'item' => 'smokeStatus1',
'event' => 'Proactive Didactum Smoke Alarm',
'select' => {
'default' => {
'value' => {
'fatal' => '1',
'critical' => '1',
'major' => '1',
'warning' => '0.5',
},
},
},
},
# Luftfeuchtigkeit:
'didactum_humidity' => {
'item' => 'humValue1',
'event' => 'Proactive Didactum Humidity',
'select' => {
'default' => {
'value' => {
'fatal' => '80', # über 80 % rF
'critical' => '75', # über 75 % rF
'major' => '70', # über 70 % rF
'warning' => '65', # über 65 % rF
},
'low_value' => {
'warning' => '20', # unter 20 % rF
'minor' => '15',
'critical' => '10',
},
},
},
},
# Spannungsschwellwerte (nach calculate: bereits in V):
'didactum_voltage' => {
'item' => 'voltValue1',
'event' => 'Proactive Didactum Voltage',
'select' => {
'default' => {
'value' => {
'fatal' => '260', # über 260 V
'critical' => '253', # über 253 V (EN 50160 +10%)
'warning' => '250',
},
'low_value' => {
'warning' => '210',
'critical' => '207', # unter 207 V (EN 50160 -10%)
'fatal' => '196',
},
},
},
},9.2 Threshold-Lauf manuell ausführen
# Threshold-Check manuell starten (NMIS 8): /usr/local/nmis8/bin/nmis.pl type=threshold node=didactum-rack01 debug=true # NMIS 9: /usr/local/nmis9/bin/nmis-cli.pl act=threshold node=didactum-rack01 # Events im Web-Interface prüfen: # System → Events → Filter: Node = didactum-rack01
9.3 E-Mail-Benachrichtigung konfigurieren
- Navigation: System → System Configuration → Escalations.
- Eskalationsregel für Didactum-Alarme anlegen:
- Event: Proactive Didactum Leak Detected
- Level: Fatal
- Contact: Contact1 (zuvor mit E-Mail konfigurieren)
- Delay: 0 Minuten (sofort)
# Kontakt-Konfiguration in /usr/local/nmis8/conf/Contacts.nmis:
'Contact1' => {
'name' => 'IT-Administrator',
'email' => 'admin@example.com',
'pager' => '+4915112345678',
'mobile'=> '+4915112345678',
'phone' => '',
},9.4 Empfohlene Schwellwerte
| Threshold-Name | Warning | Major | Critical | Fatal | Norm |
|---|---|---|---|---|---|
| didactum_temp (°C) | 28 | 30 | 35 | 40 | ASHRAE A1: 15–32 °C |
| didactum_humidity (% rF) | 65 / <20 | 70 / <15 | 75 / <10 | 80 | ASHRAE: 20–80 % rF |
| didactum_leak | – | – | – | 1 | Sofortalarm |
| didactum_voltage (V) | 250 / <210 | – | 253 / <207 | 260 / <196 | EN 50160 ±10 % |
| didactum_door | – | 1 | – | – | Policy-abhängig |
| didactum_smoke | – | – | – | 1 | Sofortalarm |
10. SNMP-Trap-Integration
NMIS empfängt SNMP-Traps über das integrierte Trap-Handling. Eingehende Traps werden dem sendenden Node zugeordnet und als Events verarbeitet.
10.1 SNMP-Trap-Receiver in NMIS aktivieren
# NMIS 8 – Trap-Daemon prüfen: ps aux | grep snmptrapd # oder: /usr/local/nmis8/bin/nmis.pl type=daemon action=start # Firewall für Traps öffnen: sudo firewall-cmd --permanent --add-port=162/udp sudo firewall-cmd --reload # Trap-Handler-Konfiguration (NMIS 8): cat /usr/local/nmis8/conf/Traphandler.nmis
10.2 Trap-Event-Definitionen für Didactum
# In /usr/local/nmis8/conf/Traphandler.nmis oder
# /usr/local/nmis8/models-custom/Common-trap.nmis Einträge ergänzen:
# Leckage-Trap:
'.1.3.6.1.4.1.3854.1.7.2' => {
'event' => 'Didactum Leckage Alarm',
'severity' => 'Fatal',
'message' => 'LECKAGE erkannt auf $node – Sofortiger Handlungsbedarf!',
},
# Temperatur-Alarm-Trap:
'.1.3.6.1.4.1.3854.1.7.1' => {
'event' => 'Didactum Temperatur Alarm',
'severity' => 'Critical',
'message' => 'Temperatur-Alarm auf $node',
},
# Rauchmelder-Trap:
'.1.3.6.1.4.1.3854.1.7.14' => {
'event' => 'Didactum Rauchmelder Alarm',
'severity' => 'Fatal',
'message' => 'RAUCHMELDER ausgelöst auf $node!',
},
# Türkontakt-Trap:
'.1.3.6.1.4.1.3854.1.7.10' => {
'event' => 'Didactum Türkontakt geöffnet',
'severity' => 'Major',
'message' => 'Türkontakt offen auf $node',
},
# Gerät-Neustart:
'.1.3.6.1.4.1.3854.1.7.99' => {
'event' => 'Didactum Node Reboot',
'severity' => 'Warning',
'message' => 'Didactum-Gerät $node wurde neu gestartet',
},10.3 Wichtige Didactum Trap-OIDs
| Trap-OID | Ereignis | NMIS-Severity |
|---|---|---|
| 1.3.6.1.4.1.3854.1.7.1 | Temperatur-Alarm | Critical |
| 1.3.6.1.4.1.3854.1.7.2 | Leckage-Alarm | Fatal |
| 1.3.6.1.4.1.3854.1.7.3 | Luftfeuchtigkeits-Alarm | Major |
| 1.3.6.1.4.1.3854.1.7.4 | Spannungs-Alarm | Critical |
| 1.3.6.1.4.1.3854.1.7.10 | Türkontakt geöffnet | Major |
| 1.3.6.1.4.1.3854.1.7.14 | Rauchmelder-Alarm | Fatal |
| 1.3.6.1.4.1.3854.1.7.99 | Gerät-Neustart | Warning |
10.4 Trap-Test durchführen
# Test-Trap für Leckage an NMIS senden: snmptrap -v2c -c public 192.168.1.96 '' \ .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 # Event im NMIS Web-Interface prüfen: # System → Events → Filter: Node = didactum-rack01
11. Grafiken und Reports
11.1 NMIS-Grafiken aufrufen
- NMIS Web-Interface aufrufen.
- Navigation: Network → Node View → Node didactum-rack01 auswählen.
- Registerkarte Health → Alle Didactum-Graphen werden angezeigt.
- Zeitbereiche: Tagesgrafik (Standard), Woche, Monat, Jahr.
- Node Health-Dashboard zeigt alle Sensor-Werte auf einen Blick.
11.2 Vollständigen Collect/Update-Zyklus starten
# Collect-Lauf (Daten sammeln): /usr/local/nmis8/bin/nmis.pl type=collect node=didactum-rack01 # Update-Lauf (Discovery und Grafiken aktualisieren): /usr/local/nmis8/bin/nmis.pl type=update node=didactum-rack01 # Threshold-Check: /usr/local/nmis8/bin/nmis.pl type=threshold node=didactum-rack01 # Alle Nodes (täglicher Cron-Lauf): /usr/local/nmis8/bin/nmis.pl type=collect /usr/local/nmis8/bin/nmis.pl type=update /usr/local/nmis8/bin/nmis.pl type=threshold
11.3 Node Health Dashboard
- Navigation: Network → Network Health.
- Gruppenfilter: Didactum-Monitoring.
- Übersicht aller Didactum-Nodes mit aktuellem Status, letztem Event und Health-Score.
11.4 Reports aus NMIS
- Navigation: System → Reports.
- Report-Typ: Node Availability oder Event Report.
- Filter: Gruppe Didactum-Monitoring, Zeitraum: Letzter Monat.
- Export als PDF oder HTML für monatliche Auswertungen.
12. Fehlerbehebung (Troubleshooting)
| Problem | Mögliche Ursache / Lösung |
|---|---|
| Node zeigt „SNMP Down" Event | Community-String falsch? (snmpget -v2c -c public 192.168.1.100 sysDescr.0). Firewall UDP 161 freigegeben? SNMP am Didactum-Gerät aktiviert? Allowed-Managers-Einschränkung am Gerät? |
| Model-Datei wird nicht geladen | Syntaxfehler: perl -c /usr/local/nmis8/models-custom/Model-Didactum.nmis. Node auf das Model umgestellt? Update-Lauf nach Model-Änderung ausgeführt? |
| Temperaturwert falsch (235 statt 23,5) | 'calculate' => '$r / 10' im Model-OID-Eintrag fehlt. Model-Datei nach Änderung mit perl -c prüfen und Update ausführen. |
| Keine RRD-Grafiken erscheinen | RRD-Pfade in Common-database.nmis korrekt? Collect-Lauf ausgeführt? RRD-Verzeichnis beschreibbar: ls -la /usr/local/nmis8/database/nodes/didactum-rack01/. |
| Threshold-Events werden nicht erzeugt | Threshold-Name im Model stimmt mit Common-threshold.nmis überein? Threshold-Lauf ausgeführt: nmis.pl type=threshold debug=true. Debug-Ausgabe auf Fehler prüfen. |
| SNMP-Traps kommen nicht an | UDP Port 162 auf dem NMIS-Server freigegeben? NMIS-Trap-Daemon läuft? Korrekte IP als Trap-Receiver im Didactum-Gerät? Community-String stimmt? |
| Common-Datei-Syntaxfehler | Alle geänderten Common-Dateien mit perl -c prüfen. Hash-Kommas und Klammern beachten. NMIS verwendet strenge Perl-Hash-Syntax. |
| Node-Update dauert sehr lange | SNMP-Timeout erhöhen: Node-Konfiguration → snmptimeout. Oder Community-String überprüfen. Debug: nmis.pl type=update node=didactum-rack01 debug=true 2>&1 | head -50. |
Diagnose-Befehle Übersicht
# NMIS-Status prüfen (NMIS 8): /usr/local/nmis8/bin/nmis.pl type=status # NMIS Self-Test: /usr/local/nmis8/bin/nmis.pl type=self_test # Node collect + update + threshold in einem Durchgang: /usr/local/nmis8/bin/nmis.pl type=collect node=didactum-rack01 debug=true /usr/local/nmis8/bin/nmis.pl type=update node=didactum-rack01 debug=true /usr/local/nmis8/bin/nmis.pl type=threshold node=didactum-rack01 debug=true # SNMP-Walk über NMIS: /usr/local/nmis8/bin/nmis.pl type=snmpwalk node=didactum-rack01 # Model-Datei auf Syntax prüfen: perl -c /usr/local/nmis8/models-custom/Model-Didactum.nmis perl -c /usr/local/nmis8/models-custom/Common-threshold.nmis # NMIS-Log in Echtzeit verfolgen: sudo tail -f /usr/local/nmis8/logs/nmis.log # Event-Log: sudo tail -f /usr/local/nmis8/logs/event.log # SNMP-Erreichbarkeit direkt testen: snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854 snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1 # Test-Trap senden: snmptrap -v2c -c public 192.168.1.96 '' \ .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 # Model-Tool (NMIS 9) – Basis-Model aus SNMP-Walk erzeugen: /usr/local/nmis9/admin/model_tool.pl \ node=didactum-rack01 \ model=Didactum \ common_exclude="Windows" # Nodes-Datei exportieren: /usr/local/nmis8/admin/export_nodes.pl /tmp/nodes_export.csv # Firewall-Port für Traps freigeben: sudo firewall-cmd --permanent --add-port=162/udp sudo firewall-cmd --reload
Anhang: NMIS-Konfiguration Schnell-Referenz
| Datei / Pfad (NMIS 8) | Zweck |
|---|---|
| /usr/local/nmis8/models-custom/Model-Didactum.nmis | Didactum-Device-Model: OIDs, Graphtypen, Schwellwertreferenzen |
| /usr/local/nmis8/models-custom/Common-database.nmis | RRD-Dateipfade für Didactum-Metriken |
| /usr/local/nmis8/models-custom/Common-heading.nmis | Lesbare Graph-Überschriften |
| /usr/local/nmis8/models-custom/Common-stats.nmis | RRDtool-Statistik-Definitionen |
| /usr/local/nmis8/models-custom/Common-threshold.nmis | Schwellwertdefinitionen (warning bis fatal) |
| /usr/local/nmis8/conf/Nodes.nmis | Node-Liste (alle überwachten Geräte) |
| /usr/local/nmis8/conf/Contacts.nmis | Kontaktadressen für Benachrichtigungen |
| /usr/local/nmis8/conf/Escalations.nmis | Eskalationsregeln für Events |
| /usr/local/nmis8/database/nodes/didactum-rack01/ | RRD-Dateien des Didactum-Nodes |
| /usr/local/nmis8/logs/nmis.log | NMIS-Hauptlog |
| /usr/local/nmis8/logs/event.log | Event-Log (alle Alarme) |
Für firmware-spezifische OIDs und unterstützte Sensortypen immer die aktuelle Didactum-Gerätedokumentation konsultieren. NMIS-Dokumentation: docs.community.firstwave.com.