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

Didactum Monitoring-Geräte und Sensoren – Integration in Checkmk

Diese Anleitung beschreibt die vollständige Integration von Didactum Monitoring-Geräten in Checkmk (Raw Edition, Standard Edition und Managed Services Edition). Ziel ist die zentrale Überwachung aller angeschlossenen Sensoren – Temperatur, Luftfeuchtigkeit, Leckage, Spannung, Türkontakte und weitere – über SNMP, inklusive automatischer Service-Erkennung, Alarmierung und Trendgrafiken.

1. Grundlagen und Architektur

Checkmk ist eine umfassende Monitoring-Plattform mit starkem Fokus auf automatische Konfiguration. Die Service Discovery erkennt viele Services automatisch – bei SNMP-Geräten wie dem Didactum durch einen Walk der Gerätedaten. Manuelle Konfiguration ist nur für gerätespezifische OIDs erforderlich, die nicht in den Standard-Checkmk-Plugins enthalten sind.

Checkmk-Editionen im Vergleich

EditionKürzelBesonderheit
Raw EditionCREKostenlos, Open Source, Nagios-Core, keine Agenten-Bakery
Cloud EditionCCESaaS-optimiert, CMC (Checkmk Micro Core)
Standard EditionCSEKommerziell, CMC, Agenten-Bakery, Business Intelligence
Managed Services EditionCMEMulti-Mandanten, für MSPs und große Umgebungen

Diese Anleitung gilt für alle Editionen. Abweichungen werden explizit gekennzeichnet.

Verarbeitungsablauf für SNMP-Geräte

  1. Host-Erstellung: Das Didactum-Gerät wird als Host mit SNMP-Parametern angelegt.
  2. SNMP-Walk: Checkmk führt einen vollständigen SNMP Walk durch und speichert die Ergebnisse im Cache.
  3. Service Discovery: Checkmk erkennt anhand der Daten automatisch verfügbare Services.
  4. Aktive Checks: Der Checkmk-Agent fragt in konfigurierten Intervallen die SNMP-OIDs ab.
  5. Alarmierung: Bei Schwellwertüberschreitungen werden Benachrichtigungen ausgelöst.

Wichtige Verzeichnisse und Dateien

PfadInhalt
/omd/sites/<site>/Site-Verzeichnis (alles unterhalb gehört zur Site)
/omd/sites/<site>/etc/check_mk/Konfigurationsdateien der Site
/omd/sites/<site>/local/share/check_mk/checks/Eigene/benutzerdefinierte Check-Plugins
/omd/sites/<site>/local/share/check_mk/mibs/Eigene MIB-Dateien
/omd/sites/<site>/var/check_mk/snmp_cache/SNMP-Walk-Cache-Dateien
/omd/sites/<site>/var/log/Log-Dateien

2. Voraussetzungen

  • Checkmk 2.1.x oder neuer (Raw, Cloud, Standard oder Managed Edition)
  • Eine aktive Checkmk-Site (omd create <sitename>)
  • Linux-Server (Debian/Ubuntu oder RHEL/CentOS) als Checkmk-Server
  • Didactum Monitoring-Gerät im Netzwerk erreichbar, SNMP aktiviert
  • UDP Port 161 vom Checkmk-Server zum Didactum-Gerät freigegeben
  • UDP Port 162 (für SNMP-Traps) auf dem Checkmk-Server freigegeben
  • SNMP-Community-String bekannt (Standard: public)
  • Zugriff auf das Checkmk-Web-Interface als Administrator

Beispiel-Netzwerkkonfiguration

GerätIP-AdresseRolle
Checkmk-Server192.168.1.60Monitoring-Server
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 (empfohlen) oder v3
    • Community-String: public (in Produktion ändern)
    • SNMP-Port: 161
    • Allowed Managers: IP des Checkmk-Servers (192.168.1.60) eintragen
    • SNMP Trap Receiver: IP des Checkmk-Servers, Port 162
  4. Einstellungen speichern.

Achtung: Den Standard-Community-String public in Produktivumgebungen ändern. Den gleichen String in den Checkmk-SNMP-Regeln verwenden.

3.2 Erreichbarkeit vom Checkmk-Server testen

# Als Site-Benutzer einloggen:
su - <sitename>
 
