Zabbix Installation · 22 min read · Oct 09, 2025

So installieren und konfigurieren Sie den Zabbix-Server und -Client auf Rocky Linux 9

Zabbix ist eine kostenlose und Open-Source-Überwachungslösung für IT-Infrastrukturen wie Netzwerke, Server, virtuelle Maschinen und Cloud-Dienste. Der Kern ist in C und Java geschrieben, während das Frontend in PHP verfasst ist. Das Frontend bietet eine webbasierte Schnittstelle zur Verfolgung und Überwachung von Metriken wie Netzwerknutzung, CPU-Last, Speicherplatz usw. und sendet Benachrichtigungen basierend auf benutzerdefinierten Triggern.

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

In diesem Tutorial lernen Sie, wie Sie den Zabbix-Server und -Client auf einem Rocky Linux 9-Server installieren.

Voraussetzungen

  • Zwei Server, die Rocky Linux 9 ausführen. Einer wird als Server fungieren und der andere wird der Client sein, den wir mit dem Server überwachen werden.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Ein Fully Qualified Domain Name (FQDN) wie zabbix.example.com, der auf Ihren Server zeigt.
  • Ein SMTP-Konto mit einem E-Mail-Dienst wie Amazon SES oder Mailgun.
  • Alles ist aktualisiert. $ sudo dnf update
  • Einige essentielle Pakete sind erforderlich, damit das Tutorial und der Zabbix-Server ausgeführt werden können. Einige davon sind möglicherweise bereits auf Ihrem Server installiert. $ 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üfen Sie den Status der Firewall.

$ sudo firewall-cmd --state
running

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

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

Es sollte die folgende Ausgabe anzeigen.

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

Erlauben Sie HTTP- und HTTPS-Ports.

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

Überprüfen Sie den Status der Firewall erneut.

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

Sie sollten 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:

Laden Sie die Firewall neu, um die Änderungen zu aktivieren.

$ sudo firewall-cmd --reload

Schritt 2 - Setzen Sie SELinux in den permissiven Modus

Konfigurieren Sie SELinux, um im permissiven Modus zu arbeiten. In diesem Modus blockiert SELinux keinen Prozess, sondern protokolliert alles in die Audit-Protokolldatei. Wir werden dies später verwenden, um SELinux-Regeln festzulegen.

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

Überprüfen Sie 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. Es wird jedoch ältere Versionen davon abrufen. Daher müssen wir sicherstellen, dass der Prozess die neueste verfügbare Version installiert.

Erstellen und öffnen Sie die Datei /etc/yum.repos.d/nginx.repo zur Bearbeitung.

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

Fügen Sie den folgenden Code 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

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Aktivieren Sie 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 holen.

$ sudo dnf install epel-release -y

Installieren Sie als Nächstes das Remi-Repository.

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

Überprüfen Sie die verfügbaren PHP-Streams.

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

Remis Modular-Repository für Enterprise Linux 9 - x86_64
Name    Stream              Profiles                                      Summary
php     remi-7.4            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.0            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.1            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.2            common [d], devel, minimal                    PHP-Skriptsprache
php     remi-8.3            common [d], devel, minimal                    PHP-Skriptsprache

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

Die Standardversion ist 8.1. Zum Zeitpunkt des Schreibens dieses Tutorials ist Zabbix mit PHP 8.2 kompatibel. Aktivieren Sie daher Remis PHP 8.2-Repository. Die nächste Version von Zabbix wird PHP 8.3 unterstützen, sodass Sie dies aktivieren können, wenn Ihre 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

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

[epel]
...
excludepkgs=zabbix*

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

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

Installieren Sie das Zabbix-Repository.

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

Entfernen Sie den gesamten RPM-Cache.

$ sudo dnf clean all

Installieren Sie den Zabbix-Server, das Frontend und den Agenten. Wir werden den PostgreSQL-Server für unsere Zwecke verwenden und benötigen daher das zabbix-web-pgsql-Paket. Wenn Sie MySQL/MariaDB/Percona-Server verwenden, müssen Sie das zabbix-web-mysql-Paket 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

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

Installieren Sie 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

Deaktivieren Sie das integrierte PostgreSQL-Modul.

$ sudo dnf -qy module disable postgresql

Jetzt können Sie PostgreSQL mit dem folgenden Befehl installieren.

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

Initialisieren Sie die Datenbank.

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

Aktivieren Sie den PostgreSQL-Dienst.

$ sudo systemctl enable postgresql-16

Starten Sie den PostgreSQL-Dienst.

