So installierst und konfigurierst du Zabbix Server und Client auf Rocky Linux 9

Zabbix ist eine kostenlose und quelloffene Überwachungslösung für IT-Infrastrukturen wie Netzwerke, Server, virtuelle Maschinen und Cloud-Dienste. Ihr Kern ist in C und Java geschrieben, das Frontend in PHP. Das Frontend bietet eine webbasierte Oberfläche, mit der du Kennzahlen wie Netzwerkauslastung, CPU-Last, Festplattenspeicherplatz usw. verfolgen und überwachen und auf der Grundlage von benutzerdefinierten Auslösern Benachrichtigungen senden kannst.

Zabbix arbeitet nach dem Client/Server-Modell. Die für verschiedene Betriebssysteme verfügbaren Clients oder Agenten kontaktieren den Server, um die Daten zu senden. Für Systeme ohne Agenten bietet Zabbix die Möglichkeit, allgemeine Überwachungsprotokolle wie das Simple Network Management Protocol (SNMP) oder das Intelligent Platform Management Interface (IPMI) zu verwenden.

In diesem Tutorial lernst du, wie du den Zabbix Server und den Client auf einem Rocky Linux 9 Server installierst.

Voraussetzungen

  • Zwei Server mit Rocky Linux 9, von denen einer als Server und der andere als Client fungiert, den wir über den Server überwachen werden.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Ein Fully Qualified Domain Name (FQDN) wie zabbix.example.com, der auf deinen Server zeigt.
  • Ein SMTP-Konto bei einem E-Mail-Dienst wie Amazon SES oder Mailgun.
  • Alles ist auf dem neuesten Stand.
    $ sudo dnf update
    
  • Damit das Tutorial und der Zabbix Server laufen, sind einige wichtige Pakete erforderlich. Einige davon befinden sich bereits auf deinem Server.
    $ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -y
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.

$ sudo firewall-cmd --state
running

Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.

$ sudo firewall-cmd --permanent --list-services

Es sollte die folgende Ausgabe angezeigt werden.

cockpit dhcpv6-client ssh

Die offenen Ports 10050 und 10051 werden vom Zabbix-Server benötigt, um sich mit dem Agenten zu verbinden.

$ sudo firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent

Lasse HTTP- und HTTPS-Ports zu.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Überprüfe erneut den Status der Firewall.

$ sudo firewall-cmd --permanent --list-all

Du solltest eine ähnliche Ausgabe sehen.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 10051/tcp 10050/tcp
  protocols:
  forward: yes
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Lade die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

Schritt 2 – SELinux auf permissiven Modus einstellen

Konfiguriere SELinux so, dass es im permissiven Modus arbeitet. In diesem Modus blockiert SELinux keinen Prozess, sondern protokolliert alles in der Audit-Log-Datei. Dies werden wir später nutzen, um SELinux-Regeln einzurichten.

$ sudo setenforce 0 && sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config

Überprüfe den SELinux-Status.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      33

Schritt 3 – Nginx und PHP-Repository konfigurieren

Das Zabbix-Paket installiert automatisch PHP und Nginx. Allerdings greift es auf ältere Versionen zurück. Deshalb müssen wir sicherstellen, dass der Prozess die neueste verfügbare Version installiert.

Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo zum Bearbeiten.

$ sudo nano /etc/yum.repos.d/nginx.repo

Füge den folgenden Code in die Datei ein.

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Aktiviere das Nginx Mainline Repository.

$ sudo dnf config-manager --enable nginx-mainline

Als nächstes müssen wir das PHP-Repository konfigurieren.

Der erste Schritt besteht darin, das Epel-Repository zu übernehmen.

$ sudo dnf install epel-release -y

Als nächstes installierst du das Remi-Repository.

$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Prüfe, ob PHP-Streams verfügbar sind.

$ dnf module list php -y
Name    Stream              Profiles                                      Summary
php     8.1                 common [d], devel, minimal                    PHP scripting language

Remi's Modular repository for Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP scripting language
php     remi-8.0            common [d], devel, minimal                    PHP scripting language
php     remi-8.1            common [d], devel, minimal                    PHP scripting language
php     remi-8.2            common [d], devel, minimal                    PHP scripting language
php     remi-8.3            common [d], devel, minimal                    PHP scripting language

Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled

