Sprachauswahl:
Skip to main navigation Skip to main content Skip to page footer

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

DateiZweckRelevanz für Didactum
Model-Didactum.nmisGerätespezifisches Model: OIDs, RRD-Typen, Graphtypen, SchwellwertnamenZentrale Datei – hier werden alle Didactum-OIDs definiert
Common-database.nmisRRD-Dateipfade für alle MetrikenSpeicherpfade für Temperatur, Leckage, Feuchte usw.
Common-heading.nmisBeschriftungen (Labels) für GraphenLesbare Namen für Graph-Überschriften
Common-stats.nmisRRDtool-Definitionen für Statisik-BerechnungenMin/Max/Avg-Berechnungen für Sensor-Werte
Common-threshold.nmisSchwellwertdefinitionen (warning, minor, major, critical, fatal)Alarm-Grenzen für alle Didactum-Sensoren
Common-graph-*.nmisGraph-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

  1. NMIS pollt das Didactum-Gerät via SNMP basierend auf dem Device Model.
  2. OID-Werte werden gelesen und in RRD-Dateien geschrieben.
  3. Bei jedem Threshold-Check werden Werte gegen Schwellwerte geprüft.
  4. Grenzwertüberschreitungen erzeugen NMIS-Events (Proactive Alerts).
  5. Events lösen Benachrichtigungen per E-Mail oder Eskalation aus.
  6. 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ätIP-AdresseRolle
NMIS-Server192.168.1.96Monitoring-Server, Web-Interface, Trap-Receiver
Didactum Monitoring Unit192.168.1.100Überwachtes Gerät (SNMP-Agent)

3. SNMP-Vorbereitung am Didactum-Gerät

3.1 SNMP aktivieren

  1. Didactum Web-Interface aufrufen: 192.168.1.100, Login mit Admin-Konto.
  2. Navigation: Einstellungen → Netzwerk → SNMP (oder: Settings → Network → SNMP).
  3. 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
  4. 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

  1. NMIS Web-Interface aufrufen.
  2. Navigation: System → Add/Edit Nodes and Devices.
  3. 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
  4. 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 hash

6.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

  1. NMIS Web-Interface: System → Add/Edit Nodes → Node didactum-rack01 bearbeiten.
  2. Feld Model: von Automatic auf Didactum ändern.
  3. 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.nmis

Folgende 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

OIDBeschreibungRohwertNMIS-CalculateNMIS-Option
1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n}Temperaturwert Sensor n°C × 10$r / 10gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n}Temperatur-Status Sensor nEnum 0/1/2gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n}Oberer Grenzwert Sensor n°C × 10$r / 10gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n}Unterer Grenzwert Sensor n°C × 10$r / 10gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n}Sensor-Name nText

8.2 Leckage- und Binär-Sensoren

OIDBeschreibungRohwertNMIS-Threshold-Name
1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n}Leckage-Status Sensor n0=OK, 1=Leckagedidactum_leak
1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n}Türkontakt-Status n0=zu, 1=offendidactum_door
1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n}Rauchmelder-Status n0=OK, 1=Alarmdidactum_smoke
1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n}Erschütterung / Bewegung n0=keine, 1=Alarmdidactum_door

8.3 Luftfeuchtigkeit und Spannung

OIDBeschreibungRohwertNMIS-CalculateNMIS-Option
1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n}Luftfeuchtigkeitswert Sensor n% rFgauge,0:100
1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n}Luftfeuchtigkeits-Status nEnum 0/1/2gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n}Spannungswert Sensor nV × 10$r / 10gauge,0:U
1.3.6.1.4.1.3854.1.2.2.1.15.1.4.{n}Spannungs-Status Sensor nEnum 0/1/2gauge,0:U
1.3.6.1.2.1.1.3.0System UptimeHundertstelsekundengauge,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.nmis

Folgende 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

  1. Navigation: System → System Configuration → Escalations.
  2. 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-NameWarningMajorCriticalFatalNorm