$ sudo systemctl start postgresql-16

Überprüfen Sie den Status des PostgreSQL-Dienstes.

$ sudo systemctl status postgresql-16
? postgresql-16.service - PostgreSQL 16-Datenbankserver
     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 "

Erstellen Sie den Zabbix-Datenbankbenutzer.

$ sudo -u postgres createuser --pwprompt zabbix

Sie werden nach dem Passwort gefragt.

Enter password for new role: 
Enter it again: 

Erstellen Sie die Zabbix-Datenbank.

$ sudo -u postgres createdb -O zabbix zabbix

Importieren Sie das anfängliche Schema und die Datenbankdaten. Sie werden erneut nach Ihrem Passwort gefragt.

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

Dieser Prozess kann einige Minuten dauern.

Öffnen Sie die Datei /etc/zabbix/zabbix_server.conf zur Bearbeitung.

$ sudo nano /etc/zabbix/zabbix_server.conf

Suchen Sie die Variable DBPassword, kommentieren Sie sie aus, indem Sie das Hash-Zeichen (#) davor entfernen, und setzen Sie ihren Wert auf das Passwort, das Sie im vorherigen Schritt gewählt haben.

DBPassword=psqlpassword

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

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

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

Schritt 6 - PHP konfigurieren

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

Zuerst müssen wir die Datei /etc/php-fpm.d/zabbix.conf zur Bearbeitung öffnen.

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

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

user = nginx
group = nginx

Dies liegt daran, dass wir Nginx aus seinem offiziellen Repository verwenden, das unter dem Benutzer nginx und nicht unter apache ausgeführt wird, was die Verteilungskopie von Nginx ist.

Sie können auch andere PHP-bezogene Werte bearbeiten oder hier benutzerdefinierte Definitionen hinzufügen. Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Starten und aktivieren Sie den PHP-FPM-Dienst.

$ sudo systemctl enable php-fpm --now

Schritt 7 - SSL installieren

Wir müssen Certbot installieren, um das SSL-Zertifikat zu generieren. Wir werden dafür den Snapd-Paketinstaller verwenden. Da Rocky Linux nicht mit ihm geliefert wird, installieren Sie den Snapd-Installer. Er benötigt das EPEL (Extra Packages for Enterprise Linux)-Repository, um zu funktionieren. Da wir es jedoch bereits in Schritt 3 installiert haben, können wir direkt fortfahren.

Installieren Sie Snapd.

$ sudo dnf install -y snapd

Aktivieren und starten Sie den Snap-Dienst.

$ sudo systemctl enable snapd --now

Installieren Sie das Snap-Core-Paket und stellen Sie sicher, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core && sudo snap refresh core

Erstellen Sie die erforderlichen 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

Installieren Sie Certbot.

$ sudo snap install --classic certbot

Verwenden Sie den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem Sie einen symbolischen Link zum Verzeichnis /usr/bin erstellen.

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

Überprüfen Sie, ob Certbot ordnungsgemäß funktioniert.

$ certbot --version
certbot 2.8.0

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

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

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/zabbix.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppe-Zertifikat.

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

Überprüfen Sie den Certbot-Erneuerungsplanungsdienst.

$ sudo systemctl list-timers

Sie finden snap.certbot.renew.service als einen der Dienste, die geplant 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ühren Sie einen Testlauf des Prozesses durch, um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert.

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie bereit. Ihr Zertifikat wird automatisch erneuert.

Schritt 8 - Nginx konfigurieren

Zabbix installiert eine Standard-Nginx-Konfigurationsdatei. Wir müssen sie bearbeiten, um den Code zum Aktivieren von SSL-Zertifikaten hinzuzufügen. Wir müssen auch den listen-Port ändern und den Code zum Umleiten von HTTP-Links auf HTTPS hinzufügen.

Öffnen Sie die Datei /etc/nginx/conf.d/zabbix.conf zur Bearbeitung.

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

Bearbeiten Sie den Code, sodass 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;
}

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Öffnen Sie die Datei /etc/nginx/nginx.conf zur Bearbeitung.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size 64;

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

Starten und aktivieren Sie den Nginx-Dienst.

$ sudo systemctl enable nginx --now

Schritt 9 - Zugriff auf das Zabbix-Frontend

Bevor Sie das Zabbix-Frontend installieren, setzen Sie die Berechtigung für das Verzeichnis /etc/zabbix/web, damit Nginx darauf zugreifen kann.

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

