Zabbix - Monitoring des Netzwerkes und der Geräte

Linux im Netzwerk
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Zabbix - Monitoring des Netzwerkes und der Geräte

Beitrag von robertgoedl »

Nichts ist schlimmer, wenn etwas im Netzwerk etwas nicht funktioniert! Ist es das Netzwerk selbst, ein Computer, eine Software, ein Switch - oder was auch immer?

Vor allem in einem Unternehmen - der Admin wird angerufen - etwas funktioniert nicht. In der Firma kann nicht gearbeitet werden, der Admin muss erst ran. Wäre es nicht besser, der Admin würde dies selbst sehen, gleich bevor irgendwer anderes daraufkommt?

Mit der Open Source-Software Zabbix ist genau dies möglich. So gut wie jedes Betriebssystem, jeder Computer, jede Netzwerk-Hardware und vieles an Software lässt sich damit überwachen. Auch die Belegung der Festplatten, der Arbeitsspeicher, die Auslastung der CPU und vieles mehr. Im Falle des Falles lässt sich der Rechner bei dem Probleme bestehen nach Vorgaben das System neu starten, Anwender per E-Mail, SMS und Co zu informieren und vieles mehr.

In diesem Thema sehen wir uns diese Software etwas genauer an. Bis dieser Artikel von meiner Seite fertig ist, wird er gesperrt bleiben - anschließend kann sich jeder beteiligen.

Zabbix installieren

Grundlegend - Monitoring-Systeme sollten immer auf einem eigenen Rechner laufen, dieser sollte auch vom Internet abgeschottet sein. Auch sollte Zabbix nur per SSL (HTTPS) erreichbar sein, dies werden wir hier aber nicht besprechen (mehr dazu unter Lets encrypt).

In diesem Beitrag wird die Installation unter Debian 11 (Bullseye) vorgenommen, die Installation ist jedoch auch unter Alma Linux, CentOS, Oracle Linux, Raspberry Pi OS, Red Hat Enterprise Linux, Rocky Linux, SUSE Linux Enterprise Server, Ubuntu und Ubuntu ARM problemlos über die Paket-Verwaltung mittels Paketen möglich (siehe Zabbix - Downloads). Für weitere Distributionen gilt es, die Quellen selbst zu kompilieren.

Zu Beginn laden wir uns das initiale Paket herunter, über dieses wird das Zabbix-Repository und die GPG-Schlüssel automatisch in das System integriert - als normaler Benutzer am Terminal:

Code: Alles auswählen

wget https://repo.zabbix.com/zabbix/6.2/debian/pool/main/z/zabbix-release/zabbix-release_6.2-2%2Bdebian11_all.deb
Jetzt installieren wir dieses Paket als Administrator auf dem Terminal über die Paket-Verwaltung durch den Befehl:

Code: Alles auswählen

apt install ./zabbix-release_VERSION+debian11_all.deb
Anschließend aktualisieren wir die Quellen:

Code: Alles auswählen

apt update
Und installieren die nötigen Pakete (in diesem Fall, mit dem Webserver Apache und der Datenbank MySQL - Sie können aber auch PostgreSQL als Datenbank und Nginx als Webserver nutzen - siehe Zabbix-Link):

Code: Alles auswählen

apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
In diesem Fall installieren wir den Zabbix-Server - zum Proxy, den Agenten und Co werden wir später mehr erfahren. Jetzt erlauben wir den automatischen Start des Zabbix-Servers - natürlich als Administrator:

Code: Alles auswählen

systemctl enable zabbix-server --now
Absolut wichtig ist die richtige Zeitzone, wir sehen erst einmal an, wie sich diese nennt:

Code: Alles auswählen

timedatectl list-timezones | grep Europe


Diese können wir zur Sicherheit gleich noch einmal fix festlegen:

Code: Alles auswählen

timedatectl set-timezone Europe/Vienna
Den Befehl gilt es natürlich entsprechend anzupassen. Mit dem Befehl:
können wir die Zeitzone kontrollieren:
Zeitzone am Terminal anzeigen
Zeitzone am Terminal anzeigen
Wichtig ist die richtige Zeitzone für die Zeitstempel - Timestamps. Noch besser der Befehl:

Code: Alles auswählen

timedatectl status
Zeitzone am Terminal anzeigen
Zeitzone am Terminal anzeigen
Wir installieren die Datenbank:

Code: Alles auswählen