Die Standardversion ist 8.1. Zum Zeitpunkt der Erstellung dieses Tutorials ist Zabbix mit PHP 8.2 kompatibel. Aktiviere daher das PHP 8.2 Repository von Remi. Die nächste Version von Zabbix wird PHP 8.3 unterstützen, also kannst du es aktivieren, wenn deine Zabbix-Version 6.0.26 oder höher ist.

$ sudo dnf module reset php -y
$ sudo dnf module enable php:remi-8.2

Jetzt können wir mit der Installation von Zabbix fortfahren.

Schritt 4 – Zabbix Server installieren

Die Zabbix-Pakete werden standardmäßig im EPEL-Repository bereitgestellt. Bevor wir mit der Installation fortfahren, müssen wir sie deaktivieren. Öffne die /etc/yum.repos.d/epel.repo zur Bearbeitung und füge die folgende Zeile unter dem Abschnitt [epel] hinzu.

[epel]
...
excludepkgs=zabbix*

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Die neueste Version von Zabbix ist 6.4.x, aber wir werden die LTS-Version (Long-term support) verwenden, die für eine Produktionsumgebung viel stabiler ist.

Installiere das Repository von Zabbix.

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm

Entferne den gesamten RPM-Cache.

$ sudo dnf clean all

Installiere Zabbix Server, Frontend und Agent. Wir werden den PostgreSQL-Server für unsere Zwecke verwenden und benötigen daher das Paket zabbix-web-pgsql. Wenn du einen MySQL/MariaDB/Percona-Server verwendest, musst du das Paket zabbix-web-mysql installieren.

$ sudo dnf install zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent

Schritt 5 – PostgreSQL installieren und konfigurieren

Zabbi funktioniert mit PostgreSQL 13 und höher. Rocky Linux 9 wird standardmäßig mit PostgreSQL 13 ausgeliefert. Für unser Tutorial werden wir jedoch PostgreSQL 16 verwenden.

Installiere die RPM-Datei des PostgreSQL-Repositorys.

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

Deaktiviere das integrierte PostgreSQL-Modul.

$ sudo dnf -qy module disable postgresql

Jetzt kannst du PostgreSQL mit dem unten stehenden Befehl installieren.

$ sudo dnf install -y postgresql16-server postgresql16-contrib

Initialisiere die Datenbank.

$ sudo /usr/pgsql-16/bin/postgresql-16-setup initdb

Aktiviere den PostgreSQL-Dienst.

$ sudo systemctl enable postgresql-16

Starte den PostgreSQL-Dienst.

$ sudo systemctl start postgresql-16

Überprüfe den Status des PostgreSQL-Dienstes.

$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-16.service; enabled; preset: disabled)
     Active: active (running) since Thu 2024-01-18 14:54:46 UTC; 10s ago
       Docs: https://www.postgresql.org/docs/16/static/
    Process: 3407 ExecStartPre=/usr/pgsql-16/bin/postgresql-16-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 3412 (postgres)
      Tasks: 7 (limit: 24694)
     Memory: 17.4M
        CPU: 117ms
     CGroup: /system.slice/postgresql-16.service
             ??3412 /usr/pgsql-16/bin/postgres -D /var/lib/pgsql/16/data/
             ??3413 "postgres: logger "
             ??3414 "postgres: checkpointer "
             ??3415 "postgres: background writer "
             ??3417 "postgres: walwriter "
             ??3418 "postgres: autovacuum launcher "
             ??3419 "postgres: logical replication launcher "

Erstelle den Zabbix-Datenbankbenutzer.

$ sudo -u postgres createuser --pwprompt zabbix

Du wirst zur Eingabe des Passworts aufgefordert.

Enter password for new role: 
Enter it again: 

Erstelle die Zabbix-Datenbank.

$ sudo -u postgres createdb -O zabbix zabbix

Importiere das Anfangsschema und die Datenbankdaten. Du wirst erneut nach deinem Passwort gefragt.

$ zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Dieser Vorgang kann ein paar Minuten dauern.

Öffne die Datei /etc/zabbix/zabbix_server.conf zum Bearbeiten.

