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

Didactum Monitoring & TclMon Integration

Vollständige Schritt-für-Schritt-Anleitung zur Einbindung von Didactum Monitoring-Geräten und Sensoren in TclMon via SNMP – inklusive Installation, Abhängigkeiten, Konfigurationsdateien, SNMP-Objektdefinition, RRD-Datenspeicherung, Alarmkonfiguration, E-Mail-Benachrichtigung und Netstate-Client-Visualisierung.

Produkthinweis: TclMon ist ein plattformunabhängiges Open-Source-Netzwerk-Monitoring-System, das vollständig in der Skriptsprache Tcl implementiert ist. Es besteht aus einem Server-Prozess, der SNMP-Daten von Netzwerkgeräten sammelt und in RRD-Datenbanken speichert, sowie dem Netstate-Client, der eine grafische Darstellung der gesammelten Daten und Alarme bietet. TclMon nutzt die thread-sichere Tclsnmp-Bibliothek für alle SNMP v1/v2c/v3-Abfragen. Die Konfiguration von Geräten und OIDs erfolgt ausschließlich über Textkonfigurationsdateien (objects.conf und tclmon.conf). Didactum Umgebungssensoren werden als benutzerdefinierte SNMP-Objekte vollständig integriert.

  • Software: TclMon (Open Source, SourceForge) + Netstate Client
  • Plattform: Linux (Debian / Ubuntu / RHEL / CentOS)
  • Protokoll: SNMP v1 / v2c / v3 (via Tclsnmp)
  • Geräte: Didactum Monitoring System 100T / 300T / 500 / 550T
  • Sensoren: Temperatur, Leckage, Luftfeuchtigkeit, Türkontakt, Rauch

1. Voraussetzungen & Systemüberblick

TclMon-Server

  • Linux-Server (Debian 10+, Ubuntu 20.04+, RHEL/CentOS 7+)
  • Tcl 8.5 oder höher installiert
  • Folgende Tcl-Pakete verfügbar: Thread, Tclsnmp, Tclsyslog, Rrd, ip, dns, time
  • RRDtool installiert (für Datenspeicherung und Graphen)
  • fping installiert (für ICMP-Verfügbarkeitspürfung)
  • UDP-Port 161 ausgehend für SNMP Polling geöffnet
  • Netzwerkzugang vom TclMon-Server zum Didactum-Gerät vorhanden

Didactum-Gerät

  • Monitoring System 100, 300, 500 oder 550T
  • SNMP aktiviert (v2c empfohlen)
  • Gerät per ICMP vom TclMon-Server erreichbar
  • MIB-Datei im Web-Interface verfügbar (Download unter Preferences → SNMP)

Architektur & Datenfluss

[TclMon Server]                          [Didactum Monitoring System]
  Linux-Server                            IP: 192.168.1.50
  tclmon-server (Tcl-Prozess)
  RRD-Datenbank (historische Daten)
  Netstate Client (Visualisierung)
                    -- SNMP GET/WALK UDP 161 (Tclsnmp) -->
                    <-- INTEGER-Werte (Sensorwerte) --------

TclMon-Architektur

  • tclmon-server: Hauptprozess in Tcl; liest Konfigurationsdateien; startet Thread-basiertes SNMP-Polling; speichert Daten in RRD-Datenbanken; bewertet Alarmzustände
  • Tclsnmp: Thread-sichere SNMP-Bibliothek für Tcl; unterstützt SNMP v1/v2c/v3 Get, GetNext, Walk, Trap
  • Tclsyslog: Thread-sichere Syslog-Bibliothek; wird für Alarm-Logging verwendet
  • RRDtool: Round-Robin-Datenbank für die langfristige Speicherung von Zeitreihendaten (Temperaturen, Messwerte)
  • Netstate Client: Grafische Visualisierungsapplikation; zeigt aktuellen Status, Alarme und historische Graphen

2. TclMon installieren

Schritt 1 – Systemabhängigkeiten installieren

# Debian / Ubuntu
sudo apt update
sudo apt install tcl tcl-thread tcllib rrdtool fping \
                 libsnmp-dev snmp snmp-mibs-downloader

# RHEL / CentOS / Rocky
sudo dnf install tcl tcl-thread tcllib rrdtool fping \
                 net-snmp net-snmp-utils net-snmp-devel