apt install mysql-server
Diese wird jetzt konfiguriert:

Code: Alles auswählen

mysql -uroot -p
Geben Sie Ihr root-Passwort ein - es folgt der Datenbank-Prompt "mysql>" - hier geben Sie die weiteren Befehle ein:

Wir erstellen die Datenbank:

Code: Alles auswählen

create database zabbix character set utf8mb4 collate utf8mb4_bin;
Jetzt erstellen wir den Benutzer "zabbix" und sein Passwort - "password" ersetzen Sie dabei durch ein sicheres Passwort:

Code: Alles auswählen

create user zabbix@localhost identified by 'password';
Jetzt vergeben wir die Rechte:

Code: Alles auswählen

grant all privileges on zabbix.* to zabbix@localhost;
Wir schließen ab und loggen uns aus:

Code: Alles auswählen

set global log_bin_trust_function_creators = 1;
quit;
Jetzt befüllen wir die Datenbank mit dem Befehl (anschließend geben Sie den :

Code: Alles auswählen

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Wir öffnen wieder die Datenbank:

Code: Alles auswählen

mysql
Hier wenden wir uns der Datenbank "zabbix" zu:

Code: Alles auswählen

use zabbix
Jetzt sehen wir uns die Tabellen an, diese sollten in etwa so aussehen:

Code: Alles auswählen

show tables;

Code: Alles auswählen

| trigger_depends            |
| trigger_discovery          |
| trigger_queue              |
| trigger_tag                |
| triggers                   |
| userdirectory              |
| users                      |
| users_groups               |
| usrgrp                     |
| valuemap                   |
| valuemap_mapping           |
| widget                     |
| widget_field               |
+----------------------------+
176 rows in set (0.001 sec)
Wir können uns wieder ausloggen:

Code: Alles auswählen

quit;
Wir wenden uns der Konfigurationsdatei von Zabbix zu - "/etc/zabbix/zabbix_server.conf":

Code: Alles auswählen

nano /etc/zabbix/zabbix_server.conf
Hier suchen wir zunächst den Eintrag für den Namen der Datenbank:

Code: Alles auswählen

### Option: DBName
#       Database name.
#       If the Net Service Name connection method is used to connect to Oracle database, specify the service name from
#       the tnsnames.ora file or set to empty string; also see the TWO_TASK environment variable if DBName is set to
#       empty string.
#
# Mandatory: yes
# Default:
# DBName=

DBName=zabbix
Wichtig - die Zeile "DBName=zabbix" - unter Debian sollte dies schon richtig hier stehen. Weiter geht es zum Eintrag:

Code: Alles auswählen

### Option: DBUser
#       Database user.
#
# Mandatory: no
# Default:
# DBUser=

DBUser=zabbix
Auch hier - der Datenbank-Benutzer "DBUser=zabbix" sollte unter Debian schon passen. Jetzt noch wichtig - das Passwort:

Code: Alles auswählen

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=PASSWORT
Entfernen Sie die Raute (#) vor dem Passwort und setzen das Passwort der Datenbank in der Zeile "DBPassword=". Wir speichern die Datei mit Strg+o, bestätigen mit Eingabe und schließen den Editor mit Strg+x.

Wir starten den Server neu und kontrollieren den Status:

Code: Alles auswählen

systemctl restart zabbix-server
systemctl status zabbix-server
Dies sollte jetzt so aussehen:

Code: Alles auswählen

systemctl --type=service

Code: Alles auswählen

● zabbix-server.service - Zabbix Server
     Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-10-15 05:49:47 CEST; 4s ago
    Process: 16075 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
   Main PID: 16077 (zabbix_server)
      Tasks: 48 (limit: 6972)
     Memory: 47.9M
        CPU: 175ms
     CGroup: /system.slice/zabbix-server.service
             ├─16077 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
             ├─16084 /usr/sbin/zabbix_server: ha manager
...
...
Eine weitere Kontrolle - der Server sollte bereits die Log-Dateibefüllen:

Code: Alles auswählen

tail -n50 /var/log/zabbix/zabbix_server.log
Ein Beispiel:

Code: Alles auswählen

 16093:20221015:054947.239 server #6 started [alerter #3]
 16094:20221015:054947.239 server #7 started [preprocessing manager #1]
 16095:20221015:054947.239 server #8 started [preprocessing worker #1]
 16096:20221015:054947.240 server #9 started [preprocessing worker #2]
 16097:20221015:054947.240 server #10 started [preprocessing worker #3]
 16098:20221015:054947.241 server #11 started [lld manager #1]
 16099:20221015:054947.241 server #12 started [lld worker #1]
 16100:20221015:054947.242 server #13 started [lld worker #2]
 16102:20221015:054947.243 server #14 started [housekeeper #1]
 16103:20221015:054947.243 server #15 started [timer #1]
...
...
Ebenso sollten so einige Zabbix-Prozesse laufen:

Code: Alles auswählen

ps ax | grep zabbix_server
Jetzt starten wir den Zabbix-Server und Komponenten neu:

Code: Alles auswählen

systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2
Damit wäre die Installation des Servers abgeschlossen.
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Re: Zabbix - Monitoring des Netzwerkes und der Geräte

Beitrag von robertgoedl »

Weiter geht es mit der Einrichtung der grafischen Oberfläche im Webbrowser. Dazu öffnen Sie am lokalen Rechner die Adresse "localhost://zabbix" oder von einem entfernten Rechner die Adresse "http://ip-adresse/zabbix":
Zabbix - Webfrontend einrichten
Zabbix - Webfrontend einrichten
Unter Debian müssen wir erst über die Paket-Verwaltung das Paket "locales-all" installieren und den Befehl:

Code: Alles auswählen

dpkg-reconfigure locales
ausführen - wird der Befehl nicht gefunden:

Code: Alles auswählen

/sbin/depkg-reconfigure locales
Jetzt starten wir den Server neu:

Code: Alles auswählen

systemctl restart apache2
Anschließend wird die Seite im Browser neu geladen - anschließend können wir auch die Sprache anpassen - etwa Deutsch natürlich:
Zabbix - Webfrontend einrichten
Zabbix - Webfrontend einrichten
Sind Sie bei der Datenbank angelangt, müssen Sie eventuell die Datenbank und das Passwort anpassen:
Zabbix - Webfrontend einrichten
Zabbix - Webfrontend einrichten
Weiter geht es mit einer Bezeichnung für den Server - wichtig auch die Zeitzone anpassen. Zuletzt loggen Sie sich mit dem Benutzer "Admin" und dem Passwort "zabbix" ein:
Zabbix - Webfrontend einrichten
Zabbix - Webfrontend einrichten
Bevor Sie sich auf etwas anderes stürzen, sollten Sie das Passwort des Administrators wechseln - dies gelingt links über das Menü "Benutzereinstellungen → Profil":
Zabbix - Webfrontend einrichten
Zabbix - Webfrontend einrichten
Es kann sein, das Zabbix einige Sekunden benötigt, bis das Passwort im System aktualisiert wurde - es kann also dauern, bis Sie sich das nächste Mal einloggen können. Unter "Überwachung → Hosts" finden wir jetzt als ersten Eintrag unseren Zabbix-Server:
Dateianhänge
Zabbix -Webfrontend
Zabbix -Webfrontend
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Re: Zabbix - Monitoring des Netzwerkes und der Geräte

Beitrag von robertgoedl »

Die Zabbix-Komponenten

Bevor wir uns jetzt an die Arbeit mit Zabbix machen, werden wir uns mit dem Drumherum ein wenig beschäftigen. Was kann Zabbix eigentlich überwachen?
  • Computer und Hardware wie natürlich auch Switches
  • Sensoren
  • Industrielle Hardware
  • Software, wie etwa Datenbanken und Webserver, Services
  • Logfiles
  • Virtuelle Maschinen, wie etwa VMWare, Docker, Podman
  • Cloud
  • Belegung von Dateisystemen und Verzeichnissen
Dies ist aber nur eine grobe Auflistung.

Zabbix besteht aus mehreren Komponenten:
  • Zabbix-Server - dieser sammelt Daten, verarbeitet sie und speichert diese in einer Datenbank
  • Zabbix-Frontend - dieses lässt Einstellungen am Zabbix-Server vornehmen und präsentiert die Daten grafisch
  • Zabbix-Proxys - in großen Umgebungen sind Proxys vorteilhaft - sie können zahlreiche Aufgaben des Servers übernehmen, etwa das Sammeln und Verarbeiten von Daten - diese werden anschließend dem Server übergeben
  • Zabbix-Agents - diese werden auf Clients - etwa den zu überwachenden Systemen installiert, sie können Daten zum Zabbix-Server senden, oder der Server kann über diese die Clients abfragen
  • Zabbix-Java-Gateway - zum Überwachen von Java-Applikationen
Der Zabbix-Server (diesen haben wir im ersten Beitrag installiert) und der Proxy kann auf allen auf UNIX / Linux basierenden Betriebssystemen installiert werden - nicht aber auf Windows. Das Frontend kann wiederum etwa auch unter Windows auf einem Webserver installiert werden.

Wichtig sind vor allem die genutzten Ports - je nach Aufgabe müssen folgende Ports (TCP) durch die Firewall geöffnet werden:
  • Zabbix-Agent (1 und 2) hören im passiven Modus (auf den Clients) auf dem Port 10050
  • Server und Proxy warten auf dem Port 10051 auf aktive Eingaben von den Agents
  • Der Java-Gateway wartet auf dem Port 10052
  • Der Zabbix-Web-Service wartet auf Port 10053
Zabbix-Server und Proxy können in unterschiedlichen Versionen zusammenarbeiten. Der Unterschied darf jedoch nicht zu groß sein - Server und Proxy müssen in derselben Major-Version installiert sein. So wird etwa ein Proxy in der Version 6.0.0 und der Server in der Version 6.0.2 problemlos funktionieren - aber ein Proxy in der Version 5.0.0 und der Server in Version 6.0.0 nicht.
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Re: Zabbix - Monitoring des Netzwerkes und der Geräte

Beitrag von robertgoedl »

Zu überwachende Hosts / Clients hinzufügen

Wie gesagt - statische IP-Adressen sind vom Vorteil. Die IP-Adresse am aktuellen Rechner erfagen Sie am Terminal mit dem Befehl:
Nach erstem Grundwissen fügen wir jetzt einen ersten Rechner im Netzwerk hinzu. Da wir ein Betriebssystem installiert haben, können wir auf diesen (Linux, macOS, Solaris, UNIX, Windows, ...), können wir auf diesen die Zabbix-Agents installieren - wie bei der Server-Installation das Zabbix-Repository einfügen und den Zabbix-Agenten installieren. Unter Debian etwa gleich auf dem Terminal mit dem Befehl:

Code: Alles auswählen

apt install zabbix-agent
Jetzt haben wir auf dem ersten Host - eben einem von Zabbix überwachten Rechner den Agenten installiert. Diesen gilt es jetzt zu konfigurieren. Dies gelingt natürlich als Administrator auf dem Terminal:

Code: Alles auswählen

nano /etc/zabbix-/zabbix-agent.conf
Hier finden wir ab Zeile 105 die passenden Einträge:

Code: Alles auswählen

### Option: Server
#	List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#	Incoming connections will be accepted only from the hosts listed here.
#	If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#	and '::/0' will allow any IPv4 or IPv6 address.
#	'0.0.0.0/0' can be used to allow any IPv4 address.
#	Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=127.0.0.1
Die letzte Zeile gilt es jetzt anzupassen - hier geben wir die IP-Adresse des Servers an, im Beispiel:

Code: Alles auswählen

Server=192.168.178.21
Auf dem Server gilt es natürlich die entsprechenden Ports (siehe obiger Beitrag) zu öffnen. Auf dem Client den Port "10050". Anschließend gehen wir auf den Server und erstellen im Menü unter "Konfiguration → Hostgruppen" eine neue Gruppe:
Hostgruppe anlegen
Hostgruppe anlegen
Klicken Sie auf den Schalter "Neue Hostgruppe" rechts oben. Hostgruppen dienen dazu, Hosts in Gruppen zusammenzufassen, so kann man etwa normale Rechner in eine Gruppe legen, Server für Datenbanken und Webserver in eigene Gruppen legen - um einfacher die gerade gewünschten Rechner schneller zu finden. Ohne eine Hostgruppe lässt sich kein einzelner Host anlegen. Ich nenne die erste Gruppe jetzt einfach einmal "Rechner" - diese sind dann in der Übersicht der Hostgruppen zu finden:
Hostgruppe anlegen
Hostgruppe anlegen
Haben wir eine erste Hostgruppe erstellt, lassen sich auch einzelne Hosts erstellen - dies gelingt im Menü unter "Konfiguration → Hosts". Klicken Sie rechts oben auf den Schalter "Neuer Host":
Hosts anlegen
Hosts anlegen
Alle Felder mit Sternchen müssen ausgefüllt werden! Zu Beginn der Hostname des Hosts - diesen erfragen Sie am Terminal mit dem Befehl:

Code: Alles auswählen

hostname
Unter "Sichtbarer Name" können Sie wie gewünscht vorgehen - standardmäßig ist es wieder der Hostname - Sie können die Bezeichnung aber völlig frei vergeben.
Wichtig ist jetzt die Vorlagen (Template) - klicken Sie rechts auf den Schalter "Auswählen" und wählen "Templates → Linux by Zabbix-Agent" (im Falle von Linux natürlich).

Anschließend lässt sich unter "Hostgruppen" die zuvor erstellte Gruppe mit einem Klick auf "Auswählen" benennen.

Eine der wichtigsten Angaben - die "Schnittstelle" (das Interface), geben Sie die IP-Adresse oder den DNS-Namen an und klicken dahinter auf die Passende Schaltfläche.

Anschließend können Sie noch eine Beschreibung angeben. Es ist kein Muss - aber klicken Sie oben auf den Reiter "Marker (Tags)" - mittels Markern lässt sich später viel einfacher arbeiten - glauben Sie mir, vor allem, wenn es um viele Rechner geht:
Hosts anlegen
Hosts anlegen
Einen Wert müssen Sie nicht vergeben, anschließend klicken Sie unten links auf den Schalter "Hinzufügen".

Jetzt finden Sie den erstellten neuen Host in der Übersicht der Hosts, anschließend öffnen Sie das Menü "Überwachung → Hosts":
Überwachung der Hosts
Überwachung der Hosts
Hier finden Sie jetzt alle überwachte Hosts - egal, ob diese erreichbar sind oder nicht. Zu Beginn wird der Status des neuen Hosts (ZBX) ausgegraut sein - etwa nach einer Minute sollte das Icon jedoch grün werden - alles ist in Ordnung. Öffnen Sie das Menü "Überwachung → Probleme", sehen Sie nicht erreichbare Hosts und andere Probleme die durch das genutzte Template überwacht werden. Die Erreichbarkeit zeigt sich etwa auch unter allen Hosts - hier habe ich etwa den Agenten auf dem Host gestoppt:
Überwachung der Hosts - Host nicht erreichbar
Überwachung der Hosts - Host nicht erreichbar
Klicken Sie in der Übersicht auf den Schalter "Diagramme", erhalten Sie bereits zahlreiche Informationen über den Rechner und das System:
Überwachung der Hosts - Daten
Überwachung der Hosts - Daten
Jetzt können wir dem Host natürlich zahlreiche weitere Informationen entlocken. Dazu klicken Sie im Menü "Konfiguration → Hosts" direkt auf den Host und fügen weitere Vorlagen hinzu, alternativ erstellen Sie Vorlagen selbst. Öffnen wir einmal das Menü "Konfiguration → Hosts" und klicken in der Zeile des Hosts auf den Schalter "Datenpunkte" und hier rechts oben auf den Schalter "Neuer Datenpunkt":
Eigene Vorlagen erstellen
Eigene Vorlagen erstellen
Wir wechseln auf den Reiter "Marker" und geben eine Beschreibung an - etwa "Anwendung / ICMP":
Eigene Vorlagen erstellen
Eigene Vorlagen erstellen
Wir klicken auf "Verwenden" und schon ist die neue Abfrage aktiv.
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Benutzeravatar
robertgoedl
Administrator
Beiträge: 1317
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz
Has thanked: 150 times
Been thanked: 777 times
Kontaktdaten:

Re: Zabbix - Monitoring des Netzwerkes und der Geräte

Beitrag von robertgoedl »

Sehen wir uns zur Entspannung einmal an, wann uns Zabbix nun über was informieren wird (im Menü "Überwachung → Probleme") - siehe etwa der Neustart des Zabbix-Servers:
Probleme in Zabbix anzeigen
Probleme in Zabbix anzeigen
Entsprechende Meldungen sehen wir natürlich auch in der Übersicht im Menü "Überwachung → Hosts". Klicken Sie im Menü "Konfiguration → Hosts" in der Zeile des jeweiligen Hosts auf den Eintrag "Auslöser", sehen Sie die einzelnen Auslöser (Trigger):
Trigger / Auslöser
Trigger / Auslöser
Links sehen Sie auch die Farben, in welchen die Probleme gekennzeichnet werden.
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Gesperrt Vorheriges ThemaNächstes Thema