$ sudo nano /etc/zabbix/zabbix_server.conf

Suche die Variable DBPassword, entferne das Rautezeichen (#) davor und setze den Wert auf das im vorherigen Schritt gewählte Passwort.

DBPassword=psqlpassword

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starten und aktivieren Sie den Zabbix-Server und die Agentendienste.

$ sudo systemctl enable zabbix-server zabbix-agent --now

Schritt 6 – PHP konfigurieren

Zabbix installiert die PHP- und Nginx-Konfigurationsdateien, die wir verwenden werden. Bevor wir sie verwenden können, müssen wir jedoch noch einige Änderungen vornehmen.

Zuerst müssen wir /etc/php-fpm.d/zabbix.conf zum Bearbeiten öffnen.

$ sudo nano /etc/php-fpm.d/zabbix.conf

Ändere die Werte von user = apache und group = apache in nginx, wie unten gezeigt.

user = nginx
group = nginx

Da wir Nginx aus dem offiziellen Repository verwenden, läuft es unter dem Benutzer nginx und nicht unter apache, dem Benutzer, unter dem die Distributionskopie von Nginx läuft.

Du kannst hier auch alle anderen PHP-bezogenen Werte bearbeiten oder eigene Definitionen hinzufügen. Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Starte und aktiviere den PHP-FPM-Dienst.

$ sudo systemctl enable php-fpm --now

Schritt 7 – SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu erstellen. Dazu verwenden wir den Snapd-Paketinstaller. Da Rocky Linux nicht mit diesem Paket ausgeliefert wird, installierst du den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux) Repository, um zu funktionieren. Da wir es aber bereits in Schritt 3 installiert haben, können wir direkt fortfahren.

Installiere Snapd.

$ sudo dnf install -y snapd

Aktiviere und starte den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installiere das Snap-Kernpaket und vergewissere dich, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstelle die notwendigen Links, damit Snapd funktioniert.

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

Installiere Certbot.

$ sudo snap install --classic certbot

Stelle mit dem folgenden Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Überprüfe, ob Certbot richtig funktioniert.

$ certbot --version
certbot 2.8.0

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d zabbix.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/zabbix.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Überprüfe den Certbot-Erneuerungszeitplanungsdienst.

$ sudo systemctl list-timers

Du findest snap.certbot.renew.service als einen der Dienste, die für die Ausführung vorgesehen sind.

NEXT                        LEFT          LAST                        PASSED       UNIT                        ACTIVATES                 -------------------------------------------------------------------------------------------------------------------------------------    
Sat 2024-01-20 10:04:02 UTC 1min 32s left Sat 2024-01-20 08:52:11 UTC 1h 10min ago dnf-makecache.timer         dnf-makecache.service
Sun 2024-01-21 00:00:00 UTC 13h left      Sat 2024-01-20 00:00:10 UTC 10h ago      logrotate.timer             logrotate.service
Sat 2024-01-20 21:13:00 UTC 11h left      Sat 2024-01-20 08:19:11 UTC 1h 43min ago snap.certbot.renew.timer    snap.certbot.renew.service

Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.

Schritt 8 – Nginx konfigurieren

Zabbix installiert eine Standardkonfigurationsdatei für Nginx. Wir müssen sie bearbeiten, um den Code für die Aktivierung von SSL-Zertifikaten hinzuzufügen. Außerdem müssen wir den Port listen ändern und den Code für die Umleitung von HTTP-Links auf HTTPS hinzufügen.

Öffne die Datei /etc/nginx/conf.d/zabbix.conf, um sie zu bearbeiten.

$ sudo nano /etc/nginx/conf.d/zabbix.conf

