Xymon

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Ein Terminal öffnen

  3. ⚓︎ mit Root-Rechten arbeiten

  4. ⚓︎ Eine Datei mit einem Editor bearbeiten

Inhaltsverzeichnis
  1. Installation
  2. Funktionsweise
  3. Konfiguration
  4. Bereitstellen der Xymon-Website über einen...
  5. Problembehandlung
  6. Links

Wiki/Icons/service.png Der System-Monitoring-Dienst Xymon 🇬🇧 ist das Open-Source-Pedant zu Big Brother. Aus dem ursprünglichen "bbgen toolkit" ist die Standalone-Version Hobbit hervorgegangen, doch da dieser Begriff schon als Markenzeichen registriert ist, entstand der finale Name Xymon. Diese historische Entwicklung spiegelte sich in den Konfigurationsdateien, Datei- und Ordnernamen älterer Ubuntu-Versionen wider.

Die Version 5 befindet sich derzeit (Stand Juli 2018) in Entwicklung und wird Unterstützung für IPv6 mitbringen.

Um einen kurzen Überblick über die Funktionen zu bekommen, schaut man sich am Besten Online-Demo 🇬🇧 an.

Hinweis:

Ab Ubuntu 12.10 wurden nahezu alle Dateien, Pfade und Befehle im System, sowie das Nutzerkonto, unter welchem die Dienste laufen, von hobbit auf xymon umbenannt.

Installation

Xymon kann direkt aus den Paketquellen installiert werden. [1]

Server

Befehl zum Installieren der Pakete:

sudo apt-get install xymon hobbit-plugins 

Oder mit apturl installieren, Link: apt://xymon,hobbit-plugins

Client

Befehl zum Installieren der Pakete:

sudo apt-get install xymon-client hobbit-plugins 

Oder mit apturl installieren, Link: apt://xymon-client,hobbit-plugins

Die Xymon-Dienste werden automatisch gestartet und können wie jeder andere Dienst über systemctl gesteuert werden. Die Dienste heißen xymon.service und xymon-client.service. Installiert man den Server-Dienst, so wird auch automatisch der Client installiert, um den Xymon-Server selbst zu überwachen. Die Hobbit-Plugins stellen weitere Tests bereit, wie zum Beispiel eine "apt"-Abfrage, um die Aktualität des Systems anzuzeigen.

Funktionsweise

Konfiguration

Standardmäßig werden alle von Xymon benötigten Dateien nach /usr/lib/xymon installiert. Um Xymon an die ubuntutypischen Spezifika anzupassen, werden verschiedene Ordner mittels Symlinks "umgebogen". Aus diesem Grund findet man alle Konfigurationsdateien unter /etc/xymon. Zu beachten ist, dass in diesem Verzeichnis nun sowohl Server- als auch Client-Konfigurationsdateien gemischt sind.

Server

Tests, die von außen an einem überwachten System ausgeführt werden können, wie z.B. ob eine Webseite verfügbar oder ein anderer Dienst erreichbar ist, sollten serverseitig konfiguriert und ausgeführt werden.

Der Xymon-Server wird über folgende Dateien und Verzeichnisse konfiguriert:

Konfigurationsdatei Beschreibung
alerts.cfg Steuerung der Alarmbenachrichtigung
analysis.cfg Serverseitige Interpretation der Daten, die vom Xymon-Client geliefert werden.
cgioptions.cfg Konfiguration der Kommandozeilenoptionen, die an CGI-Tools übergeben werden.
client-local.cfg legt fest, welche Dienste auf dem Client überwacht werden. Diese Datei wird vom Server als Antwort auf die vom Client gesendeten Daten geschickt, um die Konfiguration für den nächsten Überwachungszyklus mitzuteilen. (Auch hier ist zu bedenken, dass Xymon kein Echtzeit-System ist. Im ungünstigsten Fall dauert eine Änderung der Anzeige nach einer Konfigurationsänderung 15 Minuten: Der Client übermittelt alle fünf Minuten seine Daten und empfängt die neue Konfiguration, nach weiteren fünf Minuten übermittelt der Client die neuen Daten und nach weiteren fünf Minuten zeigt die Weboberfläche die Ergebnisse der geänderten Konfiguration.)
combo.cfg Hier können kombinierte Statusmeldungen aus mehreren Tests definiert werden.
critical.cfg hobbit-nkview.cgi nutzt diese Datei um zu entscheiden, ob ein Status gelb oder rot wird und ob es unter den "Critical Systems" aufgeführt wird.
graphs.cfg enthält die Definitionen der Standard-Graphen für überwachte Eigenschaften eines Systems. hobbitgrapf.cgi nutzt diese Datei, um die Graphen aus den RRD-Dateien zu generieren.
graphs.d/ Graph-Definitionen für benutzerdefinierte Test werden in diesem Verzeichnis geführt.
hosts.cfg Hauptkonfigurationsdatei der zu überwachenden Systeme
misc.d Enthält kleine zusätzliche Tests für Events, die üblicherweise selten eintreffen und im Sinne der Übersichtlichkeit keine zusätzliche Spalte bekommen sollten.
protocols.cfg Definitionen der Test für einen TCP basierenden Dienst
rrddefinitions.cfg Legt die Parameter für Round-Robin-Datenbanken fest (Datenpunkte, Detailtiefe, usw. für Graphdarstellungen)
tasks.cfg In dieser Datei werden die Module des Xymon-Servers konfiguriert
tasks.d Wird unter Ubuntu nicht verwendet, enthält sonst aber Konfigurationsdateien für benutzerdefinierte, serverseitige Tests.
xymonlaunch.d/ Enhält Konfigurationsdateien für benutzerdefinierte, serverseitige Tests. (Namensanlehnung an den Ordner clientlaunch.d/)
xymonpasswd Passwortgeschützter Webzugang
xymonserver.cfg Definition der Umgebung(svariablen) auf dem Server
xymonserver.d/ Enhält Konfigurationsdateien als Erweiterungen der Datei xymonserver.cfg, z.B. bzgl. Graphenerstellung für benutzerdefinierte Tests.

Bereitstellen der Xymon-Website über einen Webserver

Um die Xymon-Webseite aufrufen zu können, muss ein Webserver auf dem Xymon-Host installiert und konfiguriert sein. Im folgenden wird die Konfiguration für den Webserver Apache beschrieben.

Apache

Das Xymon-Paket aus den Paketquellen enthält eine Beispielkonfiguration für den Webserver Apache. Diese findet man unter /etc/apache2/conf-available/xymon.conf. Diese Konfiguration wird automatisch geladen und ermöglicht den lokalen Zugriff auf die Xymon-Webseite ohne weiteres Eingreifen.

Experten-Info:

Es kann durchaus sinnvoll sein, die vorgegebene Konfigurationsdatei des Apache zu verschieben, um die Seite z.B. als virtuellen Host bereitzustellen. Mit Hilfe dieser Befehlskette führt man diese Veränderung durch:

sudo a2disconf xymon
sudo mv /etc/apache2/conf-available/xymon.conf /etc/apache2/sites-available/
sudo a2ensite xymon
sudo service apache reload 

Nun kann man im Browser die Xymon-Webseite mit http://localhost/xymon aufrufen.

Zugriffskontrolle

Netzwerkzugriff - mod_authz_core

Nach dem installieren der Dienste kann die Xymon-Webseite nur lokal vom Xymon-Server aufgerufen werden. Um z.B. dem lokalen Subnetz Zugriff zu gewähren muss in jedem der drei <IfModule mod_authz_core.c>-Blöcke der Konfigurationsdatei /etc/apache2/conf-available/xymon.conf ein weiteres "Require"-Statement hinzugefügt werden. Man ergänzt daher in jedem <IfModule mod_authz_core.c>-Block folgende Zeile:

