Monitoring in heterogenen Netzen
Software fürs Monitoring gibt es zuhauf, wir wollen hier aber nur die Lösungen betrachten, die auch für Windows-Systeme geeignet sind und dafür zumindestens passende Clientunterstützung mitbringen.
Collectd
Collectd ist eine einfache, zentrale Monitoringlösung, die keine separate Datenbank wie MySQL oder InfluxDB benötigt. Es kommt das einfachere Rundlauf-Verfahren im Zusammenhang mit einer Round-Robin-Database zum Einsatz, womit ein effektives Speichern von Zeitwerten möglich wird.
Installation
Wir verfahren am besten nach dem Tutorial von https://www.thomas-krenn.com/de/wiki/Linux_Performance_Auswertung_mit_collectd
Die Paketliste muss für Debian 10 allerdings etwas ergänzt werden (z.B. fehlt neuerdings ‚cgi.pm‘), insgesamt sieht die Zeile so aus:
root@deb10:~# apt-get install --no-install-recommends collectd apache2 librrds-perl libconfig-general-perl \
libhtml-parser-perl libregexp-common-perl libjson-perl libcgi-pm-perl git
Konfiguration
Wir bearbeiten nun die Datei /etc/collectd/collectd.conf
, es ist lediglich die Pluginkonfiguration für „disk“ auf diese Werte zu setzen:
<Plugin disk>
Disk "sda"
IgnoreSelected false
</Plugin>
Zur Kontrolle lassen wir uns nur die aktiven Zeilen ausgeben:
root@deb10:~# grep -v '^\s*#\|^$' /etc/collectd/collectd.conf
FQDNLookup true
LoadPlugin syslog
<Plugin syslog>
LogLevel info
</Plugin>
LoadPlugin battery
LoadPlugin cpu
LoadPlugin df
LoadPlugin disk
LoadPlugin entropy
LoadPlugin interface
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin swap
LoadPlugin users
<Plugin df>
FSType rootfs
FSType sysfs
FSType proc
FSType devtmpfs
FSType devpts
FSType tmpfs
FSType fusectl
FSType cgroup
IgnoreSelected true
</Plugin>
<Plugin disk>
Disk "sda"
IgnoreSelected false
</Plugin>
<Plugin rrdtool>
DataDir "/var/lib/collectd/rrd"
</Plugin>
<Include "/etc/collectd/collectd.conf.d">
Filter "*.conf"
</Include>
root@deb10:~#
Nach einem systemctl restart collectd
können wir den Dateityp für eine unserer neuen Datenbankdateien überprüfen:
root@deb10:~# file /var/lib/collectd/rrd/deb10.dom1.test/disk-sda/disk_io_time.rrd
/var/lib/collectd/rrd/deb10.dom1.test/disk-sda/disk_io_time.rrd: RRDTool DB version 0003 64bit aligned little-endian 64bit long (alpha/amd64/ia64)
root@deb10:~#
Web-UI aufsetzen
Zuerst laden wir die Software herunter und kopieren sie an Ort und Stelle:
root@deb10:~# git clone git://github.com/httpdss/collectd-web.git
Klone nach 'collectd-web' ...
remote: Enumerating objects: 1430, done.
remote: Total 1430 (delta 0), reused 0 (delta 0), pack-reused 1430
Empfange Objekte: 100% (1430/1430), 1.19 MiB | 988.00 KiB/s, Fertig.
Löse Unterschiede auf: 100% (664/664), Fertig.
root@deb10:~#
root@deb10:~# cp -a collectd-web/ /var/www/html/
Nun ist eine spezielle Konfiguration für das Webverzeichnis collectd-web/ zu erstellen, d.h. wir legen eine neue Datei an und befüllen sie wie angegeben:
root@deb10:~# vi /etc/apache2/sites-available/collectd-web.conf
root@deb10:~#
root@deb10:~# cat /etc/apache2/sites-available/collectd-web.conf
<Directory /var/www/html/collectd-web>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
allow from all
</Directory>
Nun aktivieren wir die Konfiguration sowie das CGI-Modul:
root@deb10:~# a2ensite collectd-web
Enabling site collectd-web.
To activate the new configuration, you need to run:
systemctl reload apache2
root@deb10:~#
root@deb10:~# ls -ltrc /etc/apache2/sites-enabled/
insgesamt 0
lrwxrwxrwx 1 root root 35 Apr 8 09:22 000-default.conf -> ../sites-available/000-default.conf
lrwxrwxrwx 1 root root 36 Apr 8 09:31 collectd-web.conf -> ../sites-available/collectd-web.conf
root@deb10:~#
root@deb10:~# a2enmod cgi
Your MPM seems to be threaded. Selecting cgid instead of cgi.
Enabling module cgid.
To activate the new configuration, you need to run:
systemctl restart apache2
root@deb10:~#
root@deb10:~# systemctl restart apache2
root@deb10:~#
Jetzt taucht im Webbrowser unter http://localhost/collectd-web/
ein Link namens „deb10.dom1.test“ auf, der angeklickt werden kann, worauf dann die Grafiken betrachtet werden können.
Debian 9 als Client
Wir verfahren hierbei nach dem Tutorial von https://www.tecmint.com/configure-collectd-as-central-monitoring-server-for-clients/.
Unser 2. Host soll als Netzwerkclient auftreten und von unserem soeben eingerichteten Server mit überwacht werden. Er habe die IP-Adresse 192.168.2.234.
Installation auf Client
Hierfür brauchen wir nicht so viele Softwarepakete:
root@deb9srv:~# apt-get install --no-install-recommends collectd
Konfiguration des Clients)
Wir bearbeiten auf dem Client die Datei /etc/collectd/collectd.conf
wie hier dargestellt ist:
# ...
# Aktivieren dieser Zeile:
LoadPlugin network
#
#
# Außerdem muss dieses Plugin folgendermaßen konfiguriert werden:
<Plugin network>
<Server "192.168.2.234" "25826">
</Server>
</Plugin>
# ...
Mit systemctl restart collectd
starten wir nun den Daemon neu. Damit sind die Arbeiten auf dem Client bereits abgeschlossen.
Konfiguration des Servers
Auf den Server zurückgekehrt, bearbeiten wir wieder die Datei /etc/collectd/collectd.conf
und setzten die im Folgenden angegebenen Werte:
# ...
# Aktivieren dieser beiden Zeilen (Das dritte erforderliche Plugin 'syslog' ist schon aktiv):
LoadPlugin logfile
LoadPlugin network
#
#
# Außerdem müssen diese Plugins folgendermaßen konfiguriert werden:
<Plugin logfile>
LogLevel "info"
File STDOUT
Timestamp true
PrintSeverity false
</Plugin>
# ...
<Plugin network>
<Listen "0.0.0.0" "25826">
</Listen>
</Plugin>
# ...
Mit systemctl restart collectd
starten wir nun den Daemon neu und sehen nach, ob der UDP-Port 25826 geöffnet ist:
root@deb10:~# lsof -i:25826 -Pn
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
collectd 7801 root 3u IPv4 73345 0t0 UDP *:25826
root@deb10:~#
Nach dem Aktualisieren der Seite http://localhost/collectd-web/
taucht auch schon unser neuer Client „deb9srv.dom1.test“ auf und kann mit überwacht werden.
Siehe auch:
Nagios/Icinga
Installation
Unter Debian 10 ist die Installation mittels apt-get install nagios4
schnell erledigt, wir belassen es während der Samba-Konfigurationsabfrage bei „Nein“. Der Debian Installer bringt u.a. den Webserver Apache mit, dank dem via http://localhost/nagios4/
erreichbaren Web-UI lassen sich dann viele Detailinformationen abfragen.
Es müssen allerdings noch zwei Apache-Module eingebunden werden, damit Apache mit Nagios zusammenarbeitet. Die geschieht ganz einfach mittels der beiden Kommandozeilen a2enmod auth_digest
und a2enmod authz_groupfile
.
Die eigene Maschine ist dabei als ebenfalls zu überwachender Host konfiguriert worden, was mit Hilfe des Kommandos nagios4stats | grep Total
gut kontrolliert werden kann.
Per Default bringt Nagios eine Menge Plugins mit, deren Konfiguration hier zu finden ist:
root@deb10:~# ls -F /etc/nagios-plugins/config/
apt.cfg disk-smb.cfg fping.cfg http.cfg mail.cfg netware.cfg pgsql.cfg real.cfg tcp_udp.cfg
breeze.cfg dns.cfg ftp.cfg ifstatus.cfg mailq.cfg news.cfg ping.cfg rpc-nfs.cfg telnet.cfg
dhcp.cfg dummy.cfg games.cfg ldap.cfg mrtg.cfg nt.cfg procs.cfg snmp.cfg users.cfg
disk.cfg flexlm.cfg hppjd.cfg load.cfg mysql.cfg ntp.cfg radius.cfg ssh.cfg
root@deb10:~#
Ein wichtiges Plugin ist z.B. check_ssh, das als typisches Linux-Binary auch direkt aufgerufen werden kann. Hier sehen wir, wie ein entfernter Host erfolgreich getestet wird:
root@deb10:~# /usr/lib/nagios/plugins/check_ssh 192.168.2.234
SSH OK - OpenSSH_8.2p1 Ubuntu-4ubuntu0.1 (protocol 2.0) | time=0,016857s;;;0,000000;10,000000
root@deb10:~#
Konfiguration eines Linux-Clients
Es soll nun eine andere VM als zu überwachender Host hingefügt werden, wobei dieser Nagios-Server alle Fäden in der Hand behält und den Clientrechner in Intervallen abfragt (= „active checks“).
Am besten gehen wir von der Datei localhost.cfg aus (in der /etc/nagios4/objects/templates.cfg sind leider keine anwendbaren Werte für check_command
zu finden, außerdem ist sie für unseren Zweck viel zu umfangreich):
root@deb10:~# cp /etc/nagios4/objects/localhost.cfg /etc/nagios4/conf.d/mylinux-wks.cfg
root@deb10:~# vi /etc/nagios4/conf.d/mylinux-wks.cfg
...
In dieser Editorsitzung ist folgendes durchzuführen, der zu überwachende Client wird hierbei mit „client-01“ spezifiziert:
IP-Adresse des Client-Rechners unter „HOST DEFINITION“ eintragen (z.B. ‚address 192.168.2.234‘).
Die gesamten Zeilen des Abschnitts „HOST GROUP DEFINITION“ auskommentieren.
Deaktivieren oder Löschen aller Abschnitte, in denen bei ‚check_command‘ das Muster ‚check_local‘ vorkommt.
Ersetzen von ‚localhost‘ durch ‚client-01‘ bezüglich ‚host_name‘ in den drei verbliebenen, aktiven Abschnitten.
Ersetzen von ‚local-service‘ durch ‚generic-service‘ in den drei verbliebenen, aktiven Abschnitten.
Mittels grep -Ev '^\s*#|^\s*;|^\s*$' /etc/nagios4/conf.d/mylinux-wks.cfg
bekommen wir schließlich nur die aktiven Inhalte der Datei zu sehen:
define host{
use linux-server ; Name of host template to use
host_name client-01
alias client-01
address 192.168.2.234
}
define service{
use generic-service ; Name of service template to use
host_name client-01
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service{
use generic-service ; Name of service template to use
host_name client-01
service_description SSH
check_command check_ssh
notifications_enabled 0
}
define service{
use generic-service ; Name of service template to use
host_name client-01
service_description HTTP
check_command check_http
notifications_enabled 0
}
Inbetriebnahme, Tests
Nach dem Neustarten mittels systemctl restart nagios4
kann zuerst einmal wieder nagios4stats | grep Total
ausgeführt werden: jetzt müssten hier 2 Hosts auftauchen. Und dann natürlich im Webbrowser das Web-UI aufrufen, z.B. über localhost oder der realen IP-Adresse http://localhost/nagios4/
…
HyperLinks
https://www.6wind.com/monitoring-6wind-vrouter-with-influxdb-and-nagios/
https://www.hardwarecrash.de/index.php/faq/software/linux/nagios/227-nagios-hosts-hinzufuegen
https://www.tecmint.com/how-to-add-windows-host-to-nagios-monitoring-server/
https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/3/en/passivechecks.html
Und hier gibt es das große Nagios/Icinga Kochbuch: https://www.researchgate.net/profile/Ralf-Staudemeyer/publication/261635257_Das_NagiosIcinga_Kochbuch/links/563c52ff08aec6f17dd54ebc/Das-Nagios-Icinga-Kochbuch.pdf