Öffnen Sie die URL https://zabbix.example.com in Ihrem Browser und Sie erhalten den folgenden Bildschirm.

Zabbix Web Installer Home

Klicken Sie auf die Schaltfläche Nächster Schritt, um die Installation von Zabbix abzuschließen. Die nächste Seite überprüft die Systemanforderungen und ob sie alle erfüllt sind.

Zabbix System Requirements Check

Wenn es kein Problem gibt, klicken Sie auf die Schaltfläche Nächster Schritt, um fortzufahren. Als Nächstes werden Sie aufgefordert, Ihre Datenbankanmeldeinformationen einzugeben. Deaktivieren Sie die Option Datenbank-TLS-Verschlüsselung, da wir sie nicht konfiguriert haben.

Zabbix Database details

Drücken Sie die Schaltfläche Nächster Schritt, um fortzufahren. Geben Sie den Namen Ihres Zabbix-Servers ein. Es ist jedoch optional, aber wenn es konfiguriert ist, wird es in der Menüleiste und in den Seitentiteln angezeigt.

Zabbix Settings

Drücken Sie die Schaltfläche Nächster Schritt, um fortzufahren. Sie werden aufgefordert, alle Einstellungen zu bestätigen.

Zabbix Installation summary

Wenn alles in Ordnung ist, drücken Sie die Schaltfläche Nächster Schritt, um fortzufahren. Sie sollten die Nachricht sehen, die Ihnen mitteilt, dass die Installation erfolgreich war.

Zabbix Installation Complete

Klicken Sie auf die Schaltfläche Fertigstellen, um den Prozess abzuschließen. Sie werden zur Anmeldeseite weitergeleitet.

Zabbix Login Page

Der Standardbenutzername ist Admin und das Passwort ist zabbix. Geben Sie die Anmeldeinformationen ein und klicken Sie auf die Schaltfläche Anmelden, um auf das Zabbix-Dashboard zuzugreifen.

Zabbix dashboard

Schritt 10 - SELinux konfigurieren

Aktivieren Sie den HTTP-Daemon, um eine Verbindung zu Zabbix herzustellen.

$ sudo setsebool -P httpd_can_connect_zabbix 1

Erlauben Sie Zabbix, sich mit allen TCP-Ports zu verbinden.

$ sudo setsebool -P zabbix_can_network on

Aktivieren Sie daemons_enable_cluster_mode, um Fehler des HA-Managers zu vermeiden.

$ sudo setsebool -P daemons_enable_cluster_mode on

Erstellen Sie ein benutzerdefiniertes SELinux-Richtlinienpaket mit dem Audit-Protokoll.

$ sudo grep "denied.*zabbix" /var/log/audit/audit.log | audit2allow -M zabbix_policy
****************** WICHTIG ********************* 
Um dieses Richtlinienpaket aktiv zu machen, führen Sie aus:

semodule -i zabbix_policy.pp

Installieren Sie das erstellte benutzerdefinierte SELinux-Richtlinienpaket.

$ sudo semodule -i zabbix_policy.pp

Führen Sie den Befehl aus, um nach Datenbankfehlern zu suchen.

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

Es wird Ihnen viele Regeln vorschlagen, die Sie anwenden können.

Führen Sie 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

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

$ sudo setsebool -P httpd_can_network_connect_db 1

Wenden Sie die Richtlinie an, um Verbindungen zu externen Hosts zu ermöglichen.

$ sudo setsebool -P httpd_can_network_connect 1

Setzen Sie SELinux in den Durchsetzungsmodus.

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

Schritt 11 - Zabbix-Agenten auf einem Remote-System installieren

Die Hauptaufgabe des Zabbix-Agenten besteht darin, Informationen vom System zu sammeln und sie an den zentralen Zabbix-Server zur Analyse zu senden. Wir werden den Agenten auf einem Rocky Linux 9-System installieren, aber Sie können dies auf jeder Distribution tun.

Schritt 11.1 - Firewall auf dem Remote-System konfigurieren

Öffnen Sie den Port 10050, um dem Zabbix-Agenten zu ermöglichen, eine Verbindung zum Server herzustellen.

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

Schritt 11.2 - Zabbix-Agenten installieren

Sie müssen Schritt 4 wiederholen, mit Ausnahme der letzten Installationsanweisung. Das bedeutet, die Datei /etc/yum.repos.d/epel.repo zu bearbeiten und die folgende Zeile im Abschnitt [epel] hinzuzufügen.

[epel]
...
excludepkgs=zabbix*

Installieren Sie als Nächstes das Zabbix-Repository und bereinigen Sie 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