Schritt 2 – Tclsnmp und Tclsyslog installieren

# Tclsnmp und Tclsyslog von SourceForge herunterladen
# sourceforge.net/projects/tclmon/

# Archive entpacken in Tcl-Library-Verzeichnis
# Tcl-Library-Pfad ermitteln:
tclsh
% puts [join [lsearch -inline -all [info library] *] \n]
% exit

# Typischerweise: /usr/lib/tcl8.6/ oder /usr/local/lib/tcl8.6/
# Tclsnmp entpacken:
sudo tar xzf tclsnmp-*.tar.gz -C /usr/lib/tcl8.6/
# Tclsyslog entpacken:
sudo tar xzf tclsyslog-*.tar.gz -C /usr/lib/tcl8.6/

# pkgIndex.tcl-Pfad ggf. korrigieren:
sudo vi /usr/lib/tcl8.6/tclsnmp/pkgIndex.tcl

Schritt 3 – Tcl-Pakete prüfen

# Alle benötigten Pakete müssen ladbar sein:
tclsh
% package require Thread
% package require Syslog
% package require Tclsnmp
% package require Rrd
% package require ip
% package require dns
% package require time
% exit
# Kein Fehler = alle Pakete verfügbar

Schritt 4 – TclMon-Benutzer anlegen und Archiv entpacken

# Benutzer anlegen
sudo useradd -m -d /home/tclmon -s /bin/bash tclmon

# TclMon-Archiv herunterladen und entpacken
# sourceforge.net/projects/tclmon/
sudo tar xzf tclmon-*.tar.gz -C /home/tclmon/
sudo chown -R tclmon:tclmon /home/tclmon/

# Zum TclMon-Verzeichnis wechseln
cd /home/tclmon/tclmon/

Schritt 5 – TclMon-Basisvariablen anpassen

# In der Hauptkonfigurationsdatei anpassen:
vi /home/tclmon/tclmon/tclmon.conf

# Folgende Variablen prüfen und ggf. anpassen:
CONFIG(ROOT_DIR)         /home/tclmon/tclmon
CONFIG(RSH_BINARY)       /usr/bin/rsh
CONFIG(FPING_BINARY)     /usr/bin/fping
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_SENDER)   tclmon@ihredomain.de
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_RCPT)     admin@ihredomain.de
CONFIG(ALARMS_SERVER_MAIL_NOTIFY_SUBJECT)  [TclMon ALARM] %object% - %parameter%

3. SNMP auf dem Didactum-Gerät aktivieren

Schritt 1 – Didactum Web-Interface öffnen

Im Browser aufrufen: 192.168.1.50 (IP des Didactum-Geräts anpassen)

Schritt 2 – SNMP-Einstellungen aufrufen

Preferences → SNMP

Schritt 3 – Folgende Werte eintragen

Feld im Didactum Web-InterfaceWert
SNMP aktivierenAktiviert
SNMP-Versionv2c (empfohlen)
Community Stringdidactum_tcl (nicht „public“ verwenden!)
SNMP-Port161

Einstellungen speichern. SNMP-Verbindung testen:

# Vom TclMon-Server aus:
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1

# Alle Sensor-Messwerte
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7

# Alle Sensor-Namen
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.5

Sensor-IDs per snmpwalk ermitteln

# Die Sensor-ID ist die letzte Zahl in der OID (z.B. 101001)
# Ausgabe-Beispiel:
# .1.3.6.1.4.1.46501.5.1.1.5.101001 = STRING: "Temperatur Serverraum"
# .1.3.6.1.4.1.46501.5.1.1.7.101001 = INTEGER: 215   (= 21,5 Grad C)
# .1.3.6.1.4.1.46501.5.1.1.7.107001 = INTEGER: 0     (= trocken)

4. OID-Referenz für Didactum-Sensoren

Alle Didactum-OIDs beginnen mit .1.3.6.1.4.1.46501. Die Sensor-ID am Ende wird per snmpwalk ermittelt.

OID-Felder je Sensor

FeldBedeutungBeispiel-OID
.5.x.SENSOR_IDSensor-Name (String).1.3.6.1.4.1.46501.5.1.1.5.101001
.6.x.SENSOR_IDStatus: 0=Normal, 1=Warnung, 2=Kritisch, 3=Fehler.1.3.6.1.4.1.46501.5.1.1.6.101001
.7.x.SENSOR_IDMesswert (aktuell).1.3.6.1.4.1.46501.5.1.1.7.101001