Require ip 192.168.0

Mehr Details zum Apache Modul mod_authz_core findet man z.B. hier 🇬🇧

Authentifizierung

Um der Standardkonfiguration gemäßig benutzerbasierenden Zugriff zu gewähren, fügt man mit folgendem Kommando neue Benutzer zur Datei xymonpasswd hinzu:

sudo htpasswd /etc/xmyon/xymonpasswd <user> 

Hat man die Zugriffkontrolle vorab auf IP-Basis umgesetzt, muss man nun alle Require-Anweisungen mit <RequireAll>...</RequireAll> und/oder <RequireAny>...</RequireAny> verschachteln. Nach einer Änderungen an der Apache-Konfiguration startet man den Webserver neu:

sudo apache2ctl restart 
Beispielkonfiguration mit IP- und Benutzerauthentifizierung

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
...
ScriptAlias /xymon-seccgi/ "/usr/lib/xymon/cgi-secure/"
<Directory "/usr/lib/xymon/cgi-secure">
    AllowOverride None
    Options ExecCGI Includes
<RequireAll>
    <IfModule mod_authz_core.c>
        # Apache 2.4+
	<RequireAny>
        Require local
        Require ip 10.20.30
	</RequireAny>
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        #Allow from localhost ::1/128 10.0.0.0/24
    </IfModule>
    AuthBasicProvider file
    AuthUserFile /etc/xymon/xymonpasswd

    AuthType Basic
    AuthName "Xymon Administration"

    <RequireAll>
    # "valid-user" restricts access to anyone who is logged in.
    Require valid-user
    </RequireAll>
</RequireAll>
...

Client

Im Gegensatz zur Serverkonfiguration kann natürlich auch der Client direkt konfiguriert werden. Auch weitere Tests, die vom Xymon-Client direkt auf dem System ausgeführt werden, können auf diesem Weg eingepflegt werden.

Der Xymon-Client wird über folgende Dateien konfiguriert:

Konfigurationsdatei Beschreibung
clientlaunch.cfg Enthält eine Liste der Aufgaben, die beim Start des Clients ausgeführt werden.
clientlaunch.d/ Dieser Ordner enthält die Konfiguration von weiteren clientseitigen Tests.
xymonclient.cfg Diese Datei enthält die grundlegende Standardkonfiguration des Xymon-Client. Um systemspezifische Einstellungen vorzunehmen, sollte die hier "inkludierte" Datei /etc/default/xymon-client angepasst werden. Hierin wird der Xymon-Server und der Hostname des Clients angegeben.
localclient.cfg Die lokale Variante der hobbit-clients.cfg, Interpretationskonfiguration der RAW-Daten

hobbit-plugins aktivieren

Alle clientseitigen Erweiterungen aus den Plugins werden über die entsprechenden Dateien unter /etc/xymon/clientlaunch.d/ konfiguriert. Möchte man einen zusätzlichen Test aktivieren/deaktivieren, so kommentiert man die Zeile "DISABLED" ein bzw. aus.

Problembehandlung

Um Problemen auf den Grund zu gehen sollten in erster Linie die Log-Dateien betrachtet werden. Diese schreibt sowohl der Server als auch der Client in das Verzeichnis /var/log/xymon/.

disk zeigt alle Snap-Volumes mit "100% used - has reached the PANIC level"

Um ungewünschte Volumes generell auszublenden, editiert man die Datei /usr/lib/xymon/client/bin/xymonclient-linux.sh. Auf den Zeilen 55 und 60 befinden sich die Aufrufe von df. Diese ergänzt man z.B. mit einem -x squashfs oder man piped df durch grep -v '/snap/'.

Hobbit-Plugins: apt meldet "Packages not installed from apt repositories"

Dieses Verhalten ist normal für Pakete, die z.B. mit dpkg -i /path/to/package.deb installiert wurden. Werden unter dieser Warnung Pakete gelistet, die definitiv nicht händisch installiert wurden, so helfen folgende Schritte (hier am Beispiel von libwbclient0):

Zuerst alle verfügbaren Versionen auflisten:

sudo apt-cache policy libwbclient0 
libwbclient0:
  Installiert: 2:3.4.7~dfsg-1ubuntu3.11
  Kandidat: 2:3.4.7~dfsg-1ubuntu3.11
  Versions-Tabelle:
 *** 2:3.4.7~dfsg-1ubuntu3.11 0
        100 /var/lib/dpkg/status
     2:3.4.7~dfsg-1ubuntu3.10 0
        500 http://archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://archive.ubuntu.com/ubuntu/ lucid-security/main Packages
     2:3.4.7~dfsg-1ubuntu3 0
        500 http://archive.ubuntu.com/ubuntu/ lucid/main Packages''' 

Hier sieht man, dass die aktuell installierte Version 2:3.4.7~dfsg-1ubuntu3.11 nur lokal unter /var/lib/dpkg/status referenziert wird. Als Lösung für dieses Problem hilft ein Downgrade auf die Version, die auch in den Paketquellen verfügbar ist:

sudo apt-get install libwbclient0=2:3.4.7~dfsg-1ubuntu3.10 

Führt man anschließend erneut den apt-cache-Befehl aus, so wird die installierte Version auch im entsprechenden Repository gelistet:

apt-cache policy libwbclient0 

libwbclient0:
  Installiert: 2:3.4.7~dfsg-1ubuntu3.10
  Kandidat: 2:3.4.7~dfsg-1ubuntu3.10
  Versions-Tabelle:
 *** 2:3.4.7~dfsg-1ubuntu3.10 0
        500 http://archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://archive.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     2:3.4.7~dfsg-1ubuntu3 0
        500 http://archive.ubuntu.com/ubuntu/ lucid/main Packages 

Hobbit-Plugins: libs meldet "Can't check Kernel version"

Lösung 1 - Berechtigungen anpassen

Die Standardberechtigungen für die Kernel-Images wurden ab Ubuntu 17.10 geändert, sodass nur noch root sie lesen kann. Möchte man, dass Xymon die Aktualität des Kernels abfragen kann, so muss man die Berechtigungen ändern. Durch Einbindung dieses Skripts werden bei jedem Update die Berechtigungen automatisch korrigiert:

1
2
3
4
5
#!/bin/sh
version="$1"
# passing the kernel version is required
[ -z "${version}" ] && exit 0
dpkg-statoverride --add --update root root 0644 /boot/vmlinuz-${version}

Dieses Skript speichert man in die Datei /etc/kernel/postinst.d/statoverride und macht sie ausführbar:

sudo chmod +x /etc/kernel/postinst.d/statoverride 

Lösung 2 - Spalte "libs" ausblenden

Auf dem Client bearbeitet man die Datei /etc/xymon/clientlaunch.d/libs.cfg und entfernt die Raute vor "DISABLED", um den Test zu deaktivieren:

Anschließend startet man den Xymon-Client neu:

sudo systemctl restart xymon-client.service 

Ggf. kann man serverseitig alle Daten zum libs-Test eines Clients löschen:

/usr/lib/xymon/client/bin/xymon 127.0.0.1 "drop xymonclienthostname libs" 

Hobbit-Plugins: libs meldet "The following processes have libs linked that were upgraded"

Leider scheint es bei diesem Test Probleme zu geben, die noch nicht gemeldet und daher nicht untersucht worden sind. So tauchen bei der Ausführung des Xymon-Clients auf Desktopsystemen Prozesse wie "gnome-shell", "pulse-audio" oder auch "firefox" mit dieser Warnung auf. Ein Neustart der Programme oder des Systems helfen leider nicht. Daher verbleibt auf betroffenen Systemen bis auf Weiteres nur die Möglichkeit, diesen Test zu deaktivieren, siehe #Lösung_2_-_Spalte_"libs"_ausblenden.