CRITICAL INFRA
Loading critical CVEs…
ALL EXPLOITED
Loading…

HowTo: Monitoring mit Checkmk von Grund auf

Checkmk gibt Ihnen ein einziges Board ueber Server, Netzwerk, Dienste und Anwendungen, mit automatischem Discovery und Alarmen. Dieser Guide fuehrt Sie von der Installation bis zum verteilten Monitoring, Schritt fuer Schritt — und warum jedes Teil funktioniert.

Installation und Erstellen eines Site

Checkmk arbeitet auf isolierten Sites, verwaltet mit omd (Open Monitoring Distribution). Sie koennen mehrere Sites auf einem Server betreiben.

apt install ./check-mk-raw-2.3.0p*_0.bookworm_amd64.deb   # Raw = kostenlos
omd create monitor                 # Site erstellen
omd config monitor set ADMIN_MAIL alerts@example.com
omd start monitor
omd status monitor                 # apache, core, rrdcached usw.
# das initiale 'cmkadmin'-Passwort wird beim create gezeigt; in der UI aendern

Der Agent: Installation + TLS-Registrierung

Standardmaessig arbeitet Checkmk im Pull-Modus: der Server verbindet sich mit dem Agenten auf Port 6556 (TLS) und holt die Daten in jedem Zyklus — der Agent sendet sie nicht. (Push gibt es nur fuer Hosts, die der Server nicht erreichen kann.) Der neue Agent (cmk-agent-ctl) registriert sich verschluesselt und exponiert keinen Klartext-Port mehr. Laden Sie das Paket aus Setup > Agents.

dpkg -i check-mk-agent_2.3.0p*.deb
cmk-agent-ctl register --hostname web01 \
  --server checkmk.example.com --site monitor \
  --user automation --password '***'
cmk-agent-ctl status               # TLS: connection established
systemctl status check-mk-agent.socket

Host hinzufuegen + Discovery

Host hinzufuegen (UI oder API), Discovery ausfuehren und aktivieren. Checkmk findet Platten, Interfaces und Dienste von selbst.

cmk -vI web01          # Inventory/Discovery: welche Dienste der Host hat
cmk -II web01          # vollstaendiges Re-Discovery (inkl. verschwundener Dienste)
cmk -O                 # Aenderungen aktivieren (Core neu laden)
cmk -D web01           # Dump: wie der Host konfiguriert ist

SNMP fuer Switch, Firewall, USV

Netzwerkgeraete haben keinen Agenten — Sie lesen sie per SNMP. Setzen Sie Community/v3-Credentials auf dem Host und fuehren Discovery aus.

# in Host-Eigenschaften: SNMP community / SNMPv3 credentials
cmk -v --snmpwalk sw01             # pruefen, dass es antwortet
cmk -vI sw01                       # Ports, Temperatur, PSU, Traffic
# Regeln: 'Interfaces' fuer Traffic-Schwellen, 'Temperature' usw.

Regeln, Ordner und Schwellenwerte

Checkmks Staerke sind Regeln: Sie wenden Schwellen auf Host-Gruppen (Ordner) an, nicht manuell pro Host. Z.B. Platten- und CPU-Schwellen auf dem ganzen Ordner /kunden.

# Setup > Host & Service Parameters > Filesystems (used space)
#   WARN 80% / CRIT 90%, angewandt auf den Ordner /kunden
# Setup > ... > CPU utilization, Memory, Uptime
# 'Periodic service discovery' — entdeckt taeglich automatisch neue Dienste

Benachrichtigungen mit Eskalation

Alarme per E-Mail, Telegram, Webhook — mit Regeln (wer, wann, welche Schwere) und Eskalation, wenn nicht bestaetigt.

# Setup > Notifications > Add rule
#  - contact group: NOC-Team
#  - Bedingungen: CRIT + Host im Ordner /kunden
#  - Methode: E-Mail + Telegram (HTML-Skript)
#  - Eskalation: alle 30 Min wiederholen, wenn nicht ACKed
# Test: 'Analyse notification' auf einem Dienst in der UI

Verteiltes Monitoring

Fuer viele Standorte: ein zentrales Site und Remote-Sites, die lokal sammeln und an das zentrale weiterleiten. Nuetzlich beim Monitoring mehrerer Kunden aus einem NOC.

# auf central: Setup > Distributed Monitoring > Add connection
#   -> das Remote-Site verbinden (livestatus TCP/TLS auf 6557)
# das Remote laeuft mit eigenem Core; central aggregiert die Ansichten
omd config remote1 set LIVESTATUS_TCP on
omd restart remote1

Local Checks + API

Fuer jede eigene Metrik schreiben Sie einen Local Check (ein Skript, das Status + Wert zurueckgibt). Und alles, was Sie in der UI tun, geht auch per REST API.

# Local Check auf dem Agenten: /usr/lib/check_mk_agent/local/backup_age
#!/bin/bash
AGE=$(( ($(date +%s) - $(stat -c %Y /backup/last)) / 3600 ))
if [ $AGE -gt 26 ]; then echo "2 BackupAge age=$AGE last backup too old"; else echo "0 BackupAge age=$AGE ok"; fi
# API: Host hinzufuegen + aktivieren
curl -X POST '.../api/1.0/domain-types/host_config/collections/all' -H 'Authorization: Bearer automation ***' ...
Lassen Sie uns über Ihr Projekt sprechen →