Bearbeite den Code so, dass die Datei wie folgt aussieht.

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    http2 on;

    root /usr/share/zabbix;

    index index.php;

    access_log  /var/log/nginx/zabbix.access.log;
    error_log   /var/log/nginx/zabbix.error.log;

    ssl_certificate      /etc/letsencrypt/live/zabbix.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/zabbix.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/zabbix.example.com/chain.pem;

    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location = /favicon.ico {
        log_not_found   off;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location /assets {
        access_log off;
        expires 10d;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /(api\/|conf[^\.]|include|locale) {
        deny            all;
        return          404;
    }

    location /vendor {
        deny            all;
        return          404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass    unix:/run/php-fpm/zabbix.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index   index.php;

        fastcgi_param   DOCUMENT_ROOT   /usr/share/zabbix;
        fastcgi_param   SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
        fastcgi_param   PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;

        include fastcgi_params;
        fastcgi_param   QUERY_STRING    $query_string;
        fastcgi_param   REQUEST_METHOD  $request_method;
        fastcgi_param   CONTENT_TYPE    $content_type;
        fastcgi_param   CONTENT_LENGTH  $content_length;

        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout         60;
        fastcgi_send_timeout            180;
        fastcgi_read_timeout            180;
        fastcgi_buffer_size             128k;
        fastcgi_buffers                 4 256k;
        fastcgi_busy_buffers_size       256k;
        fastcgi_temp_file_write_size    256k;
    }
}

# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  zabbix.example.com;
    return 301   https://$host$request_uri;
}

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Öffne die Datei /etc/nginx/nginx.conf, um sie zu bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size 64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe deine Nginx-Konfiguration.

$ sudo nginx -t

Starte und aktiviere den Nginx-Dienst.

$ sudo systemctl enable nginx --now

Schritt 9 – Zugriff auf das Zabbix-Frontend

Bevor du das Zabbix-Frontend installierst, musst du die Rechte für das Verzeichnis /etc/zabbix/web so einstellen, dass Nginx darauf zugreifen kann.

$ sudo chown -R nginx:nginx /etc/zabbix/web

Öffne die URL https://zabbix.example.com in deinem Browser und du erhältst den folgenden Bildschirm.

Zabbix Web Installer Home

Klicke auf die Schaltfläche Nächster Schritt, um die Installation von Zabbix abzuschließen. Auf der nächsten Seite wird geprüft, ob die Systemanforderungen erfüllt sind.

Zabbix Systemanforderungen prüfen

Wenn es keine Probleme gibt, klicke auf die Schaltfläche Nächster Schritt, um fortzufahren. Als Nächstes wirst du aufgefordert, deine Datenbank-Anmeldedaten einzugeben. Entferne das Häkchen bei der Option Datenbank-TLS-Verschlüsselung, da wir sie nicht konfiguriert haben.

Zabbix Datenbank Details

Klicke auf die Schaltfläche “ Nächster Schritt „, um fortzufahren. Gib den Namen deines Zabbix-Servers ein. Er ist zwar optional, aber wenn er konfiguriert ist, wird er in der Menüleiste und den Seitentiteln angezeigt.

Zabbix Einstellungen

Klicke auf die Schaltfläche Nächster Schritt, um fortzufahren. Du wirst aufgefordert, alle Einstellungen zu bestätigen.

Zusammenfassung der Zabbix-Installation

Wenn alles in Ordnung ist, klicke auf die Schaltfläche Nächster Schritt, um fortzufahren. Du solltest eine Meldung sehen, die dir mitteilt, dass die Installation erfolgreich war.

Zabbix-Installation abgeschlossen

Klicke auf die Schaltfläche Fertig stellen, um den Vorgang abzuschließen. Du wirst zur Anmeldeseite weitergeleitet.

Zabbix Login-Seite

Der Standardbenutzername ist Admin und das Passwort lautet zabbix. Gib die Anmeldedaten ein und klicke auf die Schaltfläche Anmelden, um auf das Zabbix-Dashboard zuzugreifen.

Zabbix Dashboard

Schritt 10 – SELinux konfigurieren

Aktiviere den HTTP-Daemon für die Verbindung mit Zabbix.

$ sudo setsebool -P httpd_can_connect_zabbix 1

Erlaube Zabbix, sich mit allen TCP-Ports zu verbinden.

$ sudo setsebool -P zabbix_can_network on

Aktiviere die daemons_enable_cluster_mode, um Fehler des HA-Managers zu vermeiden.

$ sudo setsebool -P daemons_enable_cluster_mode on

Erstelle ein benutzerdefiniertes SELinux-Richtlinienpaket unter Verwendung des Audit-Logs.

$ sudo grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i zabbix_policy.pp