Sensortypen mit OIDs und Skalierung

SensortypSensor-IDOID MesswertSkalierungAlarm-Schwelle
Temperatursensor Port 1101001.1.3.6.1.4.1.46501.5.1.1.7.101001Rohwert ÷ 10 = °C (215 = 21,5 °C)Warn: > 280 / Krit: > 350
Temperatursensor Port 2101002.1.3.6.1.4.1.46501.5.1.1.7.101002Rohwert ÷ 10 = °CWarn: > 280 / Krit: > 350
Luftfeuchtesensor Port 1102001.1.3.6.1.4.1.46501.5.1.1.7.102001Direktwert = %rHWarn: > 80 / Krit: > 90
Kombisensor Temperatur (CAN)103001.1.3.6.1.4.1.46501.5.1.1.7.103001Rohwert ÷ 10 = °CWarn: > 280 / Krit: > 350
Kombisensor Luftfeuchte (CAN)103002.1.3.6.1.4.1.46501.5.1.1.7.103002Direktwert = %rHWarn: > 80 / Krit: > 90
Türkontakt104001.1.3.6.1.4.1.46501.5.1.1.7.1040010 = geschlossen, 1 = geöffnetWarn: > 0
Rauchmelder106001.1.3.6.1.4.1.46501.5.1.1.7.1060010 = OK, 1 = AlarmKrit: > 0
Leckage-Sensor (Spot)107001.1.3.6.1.4.1.46501.5.1.1.7.1070010 = trocken, 1 = WasserKrit: > 0
Leckage-Sensor (Kabel)107002.1.3.6.1.4.1.46501.5.1.1.7.1070020 = trocken, 1 = WasserKrit: > 0
Systemzustand (Gerät gesamt).1.3.6.1.4.1.46501.1.1.00 = OK, 1 = Warnung, 2 = KritischWarn: > 0 / Krit: > 1

Wichtiger Hinweis – Temperaturschwellwerte: TclMon vergleicht den SNMP-Rohwert direkt. Da Didactum Temperaturen als Rohwert × 10 liefert (215 = 21,5 °C), müssen alle Schwellwerte ebenfalls × 10 angegeben werden. 28 °C Warnung = Schwellwert 280.

5. TclMon-Konfigurationsdatei – Didactum-Objekte definieren

TclMon wird vollständig über Textkonfigurationsdateien gesteuert. Das Didactum-Gerät wird in objects.conf als SNMP-Objekt mit seinen OIDs definiert. TclMon erkennt automatisch verfügbare Parameter und pflegt die Liste aktuell.

Datei: /home/tclmon/tclmon/objects.conf

# ================================================================
# TclMon Objektkonfiguration fuer Didactum Monitoring System
# Didactum Enterprise OID: 1.3.6.1.4.1.46501
# ================================================================

# ----------------------------------------------------------------
# Objekt: Didactum Monitoring System Serverraum
# ----------------------------------------------------------------
object didactum_serverraum {

    # Grundlegende Verbindungsparameter
    address         192.168.1.50
    description     "Didactum Monitoring System Serverraum"
    location        "Serverraum"
    contact         "admin@ihredomain.de"

    # SNMP-Parameter
    snmp_version    2c
    snmp_community  didactum_tcl
    snmp_port       161
    snmp_timeout    5000
    snmp_retries    3

    # Polling-Intervall (Sekunden)
    poll_interval   300

    # ICMP-Verfügbarkeitspruefung
    ping_enabled    1
    ping_interval   60

    # SNMP-Methoden zum Sammeln
    methods         { snmp_custom rrd_store }

    # -------- Benutzerdefinierte SNMP-Parameter --------

