iX 2/2017
S. 127
Praxis
Tools und Tipps
Aufmacherbild

Systeme und Netze mit symon überwachen

Auf dem Kieker

Monitoring wird gerade in kleinen Netzen oft vernachlässigt, weil die bekannten Lösungen dafür zu komplex sind. Das Leichtgewicht symon bietet Basismonitoring für alle BSDs, Linux und Windows.

Die Symon-Suite von Willem Dijkstra besteht aus drei Komponenten: Der winzige Systemmonitor symon sammelt auf den zu überwachenden Systemen die CPU-, RAM- und Festplattenauslastung, den Datendurchsatz auf den Netzwerkkarten, Kennwerte des Paketfilters pf, den Status einzelner Prozesse und diverse Sensorwerte. Die Daten sendet das Tool an eine zentrale Sammelstelle, den Symon Stream Multiplexer (symux), der sie getrennt für jedes überwachte System in RRD-Dateien (Round-Robin-Database) speichert. Schließlich erzeugt syweb aus den RRD-Daten Graphen und stellt sie per Webserver bereit.

Ihre Daten sendet die symon-Komponente alle fünf Sekunden im Klartext auf TCP-Port 2100 des symux-Hosts. Beide Seiten (symon und symux) müssen daher identisch konfiguriert sein. Unter OpenBSD 6.0 wird symon so installiert:

pkg_add symon

In die /etc/symon.conf werden die zu überwachenden Ressourcen (siehe man symux) sowie der symux-Host eingetragen – Letzterer kann für Single-Host-Installationen auch 127.0.0.1 sein:

monitor {
     cpu(0),
     mem,
     if(em0),  
     pf,
     io(wd0)
} 
stream to 10.0.0.42 2100

Mit rcctl wird symon in die /etc/rc.conf.local eingepflegt und gestartet:

rcctl enable symon
rcctl start symon

Zentrale Sammelstelle für Messwerte

Gesammelt werden die Telemetriedaten auf dem symux-Host. Man installiert ihn per

pkg_add symux

Dabei werden auch Python und das rrdtool aufgespielt. Die entsprechende Konfiguration steht in /etc/symux.conf:

mux 10.0.0.42 2100
source 10.0.0.42 {
   accept {
        cpu(0),
        mem,
        if(em0),
        pf,
        io(wd0)
   }
   datadir "/var/www/symon/rrds/IP42"
}

Hinter dem Schlüsselwort mux gibt man Interface und Port an, auf dem die Software lauschen soll. Einzelne symon-Sensoren definiert der Systemverwalter in einem Block per

source <IP> { accept { Liste } datadir <Pfad> }

Das Verzeichnis für die RRD-Dateien muss von Hand angelegt und Letztere müssen initialisiert werden:

mkdir -p -m 0755 /var/www/symon/rrds/IP42
/usr/local/share/examples/symon/c_smrrds.sh all

Möchte man bestimmte Werte nicht mehr aufzeichnen, muss man die entsprechende RRD-Datei von Hand löschen, um keine Fehler im Web-Frontend zu produzieren. Auch symux wird aktiviert:

rcctl enable symux
rcctl start symux

Über eine Telnet-Sitzung auf dem symux-Host können die eingehenden Datenpakete mitverfolgt werden:

telnet 10.0.0.42 2100

Aufgehübschte Daten per Web-GUI

Die grafische Aufbereitung dieser Daten übernimmt syweb:

pkg_add syweb

Dabei wird PHP automatisch installiert. syweb benötigt einen Webserver mit /var/www als chroot-Umgebung, dort sollte auch das rrdtool vorhanden sein. Hierzu sollte man von der symon-Website die Datei syweb-0.65.tar.gz herunterladen. Darin enthalten ist install_rrdtool.sh, das die Installation übernimmt – lediglich die Pfade zu den Schriften stimmen nicht, sodass diese von Hand kopiert werden müssen:

mkdir -p /var/www/usr/X11R6/lib/X11/fonts/TTF/
cp -f /usr/X11R6/lib/X11/fonts/TTF/* 
 /var/www/usr/X11R6/lib/X11/fonts/TTF/

Der Webserver httpd von OpenBSD 6.0 wird mit PHP-Support in der /etc/httpd.conf konfiguriert:

server "default" {
     listen on egress port 80
     root "/htdocs"
     location "/syweb/*.php" {
          fastcgi socket "/run/php-fpm.sock"
     }
}

Damit PHP und FastCGI funktionieren, muss der Systemverwalter sie aktivieren:

rcctl enable httpd php56_fpm
rcctl start httpd php56_fpm

Nun kann man unter der IP-Adresse des symux-Webservers und /syweb/index.php eine interaktive Übersicht sehen. Eigene Übersichtsseiten können auf Basis der *.layout-Dateien in /var/www/symon angepasst werden. Die Dokumentation geht leider kaum über den Inhalt der Manualpages hinaus. Die symon-Suite wurde für OpenBSD entwickelt, ist aber auch unter den anderen BSDs und für Linux verfügbar. Für Windows steht ein symon-Sensor zur Verfügung. (tiw)