Installiere das erstellte benutzerdefinierte SELinux-Richtlinienpaket.

$ sudo semodule -i zabbix_policy.pp

Führe den Befehl zur Überprüfung auf Datenbankfehler aus.

$ sudo sealert -a /var/log/audit/audit.log

Es wird dir eine Reihe von Regeln vorschlagen, die du anwenden kannst.

Führe die folgenden Befehle aus.

$ sudo ausearch -c 'php-fpm' --raw | audit2allow -M my-phpfpm
$ sudo semodule -X 300 -i my-phpfpm.pp
$ sudo ausearch -c 'zabbix_agentd' --raw | audit2allow -M my-zabbixagentd
$ sudo semodule -X 300 -i my-zabbixagentd.pp

Wende die Richtlinie an, um Nginx den Zugriff auf PostgreSQL zu ermöglichen.

$ sudo setsebool -P httpd_can_network_connect_db 1

Wende die Richtlinie an, um Verbindungen zu externen Hosts zuzulassen.

$ sudo setsebool -P httpd_can_network_connect 1

Setze SELinux in den erzwingenden Modus.

$ sudo setenforce 1 && sudo sed -i 's/^SELINUX=.*/SELINUX=enforcing/g' /etc/selinux/config

Schritt 11 – Zabbix Agent auf einem entfernten System installieren

Die Hauptaufgabe des Zabbix-Agenten ist es, Informationen aus dem System zu sammeln und sie zur Analyse an den zentralen Zabbix-Server zu senden. Wir werden den Agenten auf einem Rocky Linux 9 System installieren, aber du kannst das auf jeder Distribution tun.

Schritt 11.1 – Firewall auf dem entfernten System konfigurieren

Öffne Port 10050, damit sich der Zabbix-Agent mit dem Server verbinden kann.

$ sudo firewall-cmd --add-port=10050/tcp --permanent --zone=public
$ sudo firewall-cmd --reload

Schritt 11.2 – Zabbix-Agent installieren

Du musst Schritt 4 bis auf die letzte Installationsanweisung wiederholen. Das heißt, du bearbeitest die Datei /etc/yum.repos.d/epel.repo und fügst die folgende Zeile in den Abschnitt [epel] ein.

[epel]
...
excludepkgs=zabbix*

Als Nächstes installierst du das Zabbix-Repository und leerst den RPM-Cache.

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ sudo dnf clean all

Installiere den Zabbix-Agenten.

$ sudo dnf install zabbix-agent

Schritt 11.3 Zabbix-Agent konfigurieren

Zabbix unterstützt zertifikatsbasierte Verschlüsselung, aber der Einfachheit halber werden wir in diesem Tutorial Pre-Shared Keys (PSK) verwenden, um die Verbindung zwischen Server und Agent zu sichern.

Erstelle eine PSK-Datei.

$ sudo sh -c "openssl rand -hex 32 > /etc/zabbix/zabbix_agentd.psk"

Zeige den Schlüssel zum Kopieren an.

$ cat /etc/zabbix/zabbix_agentd.psk
797c84746dfe86f71b0f207785906d2bb886be27149b296d86df6b1ec9de6bbe

Kopiere diesen Schlüssel, denn wir werden ihn später brauchen.

Der Zabbix-Agent speichert seine Konfiguration in der Datei /etc/zabbix/zabbix-agentd.conf. Öffne sie zum Bearbeiten.

$ sudo nano /etc/zabbix/zabbix_agentd.conf

Hebe die Kommentare zu den folgenden Variablen auf und aktualisiere ihre Werte wie unten gezeigt.

Server=<zabbix_server_IP>
ServerActive=<zabbix_server_IP>
HostMetadata=ZabbixLinuxClient
Hostname=zabbixclient.example.com

Setze die IP-Adresse deines Zabbix-Servers als Wert für die Variablen Server und ServerActive ein. Die Variable HostMetadata kann alles sein, was du zur Identifizierung des Systems verwenden kannst. Sie wird auch für die automatische Registrierung im Zabbix-Frontend verwendet, auf die wir später noch eingehen werden. Das Element Hostname bezieht sich auf den System-Hostnamen des Zabbix-Agentenknotens.