    # Temperatursensor Port 1 (Rohwert; 215 = 21,5 Grad C)
    custom_oid Temperatur_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.101001
        type        gauge
        scale       0.1
        unit        "Grad C"
        warn_high   280
        crit_high   350
        rrd_store   1
    }

    # Temperatursensor Port 2
    custom_oid Temperatur_Sensor_02 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.101002
        type        gauge
        scale       0.1
        unit        "Grad C"
        warn_high   280
        crit_high   350
        rrd_store   1
    }

    # Luftfeuchtesensor Port 1
    custom_oid Luftfeuchte_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.102001
        type        gauge
        scale       1
        unit        "%rH"
        warn_high   80
        crit_high   90
        rrd_store   1
    }

    # Leckage-Sensor Spot (0=trocken 1=Wasser erkannt)
    custom_oid Leckage_Sensor_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.107001
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 120
    }

    # Leckage-Sensor Kabel
    custom_oid Leckage_Sensor_02 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.107002
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 120
    }

    # Tuerkontakt (0=geschlossen 1=offen)
    custom_oid Tuerkontakt_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.104001
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        rrd_store   1
        poll_interval 60
    }

    # Rauchmelder (0=OK 1=Alarm)
    custom_oid Rauchmelder_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.7.106001
        type        gauge
        scale       1
        unit        "Status"
        crit_high   0
        rrd_store   1
        poll_interval 60
    }

    # Sensor-Status (0=Normal 1=Warnung 2=Kritisch 3=Fehler)
    custom_oid Sensor_Status_01 {
        oid         .1.3.6.1.4.1.46501.5.1.1.6.101001
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        crit_high   1
        rrd_store   1
    }

    # Systemzustand Geraet gesamt (0=OK 1=Warn 2=Krit)
    custom_oid Geraet_Systemzustand {
        oid         .1.3.6.1.4.1.46501.1.1.0
        type        gauge
        scale       1
        unit        "Status"
        warn_high   0
        crit_high   1
        rrd_store   1
    }
}

6. TclMon Hauptkonfiguration (tclmon.conf)

Die Hauptkonfigurationsdatei steuert den TclMon-Server-Prozess, Alarmierungsverhalten, Mail-Versand und Logging.

Datei: /home/tclmon/tclmon/tclmon.conf (relevante Abschnitte)

# ================================================================
# TclMon Hauptkonfiguration (Auszug fuer Didactum-Integration)
# ================================================================

# ---- Serverpfade ----
set CONFIG(ROOT_DIR)              /home/tclmon/tclmon
set CONFIG(RRD_DIR)               /home/tclmon/tclmon/rrd
set CONFIG(LOG_DIR)               /home/tclmon/tclmon/log
set CONFIG(CONF_DIR)              /home/tclmon/tclmon/conf

# ---- Externe Binaerdateien ----
set CONFIG(FPING_BINARY)          /usr/bin/fping
set CONFIG(RSH_BINARY)            /usr/bin/rsh
set CONFIG(RRDTOOL_BINARY)        /usr/bin/rrdtool

# ---- SNMP-Standardwerte ----
set CONFIG(SNMP_DEFAULT_VERSION)  2c
set CONFIG(SNMP_DEFAULT_TIMEOUT)  5000
set CONFIG(SNMP_DEFAULT_RETRIES)  3

# ---- Alarmserver-Einstellungen ----
set CONFIG(ALARMS_SERVER_ENABLED) 1
set CONFIG(ALARMS_SERVER_PORT)    9001

# ---- E-Mail-Alarmierung ----
set CONFIG(MAIL_NOTIFY_ENABLED)   1
set CONFIG(MAIL_SENDER)           tclmon@ihredomain.de
set CONFIG(MAIL_RCPT)             admin@ihredomain.de
set CONFIG(MAIL_RCPT_CRITICAL)    admin@ihredomain.de,notfall@ihredomain.de
set CONFIG(MAIL_SUBJECT_WARN)     {[TclMon WARNUNG] %object% - %param% = %value%}
set CONFIG(MAIL_SUBJECT_CRIT)     {[TclMon KRITISCH] %object% - %param% = %value%}
set CONFIG(MAIL_SUBJECT_RECOVER)  {[TclMon OK] %object% - %param% normalisiert}

# ---- Syslog-Logging ----
set CONFIG(SYSLOG_ENABLED)        1
set CONFIG(SYSLOG_FACILITY)       local0
set CONFIG(SYSLOG_LEVEL_WARN)     warning
set CONFIG(SYSLOG_LEVEL_CRIT)     critical

# ---- Thread-Einstellungen (Skalierung) ----
set CONFIG(THREAD_POOL_SIZE)      10
set CONFIG(POLLER_THREADS)        5

# ---- Alarmunterdrückung (Maintenance Window) ----
# Zeitraum in Cron-Syntax: "Minute Stunde Tag Monat Wochentag"
# Beispiel: Wartung samstags 02:00-04:00 Uhr
set CONFIG(MAINTENANCE_WINDOW)    {0 2 * * 6}
set CONFIG(MAINTENANCE_DURATION)  7200

7. SNMP-Polling mit Tclsnmp verifizieren

Vor dem Start von TclMon sollte die SNMP-Verbindung mit dem Tclsnmp-Paket direkt im Tcl-Interpreter getestet werden.

Interaktiver Tclsnmp-Test

tclsh

# Paket laden
package require Tclsnmp

# SNMP-Session zum Didactum-Geraet erstellen
set session [snmp::session -version 2c \
                           -community didactum_tcl \
                           -address 192.168.1.50 \
                           -port 161 \
                           -timeout 5000 \
                           -retries 3]

# Temperaturwert abfragen (Rohwert)
set result [$session get .1.3.6.1.4.1.46501.5.1.1.7.101001]
puts "Temperatur Rohwert: $result"
# Erwartete Ausgabe: 215 (= 21,5 Grad Celsius)

# Leckage-Sensor abfragen
set result [$session get .1.3.6.1.4.1.46501.5.1.1.7.107001]
puts "Leckage Status: $result"
# Erwartete Ausgabe: 0 (= trocken)

# Walk ueber alle Sensor-Messwerte
set results [$session walk .1.3.6.1.4.1.46501.5.1.1.7]
foreach {oid value} $results {
    puts "$oid = $value"
}

# Session schließen
$session destroy
exit

Schnelltest per Shell-Skript

#!/usr/bin/env tclsh
# /usr/local/bin/didactum-snmp-test.tcl
# Didactum SNMP-Verbindungstest fuer TclMon

package require Tclsnmp

set HOST      "192.168.1.50"
set COMMUNITY "didactum_tcl"
set OIDS {
    Temperatur_01    .1.3.6.1.4.1.46501.5.1.1.7.101001
    Luftfeuchte_01   .1.3.6.1.4.1.46501.5.1.1.7.102001
    Leckage_01       .1.3.6.1.4.1.46501.5.1.1.7.107001
    Systemzustand    .1.3.6.1.4.1.46501.1.1.0
}

set s [snmp::session -version 2c -community $COMMUNITY \
                     -address $HOST -port 161]

foreach {name oid} $OIDS {
    if {[catch {set val [$s get $oid]} err]} {
        puts "FEHLER $name: $err"
    } else {
        puts "OK    $name: $val"
    }
}

$s destroy
chmod +x /usr/local/bin/didactum-snmp-test.tcl
tclsh /usr/local/bin/didactum-snmp-test.tcl

# Erwartete Ausgabe:
# OK    Temperatur_01:  215
# OK    Luftfeuchte_01: 58
# OK    Leckage_01:     0
# OK    Systemzustand:  0

8. TclMon-Server starten und Betrieb prüfen

Schritt 1 – TclMon-Server manuell starten (Test)

su - tclmon
cd /home/tclmon/tclmon
tclsh tclmon-server.tcl &

# Log-Ausgabe beobachten:
tail -f /home/tclmon/tclmon/log/tclmon.log

Schritt 2 – TclMon als Systemdienst einrichten

# systemd Service-Datei erstellen:
sudo vi /etc/systemd/system/tclmon.service
[Unit]
Description=TclMon Network Monitoring Server
After=network.target

[Service]
Type=simple
User=tclmon
WorkingDirectory=/home/tclmon/tclmon
ExecStart=/usr/bin/tclsh /home/tclmon/tclmon/tclmon-server.tcl
Restart=on-failure
RestartSec=30

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable tclmon
sudo systemctl start tclmon
sudo systemctl status tclmon

Schritt 3 – Polling-Status prüfen

# Aktuellen Status aller Objekte abfragen (plaintext Protokoll):
echo "get_status didactum_serverraum" | nc localhost 9001

# RRD-Datenbanken pruefen (nach dem ersten Polling-Zyklus):
rrdtool info /home/tclmon/tclmon/rrd/didactum_serverraum_Temperatur_Sensor_01.rrd

# Letzten Messwert aus RRD abfragen:
rrdtool lastupdate /home/tclmon/tclmon/rrd/didactum_serverraum_Temperatur_Sensor_01.rrd

9. Alarm- und E-Mail-Konfiguration

TclMon bewertet alle gesammelten Werte gegen die definierten Schwellenwerte und versendet bei Überschreitung E-Mails an die konfigurierten Empfänger.

E-Mail-Versand konfigurieren

# In tclmon.conf sicherstellen, dass E-Mail korrekt konfiguriert ist:
# (SMTP wird über das lokale sendmail oder einen SMTP-Relay genutzt)

# Sendmail / Postfix als lokalen Mail-Relay konfigurieren:
sudo apt install postfix mailutils

# Relay-Konfiguration in /etc/postfix/main.cf:
relayhost = [mail.ihredomain.de]:587

# Test-E-Mail senden:
echo "TclMon Test" | mail -s "[TclMon] Verbindungstest" admin@ihredomain.de

Alarm-Regeln in objects.conf (Zusammenfassung)

Objekt / OIDwarn_highcrit_highPoll-IntervallE-Mail bei
Temperatur_Sensor_01280 (28 °C)350 (35 °C)300 Sek.Warning + Critical
Temperatur_Sensor_02280350300 Sek.Warning + Critical
Luftfeuchte_Sensor_018090300 Sek.Warning + Critical
Leckage_Sensor_010 (ab 1 = Wasser)120 Sek.Critical
Leckage_Sensor_020120 Sek.Critical
Tuerkontakt_010 (ab 1 = offen)60 Sek.Warning
Rauchmelder_010 (ab 1 = Alarm)60 Sek.Critical
Geraet_Systemzustand01300 Sek.Warning + Critical

10. Netstate-Client konfigurieren

Der Netstate-Client ist die grafische Visualisierungskomponente von TclMon. Er verbindet sich über das plaintext-Protokoll zum TclMon-Server und stellt Status, Alarme und historische Graphen dar.

Netstate installieren

# Netstate-Archiv von SourceForge herunterladen
# sourceforge.net/projects/tclmon/
tar xzf netstate-*.tar.gz
cd netstate/

# Abhängigkeiten: Tcl/Tk mit Wish
sudo apt install tk  # Debian/Ubuntu
sudo dnf install tk  # RHEL/CentOS

Netstate-Verbindung konfigurieren

# In der Netstate-Konfigurationsdatei:
vi /home/tclmon/netstate/netstate.conf

set NETSTATE(SERVER_HOST)   localhost
set NETSTATE(SERVER_PORT)   9001
set NETSTATE(UPDATE_INTERVAL) 30
set NETSTATE(RRD_DIR)         /home/tclmon/tclmon/rrd

Netstate starten

cd /home/tclmon/netstate
wish netstate.tcl

Im Netstate-Fenster erscheint das Objekt didactum_serverraum mit allen konfigurierten Parametern. Farbliche Statusanzeige: Grün = OK, Gelb = Warning, Rot = Critical.

11. MIB-Vorlage für externe SNMP-Abfragen

-- ============================================================
-- DIDACTUM-ENV-MIB  |  Enterprise OID: 1.3.6.1.4.1.46501
-- ============================================================

DIDACTUM-ENV-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises
        FROM SNMPv2-SMI
    DisplayString
        FROM SNMPv2-TC;

didactum MODULE-IDENTITY
    LAST-UPDATED "202401010000Z"
    ORGANIZATION "Didactum Security GmbH"
    CONTACT-INFO "support@didactum-security.com"
    DESCRIPTION  "MIB fuer Didactum Umgebungsueberwachungssysteme"
    ::= { enterprises 46501 }

didactumSensors     OBJECT IDENTIFIER ::= { didactum 5 }
didactumSensorTable OBJECT IDENTIFIER ::= { didactumSensors 1 }
didactumSensorEntry OBJECT IDENTIFIER ::= { didactumSensorTable 1 }

sensorName OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Bezeichnung des Sensors"
    ::= { didactumSensorEntry 5 }

sensorStatus OBJECT-TYPE
    SYNTAX      Integer32 (0..3)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Status: 0=Normal 1=Warnung 2=Kritisch 3=Fehler"
    ::= { didactumSensorEntry 6 }

sensorValue OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION "Messwert: Temp Rohwert div 10 = Grad C; Leckage 0 oder 1"
    ::= { didactumSensorEntry 7 }

END

12. Test & Fehlerbehebung

Diagnosebefehle