Installieren Sie den Zabbix-Agenten.

$ sudo dnf install zabbix-agent

Schritt 11.3 - Zabbix-Agenten konfigurieren

Zabbix unterstützt die zertifikatsbasierte Verschlüsselung, aber um die Einfachheit dieses Tutorials zu wahren, verwenden wir jedoch vorab geteilte Schlüssel (PSK), um die Verbindung zwischen dem Server und dem Agenten zu sichern.

Generieren Sie eine PSK-Datei.

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

Zeigen Sie den Schlüssel zum Kopieren an.

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

Kopieren Sie diesen Schlüssel, da wir ihn später benötigen.

Der Zabbix-Agent speichert seine Konfiguration in der Datei /etc/zabbix/zabbix-agentd.conf. Öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/zabbix/zabbix_agentd.conf

Kommentieren Sie die folgenden Variablen aus und aktualisieren Sie deren Werte wie unten gezeigt.

Server=
ServerActive=
HostMetadata=ZabbixLinuxClient
Hostname=zabbixclient.example.com

Geben Sie die IP-Adresse Ihres Zabbix-Servers als Wert für die Variablen Server und ServerActive an. Die Variable HostMetadata kann alles sein, was Sie verwenden können, um das System zu identifizieren. Sie wird auch im Auto-Registrierungsprozess im Zabbix-Frontend verwendet, über den wir später sprechen werden. Der Hostname-Eintrag bezieht sich auf den System-Hostnamen des Zabbix-Agentenknotens.

Sie können den Hostnamen mit dem folgenden Befehl herausfinden.

$ cat /etc/hostname

Suchen Sie als Nächstes den Abschnitt, der eine sichere Verbindung zwischen dem Server und dem Agenten konfiguriert. Suchen Sie die Variable TLSConnect und ändern Sie ihren Wert von unencrypted in psk, wie unten gezeigt.

...
### Option: TLSConnect
#       Wie der Agent eine Verbindung zum Server oder Proxy herstellen soll. Wird für aktive Überprüfungen verwendet.
#       Es kann nur ein Wert angegeben werden:
#               unencrypted - Verbindung ohne Verschlüsselung herstellen
#               psk         - Verbindung mit TLS und einem vorab geteilten Schlüssel herstellen
#               cert        - Verbindung mit TLS und einem Zertifikat herstellen
#
# Pflicht: ja, wenn TLS-Zertifikat oder PSK-Parameter definiert sind (auch für 'unencrypted' Verbindung)
# Standard:
# TLSConnect=psk
...

Suchen Sie als Nächstes den Abschnitt TLSAccept und ändern Sie dessen Wert in psk, wie unten gezeigt.

...
### Option: TLSAccept
#       Welche eingehenden Verbindungen akzeptiert werden sollen.
#       Mehrere Werte können angegeben werden, durch Komma getrennt:
#               unencrypted - Verbindungen ohne Verschlüsselung akzeptieren
#               psk         - Verbindungen akzeptieren, die mit TLS und einem vorab geteilten Schlüssel gesichert sind
#               cert        - Verbindungen akzeptieren, die mit TLS und einem Zertifikat gesichert sind
#
# Pflicht: ja, wenn TLS-Zertifikat oder PSK-Parameter definiert sind (auch für 'unencrypted' Verbindung)
# Standard:
# TLSAccept=psk
...

Suchen Sie als Nächstes den Abschnitt TLSPSKIdentity und ändern Sie dessen Wert in PSK 001, wie gezeigt.

...
### Option: TLSPSKIdentity
#       Eindeutiger, großgeschriebener String, der verwendet wird, um den vorab geteilten Schlüssel zu identifizieren.
#
# Pflicht: nein
# Standard:
# TLSPSKIdentity=PSK 001
...

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

Schließlich suchen Sie den Abschnitt TLSPSKFile und ändern Sie dessen Wert in den Speicherort der PSK-Datei, wie gezeigt.

...
### Option: TLSPSKFile
#       Vollständiger Pfadname einer Datei, die den vorab geteilten Schlüssel enthält.
#
# Pflicht: nein
# Standard:
# TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...

Sobald Sie fertig sind, speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Schritt 11.4 - Zabbix-Agenten starten

Starten und aktivieren Sie den Zabbix-Agentendienst.

$ sudo systemctl enable zabbix-agent --now

Schritt 12 - Fügen Sie den Zabbix-Client zum Zabbix-Frontend zur Überwachung hinzu

Wir können einen neuen Host zu den bereits definierten Hostgruppen hinzufügen oder eine neue Hostgruppe erstellen. Hostgruppen ermöglichen es Ihnen, die Arten von Knoten, die Sie überwachen, zu kategorisieren. Um eine neue Hostgruppe zu erstellen, öffnen Sie die Option Hostgruppen im Menü Konfiguration.

Fügen Sie den Namen der Gruppe in das Feld ein und klicken Sie auf die Schaltfläche Übernehmen, um die Gruppe zu erstellen.

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

Zabbix Create Hosts

Fügen Sie den Hostnamen des Zabbix-Knotens hinzu.

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

Geben Sie ebenfalls Linux-Server im Abschnitt Gruppen ein und wählen Sie es aus.

Klicken Sie auf die Schaltfläche Hinzufügen im Abschnitt Schnittstellen und wählen Sie Agent aus.

Fügen Sie dann die IP-Adresse des Zabbix-Clientknotens hinzu. Sobald Sie fertig sind, sollte das vollständige Popup Neuer Host wie folgt aussehen.

Zabbix New Host Popup

Wechseln Sie als Nächstes zur Registerkarte Verschlüsselung. Wählen Sie PSK für die Optionen Verbindungen zum Host und Verbindungen vom Host aus. Setzen Sie die PSK-ID auf PSK 001, was der Wert ist, den wir in Schritt 11.3 für die Variable TLSPSKIdentity festgelegt haben. Setzen Sie dann den PSK-Wert auf den Schlüssel, den Sie zuvor auf der Agentenmaschine generiert haben.

Zabbix Agent Encryption

Sobald Sie fertig sind, klicken Sie auf die Schaltfläche Hinzufügen, um den Host hinzuzufügen.

Sie sollten den neuen Host in der Liste mit einem grünen Label sehen, das anzeigt, dass der Agent mit dem Server verbunden ist und wie erwartet funktioniert.

Zabbix Hosts List

Schritt 13 - E-Mail-Benachrichtigungen konfigurieren

Zabbix unterstützt viele Arten von Benachrichtigungen wie E-Mail, Slack, Telegram, SMS usw. Für die Zwecke unseres Tutorials werden wir E-Mail-Benachrichtigungen konfigurieren. Besuchen Sie das Zabbix-Frontend, klicken Sie auf Verwaltung und dann auf Medientypen im linken Menü. Sie sehen zwei E-Mail-Typen, einen für Text-E-Mails und den anderen für HTML-E-Mails.

Zabbix Media Types

Klicken Sie auf die Option E-Mail (HTML) und Sie erhalten die folgende Seite.

Zabbix Email Media type Configure

Geben Sie die Details Ihres SMTP-Servers ein. Für unser Tutorial verwenden wir den Amazon SES-Dienst. Klicken Sie auf die Schaltfläche Aktualisieren, wenn Sie fertig sind, um die Details zu speichern. Sie werden zurück zur Seite Medientypen geleitet. Klicken Sie auf die Schaltfläche Test, um die E-Mail-Einstellungen zu testen. Es wird ein Popup erstellt. Geben Sie Ihre E-Mail-Adresse ein und klicken Sie auf die Schaltfläche Test, um eine Test-E-Mail zu senden.

Zabbix Test Email Popup

Sie sollten eine erfolgreiche Nachricht im Popup sehen, die Ihnen mitteilt, dass es gut funktioniert hat, und Sie sollten die folgende E-Mail in Ihrem Posteingang erhalten. Schließen Sie das Popup, indem Sie auf die Schaltfläche Abbrechen klicken.

Zabbix Test Email

Schritt 14 - Erstellen Sie einen neuen Benutzer

Der Standardbenutzer von Zabbix ist nicht konfiguriert, um eine Art von Benachrichtigung zu erhalten. Während wir dies tun können, ist der Standardbenutzer auch unsicher zu verwenden. Die beste Option ist, einen neuen Benutzer zu erstellen und dann den Standardbenutzer zu deaktivieren.

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

Zabbix New User page

Füllen Sie die Benutzerdetails aus. Wählen Sie Zabbix-Administratoren als Benutzergruppe aus. Klicken Sie, wenn Sie fertig sind, auf die Registerkarte Medien. Klicken Sie auf die Schaltfläche Hinzufügen und wählen Sie E-Mail (HTML) als Typ aus.

Zabbix User Media Tab

Geben Sie Ihre E-Mail-Adresse im Feld Senden an ein und klicken Sie auf die Schaltfläche Hinzufügen, um die E-Mail-Option hinzuzufügen. Wechseln Sie als Nächstes zur Registerkarte Berechtigungen und klicken Sie auf die Schaltfläche Auswählen, um die Super-Admin-Rolle hinzuzufügen.

Zabbix User Permissions

Klicken Sie auf die Schaltfläche Hinzufügen, um den Benutzer hinzuzufügen. Als Nächstes müssen Sie sich vom Frontend abmelden, sich erneut als neuer Benutzer anmelden und zur Benutzerseite zurückkehren. Klicken Sie auf den Benutzer Admin, wählen Sie die Gruppe Deaktiviert aus und aktualisieren Sie den Benutzer. Dadurch wird der Standardbenutzer deaktiviert.

Schritt 15 - Senden Sie einen Testalarm

Standardmäßig verfolgt Zabbix die Menge an freiem Speicherplatz auf dem Server. Es erkennt alle Festplatteneinbindungen 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. Besuchen Sie Konfiguration >> Aktionen >> Triggeraktionen und klicken Sie auf den Status Deaktiviert, um ihn in Aktiviert zu ändern, wie gezeigt.

Zabbix Trigger Actions

Melden Sie sich als Nächstes am Zabbix-Knoten an und erstellen Sie eine temporäre Datei, die groß genug ist, um einen Alarm für die Festplattenspeicherung auszulösen.

Bestimmen Sie zuerst 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. Verwenden Sie als Nächstes den Befehl fallocate, um mehr als 80 % des Speicherplatzes vorab zuzuweisen. Es ist groß genug, um den Alarm auszulösen.

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

Überprüfen Sie die Festplattenspeicherung 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 wird einen Alarm über den Speicherplatz auslösen und eine E-Mail-Benachrichtigung darüber senden. Die E-Mail wird wie folgt aussehen.

Zabbix Test Alert Email

Sie können auch das Dashboard für den Alarm überprüfen, der innerhalb von Sekunden erscheinen sollte.

Zabbix Disk Check Alert Monitoring Dashboard

Löschen Sie die temporäre Datei, wenn Sie fertig sind.

$ rm -f /tmp/temp.img

Sie sollten eine weitere E-Mail erhalten, die Ihnen mitteilt, dass das Problem behoben wurde.

Zabbix Test Issue resolved email

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

Wenn Sie mehrere Knoten zum Zabbix-Server hinzufügen müssen, kann der Prozess etwas mühsam werden. Glücklicherweise ermöglicht das Zabbix-Frontend, den Prozess mithilfe der automatischen Registrierung zu automatisieren.

Besuchen Sie Aktionen >> Autoregistrierungsaktionen und klicken Sie auf die Schaltfläche Aktion erstellen oben rechts.

Zabbix Autoregistrations Page

Sobald Sie auf dem neuen Bildschirm sind, geben Sie der Aktion einen Namen (Automatische Registrierung von Linux-Servern).

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

Zabbix Auto registration Conditions

Klicken Sie auf Hinzufügen, um fortzufahren, und die Seite zur Erstellung der Aktion sollte wie folgt aussehen.

Zabbix Autoregistration New Action Page

Klicken Sie auf die Registerkarte Operationen, wählen Sie Zu Hostgruppe hinzufügen als Operation aus und wählen Sie Linux-Server als Hostgruppen aus. Klicken Sie auf die Schaltfläche Hinzufügen, um den Vorgang abzuschließen.

Zabbix Autoregistration Operation Details

Wenn Sie PSK-Verschlüsselung verwenden möchten, können Sie dies ebenfalls konfigurieren. Besuchen Sie das Menü Verwaltung >> Allgemein >> Autoregistrierung und aktivieren Sie beide Verschlüsselungsoptionen. Geben Sie eine PSK-ID und einen PSK-Schlüssel ein, die auf dem Zabbix-Server erstellt wurden. Sie können diese PSK-ID und den Schlüssel auf jedem Knoten verwenden, und sie werden mit diesen Werten verschlüsselt.

Zabbix Autoregistration Encryption

Von nun an wird jeder Zeitpunkt, zu dem Sie den Zabbix-Agenten auf einem Linux-Server installieren und konfigurieren, automatisch zum Zabbix-Frontend hinzugefügt.

Fazit

Damit endet unser Tutorial zur Installation und Konfiguration eines Zabbix-Servers auf einem Rocky Linux 9-System. Wir haben auch einen Zabbix-Agenten auf einem Remote-Server installiert, um eine Verbindung zum Server herzustellen. Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.