didactum_temp (°C)28303540ASHRAE A1: 15–32 °C
didactum_humidity (% rF)65 / <2070 / <1575 / <1080ASHRAE: 20–80 % rF
didactum_leak1Sofortalarm
didactum_voltage (V)250 / <210253 / <207260 / <196EN 50160 ±10 %
didactum_door1Policy-abhängig
didactum_smoke1Sofortalarm

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-OIDEreignisNMIS-Severity
1.3.6.1.4.1.3854.1.7.1Temperatur-AlarmCritical
1.3.6.1.4.1.3854.1.7.2Leckage-AlarmFatal
1.3.6.1.4.1.3854.1.7.3Luftfeuchtigkeits-AlarmMajor
1.3.6.1.4.1.3854.1.7.4Spannungs-AlarmCritical
1.3.6.1.4.1.3854.1.7.10Türkontakt geöffnetMajor
1.3.6.1.4.1.3854.1.7.14Rauchmelder-AlarmFatal
1.3.6.1.4.1.3854.1.7.99Gerät-NeustartWarning

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

  1. NMIS Web-Interface aufrufen.
  2. Navigation: Network → Node View → Node didactum-rack01 auswählen.
  3. Registerkarte Health → Alle Didactum-Graphen werden angezeigt.
  4. Zeitbereiche: Tagesgrafik (Standard), Woche, Monat, Jahr.
  5. 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

  1. Navigation: Network → Network Health.
  2. Gruppenfilter: Didactum-Monitoring.
  3. Übersicht aller Didactum-Nodes mit aktuellem Status, letztem Event und Health-Score.

11.4 Reports aus NMIS

  1. Navigation: System → Reports.
  2. Report-Typ: Node Availability oder Event Report.
  3. Filter: Gruppe Didactum-Monitoring, Zeitraum: Letzter Monat.
  4. Export als PDF oder HTML für monatliche Auswertungen.

12. Fehlerbehebung (Troubleshooting)

ProblemMögliche Ursache / Lösung
Node zeigt „SNMP Down" EventCommunity-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 geladenSyntaxfehler: 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 erscheinenRRD-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 erzeugtThreshold-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 anUDP 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-SyntaxfehlerAlle geänderten Common-Dateien mit perl -c prüfen. Hash-Kommas und Klammern beachten. NMIS verwendet strenge Perl-Hash-Syntax.
Node-Update dauert sehr langeSNMP-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.nmisDidactum-Device-Model: OIDs, Graphtypen, Schwellwertreferenzen
/usr/local/nmis8/models-custom/Common-database.nmisRRD-Dateipfade für Didactum-Metriken
/usr/local/nmis8/models-custom/Common-heading.nmisLesbare Graph-Überschriften
/usr/local/nmis8/models-custom/Common-stats.nmisRRDtool-Statistik-Definitionen
/usr/local/nmis8/models-custom/Common-threshold.nmisSchwellwertdefinitionen (warning bis fatal)
/usr/local/nmis8/conf/Nodes.nmisNode-Liste (alle überwachten Geräte)
/usr/local/nmis8/conf/Contacts.nmisKontaktadressen für Benachrichtigungen
/usr/local/nmis8/conf/Escalations.nmisEskalationsregeln für Events
/usr/local/nmis8/database/nodes/didactum-rack01/RRD-Dateien des Didactum-Nodes
/usr/local/nmis8/logs/nmis.logNMIS-Hauptlog
/usr/local/nmis8/logs/event.logEvent-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.

Diese Webseite nutzt Cookies

Diese Webseite nutzt Cookies zur Verbesserung des Erlebnisses unserer Besucher. Indem Sie weiterhin auf dieser Webseite navigieren, erklären Sie sich mit unserer Verwendung von Cookies einverstanden.

Essenzielle Cookies ermöglichen grundlegende Funktionen und sind für die einwandfreie Funktion der Website erforderlich.
Statistik Cookies erfassen Informationen anonym. Diese Informationen helfen uns zu verstehen, wie unsere Besucher unsere Website nutzen.
Marketing-Cookies werden von Drittanbietern oder Publishern verwendet, um personalisierte Werbung anzuzeigen. Sie tun dies, indem sie Besucher über Websites hinweg verfolgen.