# SNMP Walk vom Checkmk-Server aus:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854
 
# Temperatur Sensor 1 direkt abfragen:
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1
 
# Checkmk-eigenen SNMP Walk Tool verwenden:
cmk --snmpwalk 192.168.1.100

Hinweis: Didactum gibt Temperatur- und Spannungswerte mit Faktor 10 zurück (235 = 23,5°C). Dies wird in den Checkmk-Schwellwert-Regeln und Check-Plugins berücksichtigt.

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 (empfohlen) oder v3
    • Community-String: public (in Produktion ändern)
    • SNMP-Port: 161
    • Allowed Managers: IP des Checkmk-Servers (192.168.1.60) eintragen
    • SNMP Trap Receiver: IP des Checkmk-Servers, Port 162
  4. Einstellungen speichern.

Achtung: Den Standard-Community-String public in Produktivumgebungen ändern. Den gleichen String in den Checkmk-SNMP-Regeln verwenden.

3.2 Erreichbarkeit vom Checkmk-Server testen

# Als Site-Benutzer einloggen:
su - <sitename>
 
# SNMP Walk vom Checkmk-Server aus:
snmpwalk -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854
 
# Temperatur Sensor 1 direkt abfragen:
snmpget -v2c -c public 192.168.1.100 1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1
 
# Checkmk-eigenen SNMP Walk Tool verwenden:
cmk --snmpwalk 192.168.1.100

Hinweis: 

Didactum gibt Temperatur- und Spannungswerte mit Faktor 10 zurück (235 = 23,5°C). Dies wird in den Checkmk-Schwellwert-Regeln und Check-Plugins berücksichtigt.

4. Didactum-Gerät als Host anlegen

4.1 Host über das Web-Interface anlegen

  1. Checkmk Web-Interface aufrufen: 192.168.1.60/<sitename>/.
  2. Navigation: Setup → Hosts → Add host.
  3. Folgende Felder ausfüllen:
    • Hostname: didactum-rack01
    • IP address: 192.168.1.100
    • Alias: Didactum Rack Monitoring – Serverraum A
  4. Unter Monitoring agents:
    • Checkmk agent / API integrations: No API integrations, no Checkmk agent
    • SNMP: SNMP v2c auswählen
    • SNMP credentials: Community-String public eintragen
  5. Unter Custom attributes:
    • Labels: device_type:didactum, location:serverraum-a
  6. Klick auf Save & run service discovery.

4.2 Host-Tag und Ordner-Struktur empfohlen

  1. Navigation: Setup → Hosts → Folders → Add subfolder.
  2. Ordner anlegen: Rack-Monitoring / Didactum
  3. Ordner-Attribut setzen: SNMP communities → public für alle Hosts im Ordner.
  4. Alle Didactum-Hosts in diesen Ordner legen – SNMP-Einstellungen werden vererbt.

4.3 Host für SNMP v3 konfigurieren

  1. Beim Host-Anlegen unter SNMP: SNMP v3 auswählen.
  2. Zusätzliche Felder:
    • Security name: SNMP-v3-Benutzername vom Didactum-Gerät
    • Authentication protocol: SHA
    • Authentication password: Authentifizierungspasswort
    • Privacy protocol: AES
    • Privacy password: Verschlüsselungspasswort

5. SNMP-Konfiguration in Checkmk

5.1 SNMP-Community global oder per Host hinterlegen

Über Setup → Hosts → SNMP credentials of monitored hosts können Community-Strings für einzelne IPs oder IP-Bereiche hinterlegt werden, ohne den Host manuell zu bearbeiten:

  1. Navigation: Setup → Global settings → SNMP → SNMP communities oder Setup → Hosts → Rulesets → SNMP credentials.
  2. Neue Regel anlegen:
    • Conditions → Explicit hosts: didactum-rack01
    • SNMP community: public
    • SNMP version: v2c
  3. Speichern und aktivieren.

5.2 SNMP-Bulk-Walk aktivieren (Performance-Optimierung)

# In der Site-Konfiguration:
# Setup → Global settings → SNMP → Use SNMP bulk walk
# Aktivieren für bessere Performance bei vielen OIDs.

5.3 Didactum MIB-Datei in Checkmk einbinden