Du kannst den Hostnamen mit dem folgenden Befehl herausfinden.

$ cat /etc/hostname

Als Nächstes suchst du den Abschnitt, der eine sichere Verbindung zwischen dem Server und dem Agenten konfiguriert. Suche die Variable TLSConnect und ändere ihren Wert von unencrypted in psk, wie unten gezeigt.

...
### Option: TLSConnect
#       How the agent should connect to server or proxy. Used for active checks.
#       Only one value can be specified:
#               unencrypted - connect without encryption
#               psk         - connect using TLS and a pre-shared key
#               cert        - connect using TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSConnect=psk
...

Als Nächstes suchst du den Abschnitt TLSAccept und änderst seinen Wert in psk (siehe unten).

...
### Option: TLSAccept
#       What incoming connections to accept.
#       Multiple values can be specified, separated by comma:
#               unencrypted - accept connections without encryption
#               psk         - accept connections secured with TLS and a pre-shared key
#               cert        - accept connections secured with TLS and a certificate
#
# Mandatory: yes, if TLS certificate or PSK parameters are defined (even for 'unencrypted' connection)
# Default:
# TLSAccept=psk
...

Als Nächstes suchst du den Abschnitt TLSPSKIdentity und änderst seinen Wert in PSK 001 (siehe Abbildung).

...
### Option: TLSPSKIdentity
#       Unique, case sensitive string used to identify the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKIdentity=PSK 001
...

Dies ist die PSK-ID, die du verwenden wirst, um den Host über das Zabbix-Webfrontend hinzuzufügen.

Schließlich suchst du den Abschnitt TLSPSKFile und änderst den Wert in den Speicherort der PSK-Datei (siehe Abbildung).

...
### Option: TLSPSKFile
#       Full pathname of a file containing the pre-shared key.
#
# Mandatory: no
# Default:
# TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...

Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Schritt 11.4 – Zabbix-Agent starten

Starte und aktiviere den Zabbix-Agentendienst.

$ sudo systemctl enable zabbix-agent --now

Schritt 12 – Hinzufügen des Zabbix-Clients zum Zabbix-Frontend für die Überwachung

Wir können einen neuen Host zu den bestehenden definierten Hostgruppen hinzufügen oder eine neue Hostgruppe erstellen. Mit Hostgruppen kannst du die Arten von Knoten, die du überwachen willst, kategorisieren. Um eine neue Hostgruppe zu erstellen, öffnest du die Option Hostgruppen im Menü Konfiguration.

Menü der Zabbix-Host-Gruppe

Gib den Namen der Gruppe in das Feld ein und klicke auf die Schaltfläche Übernehmen, um die Gruppe zu erstellen.

Um einen neuen Host zu erstellen, klicke auf die Option Hosts im Menü Konfiguration und dann auf die Schaltfläche Host erstellen oben rechts.

Zabbix Hosts erstellen

Füge den Hostnamen des Zabbix-Knotens hinzu.

Gib Linux by Zabbix agent im Abschnitt Vorlagen ein und wähle die Vorlage aus dem Dropdown-Menü.

Zabbix Templates Option

Gib im Abschnitt Gruppen den Eintrag Linux Server ein und wähle ihn aus.

Zabbix Gruppen Option

Klicke auf die Schaltfläche Hinzufügen im Abschnitt Schnittstellen und wähle Agent.

Zabbix Agent Schnittstelle

Füge dann die IP-Adresse des Zabbix-Client-Knotens hinzu. Wenn du fertig bist, sollte das vollständige Popup “ Neuer Host “ wie folgt aussehen.

Zabbix Neuer Host Popup

Als Nächstes wechselst du zur Registerkarte Verschlüsselung. Wähle PSK für die Optionen “ Verbindungen zum Host “ und “ Verbindungen vom Host „. Setze die PSK-Identität auf PSK 001. Das ist der Wert, den wir in Schritt 11.3 für die Variable TLSPSKIdentity festgelegt haben. Lege dann als PSK-Wert den Schlüssel fest, den du zuvor auf dem Agentenrechner erzeugt hast.

Zabbix Agent Verschlüsselung

Wenn du fertig bist, klicke auf die Schaltfläche Hinzufügen, um das Hinzufügen des Hosts abzuschließen.

