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: :: Disk "sda" IgnoreSelected false Zur Kontrolle lassen wir uns nur die aktiven Zeilen ausgeben: :: root@deb10:~# grep -v '^\s*#\|^$' /etc/collectd/collectd.conf FQDNLookup true LoadPlugin syslog LogLevel info 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 FSType rootfs FSType sysfs FSType proc FSType devtmpfs FSType devpts FSType tmpfs FSType fusectl FSType cgroup IgnoreSelected true Disk "sda" IgnoreSelected false DataDir "/var/lib/collectd/rrd" Filter "*.conf" 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 Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow,deny allow from all 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: # ... 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: LogLevel "info" File STDOUT Timestamp true PrintSeverity false # ... # ... 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: - https://collectd.org/wiki/index.php/Networking_introduction - https://michael.stapelberg.ch/tipps/ - https://notes.ayushsharma.in/2017/08/getting-started-with-server-metrics-collecting-with-collectd 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: 1) IP-Adresse des Client-Rechners unter "HOST DEFINITION" eintragen (z.B. 'address 192.168.2.234'). 2) Die gesamten Zeilen des Abschnitts "HOST GROUP DEFINITION" auskommentieren. 3) Deaktivieren oder Löschen aller Abschnitte, in denen bei 'check_command' das Muster 'check_local' vorkommt. 4) Ersetzen von 'localhost' durch 'client-01' bezüglich 'host_name' in den drei verbliebenen, aktiven Abschnitten. 5) 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://think.unblog.ch/nagios-monitoring-mit-raspberry-pi/ - 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.tutorialandexample.com/nagios-tutorial/ - https://www.sysadminslife.com/monitoring-2/howto-icinga-nagios-nsca-server-fur-passive-checks-unter-deb10an-installieren/ - 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