# Als Site-Benutzer:
su - <sitename>
 
# MIB in das Site-MIB-Verzeichnis kopieren:
cp DIDACTUM-RACKMONI2-MIB.mib ~/local/share/check_mk/mibs/
 
# MIB-Verzeichnis prüfen:
ls ~/local/share/check_mk/mibs/
 
# MIBs werden beim nächsten SNMP-Walk automatisch verwendet.

6. Automatische Service-Erkennung (Service Discovery)

6.1 Service Discovery starten

  1. Navigation: Setup → Hosts → didactum-rack01 → Run service discovery.
  2. Checkmk führt einen SNMP Walk durch und zeigt alle erkannten Services.
  3. Typisch erkannte Standard-Services:
    • SNMP Info (System-Beschreibung, Uptime)
    • Interface-Status (Netzwerkschnittstelle)
    • SNMP Uptime
  4. Alle gewünschten Services mit Accept all übernehmen.
  5. Änderungen aktivieren: Activate changes (gelbe Schaltfläche oben rechts).

Hinweis: 

Didactum-spezifische Sensor-OIDs werden von der automatischen Service Discovery nur erkannt, wenn ein passendes Checkmk-Plugin vorhanden ist. Für gerätespezifische Sensoren sind manuelle SNMP-Checks erforderlich (siehe Abschnitt 7).

6.2 Periodische Service Discovery aktivieren

  1. Navigation: Setup → Hosts → Rulesets → Periodic service discovery.
  2. Neue Regel anlegen:
    • Conditions: Label device_type:didactum
    • Perform service discovery every: 4 hours
    • Severity of unmonitored services: Warning
  3. Speichern – neue Sensoren werden automatisch erkannt, sobald sie angeschlossen werden.

7. SNMP-Checks manuell konfigurieren

Für Didactum-spezifische OIDs, die von der automatischen Discovery nicht erkannt werden, gibt es in Checkmk zwei Wege: den SNMP Check über Regeln im Web-Interface oder ein eigenes Check-Plugin in Python.

7.1 Methode 1: SNMP Checks über das Web-Interface (empfohlen für den Einstieg)

  1. Navigation: Setup → Services → Service monitoring rules → SNMP checks oder direkt: Setup → Hosts → Rulesets → SNMP checks for custom values.
  2. Klick auf Add rule.
  3. Folgende Parameter für Temperatur Sensor 1 eintragen:
    • Service description: Temperatur Sensor 1 – Rack-Front
    • OID: .1.3.6.1.4.1.3854.1.2.2.1.16.1.3.1
    • SNMP data type: Integer
    • Warning above: 300 (= 30,0 °C × 10)
    • Critical above: 350 (= 35,0 °C × 10)
    • Unit: x10=°C
  4. Unter Conditions: Explizit auf didactum-rack01 einschränken.
  5. Speichern und Service Discovery erneut ausführen – der neue Service erscheint.

7.2 Methode 2: Eigenes Checkmk-Plugin in Python

Für eine saubere, wiederverwendbare Integration empfiehlt sich ein eigenes Check-Plugin. Als Site-Benutzer anlegen:

su - <sitename>
mkdir -p ~/local/lib/check_mk/base/plugins/agent_based/
nano ~/local/lib/check_mk/base/plugins/agent_based/didactum_sensors.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Checkmk Check-Plugin für Didactum Monitoring-Geräte
Überwacht Temperatur-, Leckage- und Luftfeuchtigkeitssensoren via SNMP.
"""
 
from cmk.base.plugins.agent_based.agent_based_api.v1 import (
    SNMPTree, OIDEnd, register, Service, Result, State,
    check_levels, startswith, contains
)
 
# ── OID-DEFINITIONEN ──────────────────────────────────────────────────────────
 
DIDACTUM_BASE = ".1.3.6.1.4.1.3854.1.2.2.1"
 
OID_TEMP_NAME   = DIDACTUM_BASE + ".16.1.2"
OID_TEMP_VALUE  = DIDACTUM_BASE + ".16.1.3"
OID_TEMP_STATUS = DIDACTUM_BASE + ".16.1.4"
OID_TEMP_HI     = DIDACTUM_BASE + ".16.1.7"
OID_TEMP_LO     = DIDACTUM_BASE + ".16.1.8"
 
OID_HUM_NAME    = DIDACTUM_BASE + ".17.1.2"
OID_HUM_VALUE   = DIDACTUM_BASE + ".17.1.3"
OID_HUM_STATUS  = DIDACTUM_BASE + ".17.1.4"
 
OID_LEAK_NAME   = DIDACTUM_BASE + ".18.1.2"
OID_LEAK_STATUS = DIDACTUM_BASE + ".18.1.4"
 
# ── SNMP-SECTION: TEMPERATUR ──────────────────────────────────────────────────
 
register.snmp_section(
    name="didactum_temperature",
    detect=contains(".1.3.6.1.2.1.1.1.0", "didactum"),
    fetch=SNMPTree(
        base=DIDACTUM_BASE + ".16.1",
        oids=[OIDEnd(), "2", "3", "4"],
    ),
    parse_function=lambda string_table: {
        idx: {"name": name, "value": int(value), "status": int(status)}
        for idx, name, value, status in string_table
        if value.isdigit()
    },
)
 
# ── CHECK: TEMPERATUR ─────────────────────────────────────────────────────────
 
def discover_didactum_temperature(section):
    for idx, data in section.items():
        yield Service(item=idx, parameters={"sensor_name": data["name"]})
 
def check_didactum_temperature(item, params, section):
    if item not in section:
        yield Result(state=State.UNKNOWN, summary="Sensor nicht gefunden")
        return
 
    data = section[item]
    raw_value = data["value"]
    temp_celsius = raw_value / 10.0
    status_code = data["status"]
 
    # Gerätestatus auswerten:
    status_map = {0: (State.OK, "OK"), 1: (State.WARN, "Warnung"), 2: (State.CRIT, "Alarm")}
    device_state, device_text = status_map.get(status_code, (State.UNKNOWN, "Unbekannt"))
 
    warn = params.get("warn", 30.0)
    crit = params.get("crit", 35.0)
 
    yield from check_levels(
        temp_celsius,
        levels_upper=(warn, crit),
        metric_name="temperature",
        label=f"Temperatur {data['name']}",
        render_func=lambda v: f"{v:.1f} °C",
    )
 
    if device_state != State.OK:
        yield Result(state=device_state, summary=f"Gerätestatus: {device_text}")
 
register.check_plugin(
    name="didactum_temperature",
    service_name="Temperatur %s",
    discovery_function=discover_didactum_temperature,
    check_function=check_didactum_temperature,
    check_default_parameters={"warn": 30.0, "crit": 35.0},
)
 
# ── SNMP-SECTION: LECKAGE ─────────────────────────────────────────────────────
 
register.snmp_section(
    name="didactum_leak",
    detect=contains(".1.3.6.1.2.1.1.1.0", "didactum"),
    fetch=SNMPTree(
        base=DIDACTUM_BASE + ".18.1",
        oids=[OIDEnd(), "2", "4"],
    ),
    parse_function=lambda string_table: {
        idx: {"name": name, "status": int(status)}
        for idx, name, status in string_table
        if status.isdigit()
    },
)
 
def discover_didactum_leak(section):
    for idx, data in section.items():
        yield Service(item=idx, parameters={"sensor_name": data["name"]})
 
def check_didactum_leak(item, params, section):
    if item not in section:
        yield Result(state=State.UNKNOWN, summary="Leckage-Sensor nicht gefunden")
        return
 
    data = section[item]
    status = data["status"]
    name = data["name"]
 
    if status == 0:
        yield Result(state=State.OK, summary=f"{name}: Trocken (kein Wasser)")
    else:
        yield Result(state=State.CRIT, summary=f"LECKAGE ERKANNT: {name}! Sofortiger Handlungsbedarf!")
 
register.check_plugin(
    name="didactum_leak",
    service_name="Leckage %s",
    discovery_function=discover_didactum_leak,
    check_function=check_didactum_leak,
    check_default_parameters={},
)
 
# ── SNMP-SECTION: LUFTFEUCHTIGKEIT ────────────────────────────────────────────
 
register.snmp_section(
    name="didactum_humidity",
    detect=contains(".1.3.6.1.2.1.1.1.0", "didactum"),
    fetch=SNMPTree(
        base=DIDACTUM_BASE + ".17.1",
        oids=[OIDEnd(), "2", "3", "4"],
    ),
    parse_function=lambda string_table: {
        idx: {"name": name, "value": int(value), "status": int(status)}
        for idx, name, value, status in string_table
        if value.isdigit()
    },
)
 
def discover_didactum_humidity(section):
    for idx, data in section.items():
        yield Service(item=idx, parameters={"sensor_name": data["name"]})
 
def check_didactum_humidity(item, params, section):
    if item not in section:
        yield Result(state=State.UNKNOWN, summary="Feuchtigkeitssensor nicht gefunden")
        return
 
    data = section[item]
    humidity = data["value"]
 
    yield from check_levels(
        humidity,
        levels_upper=(params.get("warn_high", 70), params.get("crit_high", 80)),
        levels_lower=(params.get("crit_low", 10), params.get("warn_low", 20)),
        metric_name="humidity",
        label=f"Luftfeuchtigkeit {data['name']}",
        render_func=lambda v: f"{v:.0f} % rF",
    )
 
register.check_plugin(
    name="didactum_humidity",
    service_name="Luftfeuchtigkeit %s",
    discovery_function=discover_didactum_humidity,
    check_function=check_didactum_humidity,
    check_default_parameters={
        "warn_high": 70, "crit_high": 80,
        "warn_low": 20,  "crit_low": 10,
    },
)

7.3 Plugin aktivieren und testen

# Als Site-Benutzer:
su - <sitename>
 
# Plugin-Syntax prüfen:
python3 ~/local/lib/check_mk/base/plugins/agent_based/didactum_sensors.py
 
# Check-Plugin in Checkmk laden und testen:
cmk -v --detect-plugins=didactum_temperature didactum-rack01
 
# Service Discovery mit neuem Plugin ausführen:
cmk -I didactum-rack01
 
# Check direkt ausführen:
cmk -v didactum-rack01

7.4 SNMP-Check über Ruleset für einzelne OIDs (ohne Plugin)

Alternativ zum Plugin können einzelne OIDs über das Ruleset SNMP checks for custom values überwacht werden:

# Navigation im Web-Interface:
# Setup → Service monitoring rules → SNMP → SNMP checks for custom values
 
# Beispiel-Konfiguration für Leckage Sensor 1:
# Service description: Leckage Sensor 1 – Bodenbereich
# OID:                 .1.3.6.1.4.1.3854.1.2.2.1.18.1.4.1
# Expected regex:      ^0$          (nur Wert 0 ist OK)
# Severity on failure: CRITICAL

8. OID-Referenz für Checkmk

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

8.1 Temperatursensoren

OIDBeschreibungEinheitCheckmk WarningCheckmk Critical
1.3.6.1.4.1.3854.1.2.2.1.16.1.3.{n}Temperaturwert Sensor n°C × 10300 (30 °C)350 (35 °C)
1.3.6.1.4.1.3854.1.2.2.1.16.1.4.{n}Temperatur-Status Sensor nEnum 0/1/2≠ 0≥ 2
1.3.6.1.4.1.3854.1.2.2.1.16.1.7.{n}Oberer Grenzwert Sensor n°C × 10
1.3.6.1.4.1.3854.1.2.2.1.16.1.8.{n}Unterer Grenzwert Sensor n°C × 10
1.3.6.1.4.1.3854.1.2.2.1.16.1.2.{n}Sensor-Name nText

8.2 Leckagesensoren

OIDBeschreibungEinheitCheckmk WarningCheckmk Critical
1.3.6.1.4.1.3854.1.2.2.1.18.1.4.{n}Leckage-Status Sensor n0=OK, 1=Leckage≥ 1
1.3.6.1.4.1.3854.1.2.2.1.18.1.3.{n}Leckage-Wert Sensor n0=trocken≥ 1
1.3.6.1.4.1.3854.1.2.2.1.18.1.2.{n}Sensor-Name nText

8.3 Luftfeuchtigkeitssensoren

OIDBeschreibungEinheitCheckmk WarningCheckmk Critical
1.3.6.1.4.1.3854.1.2.2.1.17.1.3.{n}Luftfeuchtigkeitswert Sensor n% rF20–70 % (außerhalb)10–80 % (außerhalb)
1.3.6.1.4.1.3854.1.2.2.1.17.1.4.{n}Luftfeuchtigkeits-Status nEnum 0/1/2≠ 0≥ 2
1.3.6.1.4.1.3854.1.2.2.1.17.1.7.{n}Oberer Grenzwert Sensor n% rF
1.3.6.1.4.1.3854.1.2.2.1.17.1.8.{n}Unterer Grenzwert Sensor n% rF

8.4 Weitere Sensoren

OIDBeschreibungEinheitCheckmk WarningCheckmk Critical
1.3.6.1.4.1.3854.1.2.2.1.15.1.3.{n}Spannungswert Sensor nV × 102070–2530 (außerhalb)1960–2600 (außerhalb)
1.3.6.1.4.1.3854.1.2.2.1.15.1.4.{n}Spannungs-Status Sensor nEnum 0/1/2≠ 0≥ 2
1.3.6.1.4.1.3854.1.2.2.1.10.1.3.{n}Türkontakt-Status n0=zu, 1=offen≥ 1
1.3.6.1.4.1.3854.1.2.2.1.11.1.3.{n}Erschütterung / Bewegung n0=keine, 1=Alarm≥ 1
1.3.6.1.4.1.3854.1.2.2.1.14.1.3.{n}Rauchmelder-Status n0=OK, 1=Alarm≥ 1
1.3.6.1.2.1.1.3.0System Uptime (sysUpTime)Hundertstelsekunden

9. Schwellwerte und Regeln konfigurieren

9.1 Schwellwerte für das eigene Plugin per Ruleset festlegen

Damit Schwellwerte zentral über das Web-Interface gepflegt werden können (statt im Plugin-Code), wird ein Ruleset-Plugin angelegt:

su - <sitename>
nano ~/local/lib/check_mk/base/plugins/agent_based/didactum_rulesets.py
#!/usr/bin/env python3
from cmk.gui.plugins.wato.utils import (
    CheckParameterRulespecWithItem,
    rulespec_registry,
    RulespecGroupCheckParametersEnvironment,
)
from cmk.gui.valuespec import Dictionary, Tuple, Float, TextInput
 
def _parameter_valuespec_didactum_temperature():
    return Dictionary(
        title="Didactum Temperatur-Schwellwerte",
        elements=[
            ("warn", Float(title="Warnschwelle (°C)", default_value=30.0)),
            ("crit", Float(title="Kritisch-Schwelle (°C)", default_value=35.0)),
        ],
    )
 
rulespec_registry.register(
    CheckParameterRulespecWithItem(
        check_group_name="didactum_temperature",
        group=RulespecGroupCheckParametersEnvironment,
        match_type="dict",
        parameter_valuespec=_parameter_valuespec_didactum_temperature,
        title=lambda: "Didactum Temperatursensor",
    )
)

9.2 Schwellwerte über das Web-Interface anpassen

  1. Navigation: Setup → Service monitoring rules → Didactum Temperatursensor.
  2. Neue Regel anlegen:
    • Warnschwelle: 30,0 °C
    • Kritisch-Schwelle: 35,0 °C
    • Conditions: Hostlabel device_type:didactum
  3. Speichern und Änderungen aktivieren.

9.3 Empfohlene Schwellwerte

SensortypWarningCriticalNorm
Temperatur IT-Rack30,0 °C35,0 °CASHRAE A1: 15–32 °C
Temperatur USV-Raum25,0 °C30,0 °CHerstellervorgabe
Luftfeuchtigkeit hoch70 % rF80 % rFASHRAE: 20–80 % rF
Luftfeuchtigkeit niedrig20 % rF10 % rFASHRAE: 20–80 % rF
LeckageWert ≥ 1Sofortalarm
Spannung 230 V AC207–253 V (außerhalb)196–260 V (außerhalb)EN 50160 ±10 %
Türkontakt / RauchWert ≥ 1Policy-abhängig

10. Alarmierung und Benachrichtigungen

10.1 Benachrichtigungsregel anlegen

  1. Navigation: Setup → Events → Notifications → Add rule.
  2. Allgemeine Einstellungen:
    • Rule description: Didactum Sensor-Alarme
    • Notification method: HTML email
  3. Unter Conditions:
    • Match host labels: device_type:didactum
    • Service state: WARN, CRIT, UNKNOWN
    • Notification type: Problem, Recovery
  4. Unter Contacts:
    • Kontakte oder Kontaktgruppen auswählen
  5. Speichern und aktivieren.

10.2 Separate Eskalationsregel für Leckage

  1. Neue Benachrichtigungsregel anlegen.
  2. Conditions → Match service groups: Leckage-Sensoren
  3. Conditions → Service state: nur CRIT
  4. Notification method: HTML email + SMS via Script
  5. Throttling: First notification immediately, repeat every 5 minutes
  6. Zusätzliche Kontakte (Bereitschaft, Leitung) eintragen.

10.3 Wartungsfenster für Didactum-Geräte

  1. Navigation: Monitor → Schedule downtimes.
  2. Host didactum-rack01 auswählen, Zeitraum und Kommentar eintragen.
  3. Während des Wartungsfensters werden keine Alarme ausgelöst.

10.4 Bestätigungen (Acknowledgements)

Bei einem Leckage-Alarm sofort bestätigen, um weitere Benachrichtigungen zu pausieren:

  1. Im Monitoring-Bereich: Service anklicken.
  2. Schaltfläche Acknowledge klicken.
  3. Kommentar eintragen (z.B. Techniker alarmiert, vor Ort im Anfahren).
  4. Benachrichtigungen pausieren, bis das Problem behoben ist.

11. SNMP-Trap-Integration

Checkmk kann SNMP-Traps über das eingebaute Event Console (EC) Modul empfangen und verarbeiten. Die Event Console ist eine eigenständige Komponente, die Traps als Events auswertet und optional in Checkmk-Alarme umwandelt.

11.1 Event Console aktivieren

# Als Site-Benutzer:
su - <sitename>
 
# Event Console aktivieren:
omd config set MKEVENTD on
omd restart mkeventd

Alternativ im Web-Interface: Setup → Events → Event Console → Enable Event Console.

11.2 SNMP-Trap-Receiver konfigurieren

# snmptrapd muss auf dem System laufen und Traps an die Event Console weiterleiten:
sudo nano /etc/snmp/snmptrapd.conf
# Alle Traps annehmen:
authCommunity log,execute,net public
 
# Traps an Checkmk Event Console weiterleiten:
traphandle default /omd/sites/<sitename>/bin/mkeventd_open514
# snmptrapd UDP 162 öffnen:
sudo ufw allow 162/udp
 
# snmptrapd starten:
sudo systemctl enable snmptrapd
sudo systemctl start snmptrapd

11.3 Event-Regel für Didactum-Traps anlegen

  1. Navigation: Setup → Events → Event Console → Event rules → Add rule.
  2. Folgende Parameter für Leckage-Traps eintragen:
    • Description: Didactum Leckage-Alarm Trap
    • Match syslog application / SNMP trap OID: 1.3.6.1.4.1.3854.1.7.2
    • State: CRITICAL
    • Service level: Gold
  3. Unter Actions:
    • Create notification aktivieren
    • Kontaktgruppe eintragen
  4. Speichern und aktivieren.

11.4 Wichtige Didactum Trap-OIDs für die Event Console

Trap-OIDEreignisEmpfohlener EC-Status
1.3.6.1.4.1.3854.1.7.1Temperatur-AlarmCRITICAL
1.3.6.1.4.1.3854.1.7.2Leckage-AlarmCRITICAL
1.3.6.1.4.1.3854.1.7.3Luftfeuchtigkeits-AlarmWARNING oder CRITICAL
1.3.6.1.4.1.3854.1.7.4Spannungs-AlarmCRITICAL
1.3.6.1.4.1.3854.1.7.10Türkontakt geöffnetWARNING
1.3.6.1.4.1.3854.1.7.14Rauchmelder-AlarmCRITICAL
1.3.6.1.4.1.3854.1.7.99Gerät-NeustartWARNING

12. Fehlerbehebung (Troubleshooting)

ProblemMögliche Ursache / Lösung
Host zeigt PEND / keine ChecksSNMP-Community falsch oder UDP 161 blockiert. Test: cmk --snmpwalk didactum-rack01. Korrekte SNMP-Einstellung am Host prüfen.
Service Discovery findet keine Didactum-ServicesKein passendes Check-Plugin installiert. Eigenes Plugin unter ~/local/lib/check_mk/base/plugins/agent_based/ ablegen. SNMP Walk prüfen: cmk --snmpwalk didactum-rack01.
Falscher Temperaturwert (z. B. 235 statt 23,5)Im Python-Plugin Rohwert durch 10 dividieren: temp_celsius = raw_value / 10.0. Bei manuellen SNMP-Checks entsprechende Schwellwerte × 10 angeben.
Plugin-Fehler beim LadenPython-Syntax prüfen: python3 didactum_sensors.py. Importfehler prüfen: cmk -v --detect-plugins=didactum_temperature didactum-rack01. Checkmk-Version kompatibel?
Änderungen werden nicht übernommenActivate changes im Web-Interface ausführen (gelbe Schaltfläche). Oder: cmk -O als Site-Benutzer.
SNMP Walk schlägt fehl / leere ErgebnisseCommunity-String prüfen. Allowed Managers am Didactum-Gerät: IP des Checkmk-Servers eingetragen? Firewall-Regel: ufw allow from 192.168.1.60 to any port 161 proto udp.
Traps kommen nicht in der Event Console ansnmptrapd läuft? UDP 162 auf dem Checkmk-Server freigegeben? Event Console aktiviert (omd config)? Trap-OID in der EC-Regel korrekt?
Keine Benachrichtigungen trotz CRIT-StatusBenachrichtigungsregel auf den richtigen Host/Service angewendet? Kontakt hat gültige E-Mail-Adresse? Notification-Logdatei prüfen: tail -f ~/var/log/notify.log.

Diagnose-Befehle Übersicht

# Als Site-Benutzer einloggen:
su - <sitename>
 
# SNMP Walk für Didactum-Gerät durchführen:
cmk --snmpwalk didactum-rack01
 
# SNMP Walk-Cache anzeigen:
cat ~/var/check_mk/snmp_cache/didactum-rack01
 
# Service Discovery ausführen:
cmk -I didactum-rack01
 
# Alle Services des Hosts prüfen:
cmk -v didactum-rack01
 
# Einzelnen Check debuggen:
cmk -v --detect-plugins=didactum_temperature didactum-rack01
 
# Checkmk-Konfiguration neu laden (nach Änderungen):
cmk -O
 
# Alle Änderungen aktivieren (Kommandozeile):
cmk -R
 
# SNMP-Erreichbarkeit direkt 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
 
# Event Console Logs prüfen:
tail -f ~/var/log/mkeventd.log
 
# Benachrichtigungs-Log prüfen:
tail -f ~/var/log/notify.log
 
# Checkmk Haupt-Log:
tail -f ~/var/log/cmc.log     # CMC (Standard/Managed Edition)
tail -f ~/var/log/nagios.log  # Nagios-Core (Raw Edition)
 
# Site-Status prüfen:
omd status
 
# Site neu starten:
omd restart

Anhang: Checkmk-Konfiguration Schnell-Referenz

AufgabeWeb-Interface Navigationspfad
Host anlegenSetup → Hosts → Add host
SNMP-Community konfigurierenSetup → Hosts → Rulesets → SNMP credentials
Service Discovery startenSetup → Hosts → <host> → Run service discovery
Periodische DiscoverySetup → Hosts → Rulesets → Periodic service discovery
SNMP Custom ChecksSetup → Service monitoring rules → SNMP checks for custom values
Schwellwerte anpassenSetup → Service monitoring rules → <Plugin-Name>
BenachrichtigungsregelSetup → Events → Notifications → Add rule
Event ConsoleSetup → Events → Event Console → Event rules
Änderungen aktivierenGelbe Schaltfläche oben rechts → Activate changes
MIB-Dateien verwalten~/local/share/check_mk/mibs/ (Kommandozeile)
Eigene Plugins ablegen~/local/lib/check_mk/base/plugins/agent_based/
WartungsfensterMonitor → Schedule downtimes

Für firmware-spezifische OIDs und unterstützte Sensortypen immer die aktuelle Didactum-Gerätedokumentation konsultieren.

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.