Du solltest den neuen Host in der Liste mit einer grünen Markierung sehen, die anzeigt, dass der Agent mit dem Server verbunden ist und wie erwartet funktioniert.

Zabbix Hosts Liste

Schritt 13 – E-Mail-Benachrichtigungen konfigurieren

Zabbix unterstützt viele Arten von Benachrichtigungen wie E-Mail, Slack, Telegram, SMS, etc. Für unser Tutorial werden wir E-Mail-Benachrichtigungen konfigurieren. Besuche das Zabbix-Front-End, klicke auf Verwaltung und dann auf Medientypen im linken Menü. Du siehst zwei E-Mail-Typen, einen für Klartext-E-Mails und einen für HTML-E-Mails.

Zabbix Medientypen

Klicke auf die Option E-Mail (HTML) und du wirst die folgende Seite sehen.

Zabbix E-Mail Medientyp konfigurieren

Gib die Daten deines SMTP-Servers ein. Für unseren Lehrgang verwenden wir den Amazon SES-Dienst. Klicke auf die Schaltfläche Aktualisieren, wenn du fertig bist, um die Angaben zu speichern. Du kommst zurück zur Seite Medientypen. Klicke auf der Seite auf die Schaltfläche Testen, um die E-Mail-Einstellungen zu testen. Es wird ein Popup-Fenster geöffnet. Gib deine E-Mail-Adresse ein und klicke auf die Schaltfläche Testen, um eine Test-E-Mail zu versenden.

Zabbix Test E-Mail Popup

Du solltest eine Erfolgsmeldung auf dem Popup sehen, die dir mitteilt, dass es geklappt hat, und du solltest die folgende E-Mail in deinem Posteingang erhalten. Schließe das Popup-Fenster, indem du auf die Schaltfläche Abbrechen klickst.

Zabbix Test E-Mail

Schritt 14 – Einen neuen Benutzer anlegen

Der Standardbenutzer von Zabbix ist nicht so konfiguriert, dass er irgendwelche Benachrichtigungen erhält. Das können wir zwar tun, aber der Standardbenutzer ist auch unsicher in der Benutzung. Am besten legst du einen neuen Benutzer an und deaktivierst dann den Standardbenutzer.

Besuche den Abschnitt Verwaltung >> Benutzer im Menü und klicke oben rechts auf die Schaltfläche Benutzer erstellen, um die folgende Seite zu öffnen.

Zabbix New User page

Fülle die Benutzerdetails aus. Wähle Zabbix-Administratoren als Benutzergruppe aus. Wenn du fertig bist, klicke auf die Registerkarte Medien. Klicke auf die Schaltfläche Hinzufügen und wähle als Typ E-Mail (HTML).

Zabbix User Media Tab

Gib deine E-Mail-Adresse in das Feld Senden an ein und klicke auf die Schaltfläche Hinzufügen, um die E-Mail-Option hinzuzufügen. Wechsle dann zur Registerkarte Berechtigungen und klicke auf die Schaltfläche Auswählen, um die Rolle Superadmin hinzuzufügen.

Zabbix User Permissions

Klicke auf die Schaltfläche Hinzufügen, um das Hinzufügen des Benutzers abzuschließen. Als Nächstes musst du dich vom Frontend abmelden, dich als neuer Benutzer wieder anmelden und zur Benutzerseite zurückkehren. Klicke auf den Benutzer Admin, wähle die Gruppe Deaktiviert und aktualisiere den Benutzer. Dadurch wird die Verwendung des Standardbenutzers deaktiviert.

Schritt 15 – Sende eine Testmeldung

Standardmäßig überwacht Zabbix den freien Speicherplatz auf dem Server. Es erkennt alle Festplatteneinhängungen und führt regelmäßig Überprüfungen durch.

Der erste Schritt besteht darin, den Benachrichtigungs-Trigger zu aktivieren, der es Zabbix ermöglicht, Benachrichtigungen an alle Administratoren zu senden. Zabbix hat den Standard-Trigger bereits konfiguriert. Wir müssen ihn aktivieren, damit er funktioniert. Gehe zu Konfiguration >> Aktionen >> Trigger-Aktionen und ändere den Status von Deaktiviert in Aktiviert (siehe Abbildung).