# SNMP-Verbindung zum Didactum testen
snmpwalk -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1

# Einzelnen OID-Wert prüfen
snmpget -v2c -c didactum_tcl 192.168.1.50 .1.3.6.1.4.1.46501.5.1.1.7.101001
# Erwartete Ausgabe: INTEGER: 215 (= 21,5 Grad Celsius)

# TclMon-Dienststatus
sudo systemctl status tclmon

# TclMon-Log live verfolgen
tail -f /home/tclmon/tclmon/log/tclmon.log

# RRD-Datenbank-Inhalt anzeigen
rrdtool lastupdate /home/tclmon/tclmon/rrd/didactum_serverraum_Leckage_Sensor_01.rrd

# Tcl-Paket-Verfügbarkeit prüfen
tclsh -c "package require Tclsnmp; puts OK"

# TclMon-Server direkt über plaintext-Protokoll abfragen
echo "list_objects" | nc localhost 9001
echo "get_alarms"   | nc localhost 9001

Fehlermeldungen und Lösungen

ProblemUrsache & Lösung
package require Tclsnmp schlägt fehlTclsnmp nicht korrekt installiert oder Pfad in pkgIndex.tcl falsch → Pfad prüfen: tclsh -c "puts [info library]"
SNMP-Timeout bei Tclsnmp-TestCommunity String falsch; UDP 161 blockiert; Gerät nicht erreichbar → snmpwalk manuell testen
RRD-Datenbank wird nicht angelegtRRD-Verzeichnis fehlt oder falsche Berechtigungen → mkdir -p /home/tclmon/tclmon/rrd && chown tclmon:tclmon /home/tclmon/tclmon/rrd
Temperaturwert 10× zu hoch (z. B. 215 statt 21,5)scale-Parameter in objects.conf fehlt oder ist 1 → scale 0.1 für Temperatursensoren setzen; Schwellwerte × 10 eingeben
Kein Alarm bei Leckagecrit_high Wert falsch → crit_high 0 setzen (bei Wert 1 = Wasser = Critical ausgelöst)
Keine E-Mail bei AlarmPostfix/sendmail nicht konfiguriert; E-Mail-Adresse in tclmon.conf falsch → Test-E-Mail manuell senden
TclMon-Dienst startet nichtTcl-Bibliotheken fehlen; Konfigurationsfehler in objects.conf → journalctl -u tclmon -f; Syntax der Konfigurationsdatei prüfen
Netstate zeigt keine VerbindungTclMon-Server-Port 9001 nicht erreichbar; Firewall blockiert → nc -zv localhost 9001 prüfen

13. Abschluss-Checkliste

System & Installation

  • Tcl 8.5+ installiert
  • Tclsnmp-Paket geladen (package require Tclsnmp ohne Fehler)
  • Tclsyslog, Thread, Rrd, ip, dns, time-Pakete verfügbar
  • RRDtool und fping installiert
  • TclMon-Archiv nach /home/tclmon/tclmon/ entpackt
  • Benutzer tclmon angelegt

Didactum-Gerät

  • SNMP aktiviert (v2c), Community: didactum_tcl
  • Gerät per Ping vom TclMon-Server erreichbar
  • snmpwalk vom TclMon-Server erfolgreich
  • Tclsnmp-Test: alle OID-Werte korrekt abgefragt

TclMon-Konfiguration

  • tclmon.conf: ROOT_DIR, FPING_BINARY, RRDTOOL_BINARY korrekt gesetzt
  • tclmon.conf: Mail-Empfänger und SMTP-Relay konfiguriert
  • objects.conf: Objekt didactum_serverraum mit allen OIDs angelegt
  • Temperatursensoren: scale 0.1, warn_high 280, crit_high 350
  • Leckagesensoren: poll_interval 120, crit_high 0
  • TclMon-Dienst läuft (systemctl status tclmon)
  • RRD-Datenbanken werden angelegt und gefüllt

Alarmierung & Visualisierung

  • Test-E-Mail erfolgreich versendet
  • Alarm-Log zeigt korrekte Einträge (tclmon.log)
  • Netstate-Client verbindet sich mit TclMon-Server (Port 9001)
  • Alle Didactum-Sensoren in Netstate mit Status OK (grün) sichtbar
  • RRD-Graphen für Temperatursensoren über Netstate abrufbar

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.