Zabbix Auslöser-Aktionen

Als Nächstes meldest du dich am Zabbix-Knoten an und erstellst eine temporäre Datei, die groß genug ist, um eine Warnung zur Festplattennutzung auszulösen.

Ermitteln Sie zunächst den freien Speicherplatz auf dem Server.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   51M  730M   7% /run
/dev/vda2        94G   12G   78G  13% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

Dies zeigt, dass wir etwa 78 GB freien Speicherplatz haben. Als Nächstes verwendest du den Befehl fallocate, um mehr als 80 % des Speicherplatzes vorab zuzuweisen. Das ist groß genug, um den Alarm auszulösen.

$ fallocate -l 74G /tmp/temp.img

Überprüfe die Festplattennutzung erneut.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        4.0M     0  4.0M   0% /dev
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           780M   54M  726M   7% /run
/dev/vda2        94G   86G  3.9G  96% /
/dev/vda1       260M  7.0M  253M   3% /boot/efi
tmpfs           390M  4.0K  390M   1% /run/user/1001

Zabbix löst einen Alarm über den Speicherplatz aus und sendet eine E-Mail-Benachrichtigung darüber. Die E-Mail sieht wie die folgende aus.

Zabbix Test Alert E-Mail

Du kannst auch im Dashboard nach der Warnung suchen, die innerhalb weniger Sekunden erscheinen sollte.

Zabbix Disk Check Alert Monitoring Dashboard

Lösche die temporäre Datei, wenn du fertig bist.

$ rm -f /tmp/temp.img

Du solltest eine weitere E-Mail erhalten, die dich darüber informiert, dass das Problem behoben wurde.

Zabbix Test Problem behoben E-Mail

Schritt 16 – Automatische Registrierung für Linux-Knoten konfigurieren

Wenn du mehrere Knoten zum Zabbix-Server hinzufügen musst, kann der Prozess etwas mühsam werden. Zum Glück kannst du den Prozess mit dem Zabbix-Frontend automatisieren, indem du die automatische Registrierung nutzt.

Gehe zu Aktionen >> Autoregistrierungsaktionen und klicke oben rechts auf die Schaltfläche Aktion erstellen.

Zabbix Autoregistrierungen Seite

In der neuen Maske gibst du der Aktion einen Namen(Automatische Registrierung von Linux-Servern).

Klicke auf die Schaltfläche Hinzufügen unter Bedingungen, um eine Bedingung hinzuzufügen und wähle Host-Metadaten als Typ, enthält als Operator und Linux als Wert.

Zabbix Automatische Anmeldung Bedingungen

Klicke auf Hinzufügen, um fortzufahren und die Seite zum Erstellen der Aktion sollte wie folgt aussehen.

Zabbix Autoregistrierung Neue Aktionsseite

Klicke auf die Registerkarte Vorgänge, wähle als Vorgang Zu Hostgruppe hinzufügen und wähle Linux-Server als Hostgruppen. Klicke auf die Schaltfläche Hinzufügen, um den Vorgang abzuschließen.

Zabbix Autoregistrierungsvorgang Details

Wenn du die PSK-Verschlüsselung verwenden möchtest, kannst du auch das konfigurieren. Gehe in das Menü Verwaltung >> Allgemein >> Autoregistrierung und aktiviere beide Verschlüsselungsoptionen. Gib eine PSK-ID und einen PSK-Schlüssel ein, die auf dem Zabbix-Server erstellt wurden. Du kannst diese PSK-ID und diesen Schlüssel auf jedem Knoten verwenden und sie werden mit diesen Werten verschlüsselt.

Zabbix Autoregistrierung Verschlüsselung

Von nun an wird der Zabbix-Agent jedes Mal, wenn du ihn auf einem Linux-Server installierst und konfigurierst, automatisch zum Zabbix-Frontend hinzugefügt.

Fazit

Damit ist unser Tutorial zur Installation und Konfiguration eines Zabbix-Servers auf einem Rocky Linux 9-System abgeschlossen. Wir haben auch einen Zabbix-Agenten auf einem entfernten Server installiert, um eine Verbindung mit dem Server herzustellen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …