Zabbix Server

posted in: Allgemein | 0

Zabbix Server + Agent unter Ubuntu 20.04 LTS installieren

1.1 Einstellungen für die VM

Falls Ihr den Zabbix Server oder Proxy als virtuelle Maschine (VM) installiert so könnt Ihr Beispielsweise folgenden Einstellungen nehmen:


Konfiguration: Typisch
Name und Speicherort: Nach eigener Wahl
Speicher: Nach eigener Wahl
Gastbetriebssystem: (*) Linux –> Ubuntu (64-Bit)
Netzwerk:
Wie viele Netzwerkkarten möchten Sie anschließen: 1
Netzwerk: Nach Wahl (VM Network?)
Adapter: VMXNET 3
Größer der virtuellen Festplatte:
Hängt von der Anzahl der überwachten Geräte / Items ab.
Ich empfehle min 50GB für Server / 16GB für Proxy.
Kann nachträglich vergrößert werden: Ubuntu Linux – Festplatte mit LVM im laufenden Betrieb ohne Neustart vergrößern

Thick-Provision Lazy-Zeroed

Danach Einstellungen der VM bearbeiten: Reiter Hardware:

Arbeitsspeicher:
Server 2GB oder mehr
Proxy 1GB oder mehr
CPUs:
Anzahl der virtuellen Sockets
Server: 2 oder mehr
Proxy: 1
Anzahl der Cores pro Socket: 1 (Immer Anzahl der Sockets erhöhen)

 

1.2 root wieder freischalten

Mit Benutzer installadmin anmelden

sudo -i

Kennwort des Benutzer installadmin eintippen

passwd root

neues Kennwort für “root” 2x eintippen

ClipCapIt-200521-161108.PNG

Lokal Anmelden kann man sich nun mit root – aber eine Anmeldung über SSH funktioniert dann immer noch nicht.
Damit diese auch funktioniert müsst ihr die sshd_config bearbeiten:

nano /etc/ssh/sshd_config

sucht nach der Zeile (STRG + W ist Suchen) nach

#PermitRootLogin without-password

und stellt den Cursor in die Zeile.
Drückt nun einmal F9 und 2x F10 – damit erstellt Ihr eine Kopie der Zeile.
Ändert die Kopie wie folgt ab:

PermitRootLogin yes

ClipCapIt-200521-161435.PNG

Speichert die Datei (STRG + x, dann y und Enter) und startet den ssh Dienst neu:

systemctl restart sshd.service

Ab dann klappt es auch mit dem SSH-Login für den Benutzer root, z.B. über puTTY
Jetzt 2x

exit

eintippen wodurch sich das PuTTY Fenster schließt – der (eingeschränkte) Benutzer installadmin hat sich somit abgemeldet

1.6 nano & Co auf Deutsch

nano war eben z.B. noch auf Englisch, mit

apt install -y language-pack-de

ist es (und vieles andere auf deutsch).
1.7 Installadmin löschen

Den installadmin entfernen wir mit

deluser –remove-home installadmin

1.12 Zeitzone setzen

In meiner VM ist die Uhrzeit zu diesem Zeitpunkt falsch (gebt mal probeweise date ein) – weil der ESXi-Host auf UTC Zeit läuft und die Ubuntu in der VM die richtige Zeitzone nicht eingestellt hat.
Wir korrigieren das mit

timedatectl set-timezone Europe/Berlin

ein

date

sollte dann die richtige Uhrzeit ausspucken.

1.13 Updates einspielen

wieder anmelden als root
Updates suchen für Betriebssystem: (aktualisiert den Katalog aus den Update-Quellen)

apt update

Updates einspielen:

apt upgrade -y

Nach Update überflüssige Pakete entfernen:

apt autoremove -y


Ich mache das normalerweise immer als Einzeiler:

apt update && apt upgrade -y && apt autoremove -y


1.15 Benötigte Programme für Zabbix installieren

Die nachfolgende Zeile installiert alles notwendige um alle Features eines Zabbix-Server zu nutzen. Als Datenbank wird MariaDB verwendet.
Wer lieber MySQL verwenden will muss in der Zeile mariadb-server durch mysql-server ersetzen:

apt install dnsutils htop make gcc libc6-dev libmysqlclient-dev libcurl4-openssl-dev libssh2-1-dev libsnmp-dev libiksemel-dev mariadb-server libopenipmi-dev fping php7.4-gd snmp libsnmp-base openjdk-11-jdk unixodbc unixodbc-dev libxml2 libxml2-dev snmp-mibs-downloader snmpd snmptrapd snmptt sblim-wbemcli php7.4-ldap traceroute ipmitool libldap2-dev php7.4-bcmath php7.4-mbstring php7.4-xml ttf-dejavu-core -y

Face-wink.png
Tipp: Zum kopieren der oberen Zeile mit der Maus vor das apt gehen und 3x Klicken. Ggf. mehrmals versuchen – bis die ganze Zeile markiert ist. Diese kann dann so in z.B. PuTTY eingefügt werden


Mit der obigen Zeite werden gewiss einige Pakete zuviel installiert – unter anderem alles was nötig wäre um Zabbix auch direkt aus dem Quellcode zu kompilieren. Aber es sind dann auch definitiv alle notwendigen Voraussetzungen für jegliche Zabbix-Abfrage vorhanden, z.B. für den Empfang von SNMP-Traps – und anderem zum Beispiel die ganzen PHP-Pakete inklusive LDAP.


2 Zabbix Server installieren
2.1 Zabbix Repository hinzufügen
Für die Version 4.0.x LTS (Support bis 31.10.2023)

wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3+focal_all.deb
dpkg -i zabbix-release_4.0-3+focal_all.deb
apt update
rm zabbix-release_*

Für die Version 4.4.x LTS (Support abgelaufen am 31.03.2020)

wget https://repo.zabbix.com/zabbix/4.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.4-1+focal_all.deb
dpkg -i zabbix-release_4.4-1+focal_all.deb
apt update
rm zabbix-release_*

Für die Version 5.0.x LTS (Support bis 31.05.2025)

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
dpkg -i zabbix-release_5.0-1+focal_all.deb
apt update
rm zabbix-release_*

Für die Version 5.2.x (Support bis 30.04.2021)

wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb
dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
apt update
rm zabbix-release_*

2.2 Zabbix installieren

Die Installation der ausführbaren Dateien erfolgt bei allen Varianten nach /sbin !
Warning.png
Warnung: Achtet nachfolgend immer darauf ob Ihr den Zabbix Server oder den Zabbix Proxy installieren wollt!

Fehlermeldungen zum Zabbix Java Gateway ignorieren!

2.2.1 Button Zabbix SERVER.png Als Server

apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent zabbix-get zabbix-sender zabbix-java-gateway


2.2.3 Java Gateway deaktivieren

Die wenigsten werden es nutzen – doch diese Anleitung ist so gemacht das sich danach alle Features von Zabbix nutzen lassen.
Wer es nicht braucht deaktiviert es mit

systemctl stop zabbix-java-gateway.service
systemctl disable zabbix-java-gateway.service

Bei der Installation gab es ggf. Fehlermeldungen das der Dienst nicht gestartet werden konnte – das würde jetzt aber funktionieren.

2.2.4 Zusätzliche Pakete nachinstallieren

Zabbix denkt an fast alles (Die Abhängigkeiten wurden besser gepflegt), für den Empfang von SNMP-Traps (gemäß dieser Anleitung) und Tests (snmpwalk & Co) benötigen wird jedoch noch weitere Pakete – Falls Ihr nicht die Voraussetzungen installiert hab:

apt install -y dnsutils snmp snmptt traceroute ipmitool snmpd snmp-mibs-downloader snmptrapd


2.3 MariaDB (MySQL) Datenbank optimieren
Important.png
Hinweis:Es funktioniert auch alles ohne diese Optimierungen! Diese kann man machen wenn der Server etwas größer wird weil wir hunderte von Servern und Geräten überwachen! In diesem Fall sollte auch der Festplattenplatz entsprechend dimensoniert sein! Für einen einfachen Server könnt Ihr das hier auch überspringen!

Die Einrichtung wird auch hier beschrieben – allerdings etwas knapp: https://www.zabbix.com/documentation/current/manual/appendix/install/db_scripts

Die Zabbix-Datenbank kann recht groß werden und jeder Zugriff zählt. Ich habe mir deshalb mal aus diversen Quellen im Internet Tipps zusammengesucht um die Performance der Datenbank zu steigern.

MariaDB Einstellungen bearbeiten (wer MySQL einsetzt findet die passende Datei unter nano /etc/mysql/mysql.conf.d/mysqld.cnf):

nano /etc/mysql/mariadb.conf.d/50-server.cnf

und unterhalb von

[mysqld]

Diese Zeilen einfügen:

# Größe der Logdatei statt 10MB
innodb_log_file_size = 512M
# Transaktionswerte nach Möglichkeit nicht in den Doublewritebuffer schreiben
innodb_doublewrite = 0
# Transaktionen schon bestätigen sobald diese im Cache stehen:
innodb_flush_log_at_trx_commit = 2
# Wieviel Hauptspeicher soll zum Puffern verwendet werden? Nehmt die Hälfte des vorhandenen Speichers (bei 4GB RAM also 2G, bei 1G also 512M)
innodb_buffer_pool_size = 1G

mit STRG + x den nano verlassen und speichern bestätigen j + Enter)
Warning.png
Warnung: Prüft unbedingt den Wert von innodb_buffer_pool_size!!! Dieser Wert darf nicht größer sein als der tatsächlich vorhandene RAM, sonst startet MySQL nicht


Prüft ggf. ob diese Zeilen dann nicht doppelt vorkommen!

Wenn Ihr später immer mehr Poller, Pinger und andere Zabbix-Prozesse startet müsst Ihr auch die Anzahl der möglichen Verbindungen zu MySQL Datenbank erhöhen.
Auch jeder Nutzer der auf dem Webinterface arbeitet verbraucht Verbindungen. Im zabbix_server.log steht dann eine Meldung mit “too many connection”.

Sucht die Zeile

#max_connections = 100

und ändert diese auf

max_connections = 300

 

Nun müssen wir den mysql Server einmal neu starten:

systemctl restart mysql


Ob Ihr alles richtig gemacht habt könnt Ihr im Log kontrollieren:

cat /var/log/mysql/error.log

Die Ausgabe sollte dann etwa so aussehen:

2020-05-21 15:17:02 0 [Note] InnoDB: Using Linux native AIO
2020-05-21 15:17:02 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2020-05-21 15:17:02 0 [Note] InnoDB: Uses event mutexes
2020-05-21 15:17:02 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2020-05-21 15:17:02 0 [Note] InnoDB: Number of pools: 1
2020-05-21 15:17:02 0 [Note] InnoDB: Using SSE2 crc32 instructions
2020-05-21 15:17:02 0 [Note] InnoDB: Initializing buffer pool, total size = 2G, instances = 8, chunk size = 128M
2020-05-21 15:17:02 0 [Note] InnoDB: Completed initialization of buffer pool
2020-05-21 15:17:02 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
2020-05-21 15:17:02 0 [Note] InnoDB: Resizing redo log from 2*50331648 to 2*536870912 bytes; LSN=1625466
2020-05-21 15:17:02 0 [Note] InnoDB: Starting to delete and rewrite log files.
2020-05-21 15:17:02 0 [Note] InnoDB: Setting log file ./ib_logfile101 size to 536870912 bytes
2020-05-21 15:17:02 0 [Note] InnoDB: Setting log file ./ib_logfil

2.4 MariaDB/MySQL Datenbank erstellen und einrichten

Zabbix Datenbank anlegen:

mysql -u root -e “create database zabbix character set utf8 collate utf8_bin”
mysql -u root -e “create user ‘zabbix’@’localhost’ identified by ‘zabbix'”
mysql -u root -e “grant all privileges on zabbix.* to ‘zabbix’@’localhost'”

Die Datenbank heißt zabbix, der Datenbankbenutzer “zabbix” mit dem Passwort “zabbix” – wenn er also nach einem Passwort fragt nun dieses eingeben. Falls das jemand für unsicher hält – nun der MySQL Server sollte – wenn man es nicht ändert – eh nur lokale Anfragen erlauben, sprich von extern komme ich gar nicht ran.
Important.png
Hinweis: Hinschauen! Hier folgen 2 unterschiedliche Wege für Server oder Proxy!


Button Zabbix SERVER.png Bei einem Server:

zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pzabbix zabbix

2.5 Konfigurationsdateien anpassen

Nun die Konfigurationsdatei bearbeiten:

Button Zabbix SERVER.png für einen Server:

nano /etc/zabbix/zabbix_server.conf

folgende Zeilen finden und auf diese Werte ändern, ggf. den # davor entfernen, STRG + W ist suchen!

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix

StartIPMIPollers=1
StartPollersUnreachable=5
StartPingers=10
StartVMwareCollectors=5

#Die Cache Werte ggf. dem vorhandenen Arbeitsspeicher anpassen!
#Oder nicht ändern – Zabbix warnt euch wenn ein Wert ausgeschöpft ist und vergrößert werden muss – wenn das Template “Zabbix Server” zugeordnet wurde
VMwareCacheSize=64M
CacheSize=128M
HistoryCacheSize=64M
HistoryIndexCacheSize=16M
TrendCacheSize=64M
ValueCacheSize=64M

Timeout=30

# Problem mit fping6 beheben (ja, richtig, nichts hinter dem = Zeichen!)
Fping6Location=

Hier klicken (Toggle) für die ganze zabbix_server.conf

speichern und verlassen


2.6 Automatischen Start beim Booten einrichten

Die notwendigen Skripte werden bei der Installation aus den Repository direkt mit installiert, wir müssen diese nur noch aktivieren:
Button Zabbix SERVER.png Auf einem Server

systemctl enable zabbix-server.service


Button Zabbix AGENT.png und noch der Agent

systemctl enable zabbix-agent.service


2.7 Start von Zabbix testen

Nun müsste man den Zabbix Server wie andere Dienste auch über systemctl starten können

systemctl start zabbix-server

Wenn alles in Ordnung ist gibt es keine Rückmeldung durch systemctl, also fragen wir nach dem Status:

systemctl status zabbix-server

Ausgabe:

● zabbix-server.service – Zabbix Server
Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2020-05-21 17:47:54 CEST; 5s ago
Process: 18816 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 18830 (zabbix_server)
Tasks: 62 (limit: 4621)
Memory: 139.1M
CGroup: /system.slice/zabbix-server.service
├─18830 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
├─18831 /usr/sbin/zabbix_server: configuration syncer [synced configuration in 0.043149 sec, idle 60 sec]├─18833 /usr/sbin/zabbix_server: ipmi manager #1 [scheduled 0, polled 0 values, idle 5.016619 sec during 5.016881 sec]├─18834 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]├─18835 /usr/sbin/zabbix_server: timer #1 [updated 0 hosts, suppressed 0 events in 0.001532 sec, idle 5 sec]├─18836 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000710 sec, idle 5 sec]├─18837 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000605 sec, idle 60 sec]├─18838 /usr/sbin/zabbix_server: history syncer #1 [processed 0 values, 0 triggers in 0.000026 sec, idle 1 sec]├─18839 /usr/sbin/zabbix_server: history syncer #2

Zum Verlassen q drücken.
Genaueres können wir uns auch noch einmal im Log-File ansehen:

tail -fn 1000 /var/log/zabbix/zabbix_server.log

Ausgabe:

19060:20200521:175117.674 Starting Zabbix Server. Zabbix 5.0.0 (revision 9665d62db0).
19060:20200521:175117.674 ****** Enabled features ******
19060:20200521:175117.674 SNMP monitoring: YES
19060:20200521:175117.674 IPMI monitoring: YES
19060:20200521:175117.674 Web monitoring: YES
19060:20200521:175117.674 VMware monitoring: YES
19060:20200521:175117.674 SMTP authentication: YES
19060:20200521:175117.674 ODBC: YES
19060:20200521:175117.674 SSH support: YES
19060:20200521:175117.674 IPv6 support: YES
19060:20200521:175117.674 TLS support: YES
19060:20200521:175117.674 ******************************
19060:20200521:175117.674 using configuration file: /etc/zabbix/zabbix_server.conf
19060:20200521:175117.684 current database version (mandatory/optional): 05000000/05000000
19060:20200521:175117.684 required mandatory version: 05000000
19060:20200521:175117.700 server #0 started [main process]19068:20200521:175117.701 server #1 started [configuration syncer #1]19069:20200521:175117.802 server #2 started [ipmi manager #1]19070:20200521:175117.808 server #3 started [housekeeper #1]19072:20200521:175117.808 server #5 started [http poller #1]19071:20200521:175117.808 server #4 started [timer #1]19074:20200521:175117.809 server #7 started [history syncer #1]19076:20200521:175117.811 server #9 started [history syncer #3]

3 Webinterface installieren (nur Server)

Schon jetzt findet Ihr die Weboberfläche unter http://servername/zabbix (nach einem Neustart, aber mit falscher Zeitzone)
Wenn es aber ein exklusiver Server für Zabbix ist möchte ich auf die Eingabe von /zabbix verzichten – das wird nachfolgend beschrieben.
Ich installiere hier also so das man den Server später nur mit http://servername aufrufen kann

3.1 Konfigurationsdatei bearbeiten

Button Zabbix SERVER.png

nano /etc/apache2/sites-available/000-default.conf

und den gesamten Inhalt durch den folgenden ersetzen: (F9 löscht eine Zeile)

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /usr/share/zabbix
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

<Directory “/usr/share/zabbix”>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

<IfModule mod_php7.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value always_populate_raw_post_data -1
php_value date.timezone Europe/Berlin
</IfModule>
</Directory>

<Directory “/usr/share/zabbix/conf”>
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory>

<Directory “/usr/share/zabbix/app”>
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory>

<Directory “/usr/share/zabbix/include”>
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory>

<Directory “/usr/share/zabbix/local”>
Order deny,allow
Deny from all
<files *.php>
Order deny,allow
Deny from all
</files>
</Directory>
</VirtualHost>

Das stammt aus der Datei /etc/apache2/conf-enabled/zabbix.conf, ich habe unter anderem die Zeitzone angepasst.

Danach Webserver neu starten:

systemctl restart apache2.service


Nun auf die Weboberfläche gehen, die sollte unter http://IP-Adresse oder http://DNS-Name verfügbar sein.
Anmerkung: So ein Linux trägt sich nicht von allein in den DNS Server ein, ggf. müsst Ihr den da von Hand nachtragen.

3.2 Webinterface konfigurieren

Ihr ruft den Zabbix-Server im Browser auf:

Benutzername: Admin
Passwort: zabbix

4 Zeitserver setzen

Damit die Uhrzeit des Zabbix-Servers auch immer genau ist kann dieser die Uhrzeit mit dem Internet abgleichen.
Dazu benötigten wir das Paket ntp:

apt install ntp -y
systemctl enable ntp.service


Wer die voreingestellten Zeitserver nutzen will muss nichts mehr tun.
Wer eigene Zeitserver für die Abfrage nutzen will muss die Konfigurationsdatei bearbeiten:

nano /etc/ntp.conf
# Specify one or more NTP servers.
server IP-oder-DNS iburst

Für jeden Server eine Zeile, die Poolserver solltet Ihr dann auskommentieren und danach den Service neu starten:

systemctl restart ntp.service


Die Synchronisation lässt sich per Befehl kontrollieren:

ntpq -p

Ausgabe:

remote refid st t when poll reach delay offset jitter
==============================================================================
beastie.deuza.n 195.83.222.27 2 u 24 64 1 0.501 9.552 0.000
ns1.kashra.com .PPS. 1 u 23 64 1 29.484 9.128 0.000
fr1.tomhek.net 163.172.41.83 3 u 22 64 1 0.685 12.810 0.000
ip139.ip-5-196- 10.21.137.1 2 u 21 64 1 0.581 8.332 0.000
golem.canonical 193.79.237.14 2 u 20 64 1 8.674 13.075 0.000

 

5 Empfang von SNMP-Traps einrichten

Button Zabbix SERVER

5.1 fehlende Pakete nachinstallieren

Wir Installieren ggf. die benötigten Pakete nach (sollten schon vorhanden sein):

apt install -y snmp snmpd snmptt snmp-mibs-downloader snmptrapd

 

5.2 snmptrapd aktivieren und konfigurieren

snmpd deaktivieren:

systemctl stop snmpd.service && systemctl disable snmpd.service

snmptrapd aktivieren:

systemctl enable snmptrapd.service

snmptrapd konfigurieren:

nano /etc/snmp/snmptrapd.conf

und fügen die folgenden Zeilen ans Ende:

traphandle default /usr/sbin/snmptt
disableAuthorization yes

und starten den Dienst:

systemctl start snmptrapd.service

5.3 snmptt konfigurieren

Zunächst die .ini Datei zum bearbeiten öffnen:

nano /etc/snmp/snmptt.ini

und die folgende Zeilen ändern (Denkt dran: STRG + W ruft die Suche auf):

mode = standalone
translate_log_trap_oid = 2
net_snmp_perl_enable = 1
date_time_format = %H:%M:%S %Y/%m/%d
log_file = /var/log/snmptt/snmptt.log
log_system_enable = 1
mibs_environment = ALL

Dann die .conf Datei – wir sichern zunächst die Original-Datei (auch wenn wir die wahrscheinlich nie wieder brauchen) durch umbenennen:

mv /etc/snmp/snmptt.conf /etc/snmp/snmptt.conf.orig

und erstellen eine neue, leere Datei:

nano /etc/snmp/snmptt.conf

mit folgendem Inhalt:

EVENT general .* “General event” Normal
FORMAT ZBXTRAP $aA $ar severity:$s $Fn$+*


Das stammt ursprünglich alles nahezu 1:1 von https://lab4.org/wiki/Zabbix_Monitoring_SNMP_Traps_empfangen aus dem Jahr 2018
Ich habe es nur an Ubuntu 20.04. angepasst.

Jetzt sorgen wir dafür das der Dienst auch automatisch startet:

systemctl enable snmptt.service && systemctl restart snmptt.service

5.4 logrotate für /var/log/snmptt/snmptt.log anpassen

Gerade wenn viele Einträge in der Datei

/var/log/snmptt/snmptt.log

landen kann reicht das wöchentliche Bereinigen der Datei nicht aus.
Deshalb passen wir logrotate an um die Größe der Datei zu begrenzen.
Nun noch die bereits vorhanden Konfigurationsdatei bearbeiten:

nano /etc/logrotate.d/snmptt

und folgenden Inhalt einfügen / anpassen:

/var/log/snmptt/*.log /var/log/snmptt/*.debug {
missingok
notifempty
daily
rotate 4
size 1M
compress
sharedscripts
postrotate
/etc/init.d/snmptt reload > /dev/null
endscript
maxage 365
}

 

5.5 Zabbix Server oder Proxy konfigurieren

Die Konfigurationsdatei zum bearbeiten öffnen:

nano /etc/zabbix/zabbix_server.conf
oder
nano /etc/zabbix/zabbix_proxy.conf

und folgende Zeilen suchen und ändern bzw. Kommentarzeichen davor entfernen:

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1


Danach müssen wir den Zabbix Server oder Proxy Dienst neu starten:

systemctl restart zabbix-server.service
oder
systemctl restart zabbix-proxy.service

 

5.6 Trapper-Datei anlegen

Neuere Zabbix Versionen (ab 3.0) meckern wenn es die Traps-Datei nicht gibt.
Die wird aber ggf. erst beim ersten eintreffenden Trap erstellt. Deshalb:

snmptrap -v 1 -c public localhost 1.3.6.1.4.1.2.3 “” 6 3 0000 s s “Zabbix-SNMP-Traps”

Damit senden wir einen Test-Trap an uns selbst.
Nun sollte es die Datei geben:

ls -l /var/log/snmptt/snmptt.log

Ausgabe:

-rw-r–r– 1 root root 158 Sep 6 09:55 /var/log/snmptt/snmptt.log

Der Inhalt sollte wie folgt sein:

20:33:21 2020/05/21 IBM-6611-APPN-MIB::ibm.3.0.3 Normal “General event” 10.100.12.16 – ZBXTRAP 10.100.12.16 127.0.0.1 severity:Normal
.ccitt:Zabbix-SNMP-Traps

Das müssen wir nur einmal machen, nach einem Reboot ist die Datei noch vorhanden
6 Agent konfigurieren (nur Proxy)

Wir wollen natürlich unseren ‘Zabbix Proxy’ gleich mit überwachen!
Wenn es ein Server ist, ist dieser gleich automatisch mit drin (ist der erste Host der schon in der Liste steht, ist sogar schon aktiv!) Bearbeiten wir zunächst die Konfigurationsdatei:

nano /etc/zabbix/zabbix_agentd.conf

und ändert folgende Zeile:

Hostname=zabbixproxy.domain.local

Den Namen passt Ihr natürlich an eure Bedürfnisse an – wichtig ist nur das Ihr den Host auf dem Zabbix-Server unter exakt dem gleichen Namen anlegt!
Important.png
Hinweis: Ihr wollt die zabbix_agentd.conf ändern, NICHT die zabbix_agent.conf – man beachte den feinen Unterschied!

 

Das Start-Skript haben wir vorhin schon aktiviert.
Am besten bootet Ihr euren Zabbix Proxy nun einmal durch und prüft hinterher ob die Prozesse für den Agenten und den Server laufen.
7 Windows-Freigabe für Agenten-Dateien einrichten

In meinen früheren Anleitungen wurde in diesem Abschnitt beschrieben wie man eine Samba-Freigabe erstellt in welcher der Zabbix-Agent abgelegt wird.
Das mache ich in der Praxis nicht mehr – neuere Windows-Versionen finden es unvorstellbar das man auf eine Freigabe ohne Passwort zugreifen möchte.
Man könnte den Zabbix-Server zwar dazu zum Mitglied in der Domäne machen … aber inzwischen erstelle ich einfach eine passende Freigabe auf einen der Windows-Server, in der Regel einer der Domänencontroller.
Das Installationspaket hat nur ein paar MByte, da findet sich ein Plätzchen.
8 Datensicherung des Zabbix-Servers

Bevorzugt installiere ich Zabbix-Server als Virtuelle Maschinen / VM.
Die Backup-Software sichert am besten einfach die gesamte VM.
Eigentlich macht quasi jede Backup-Software hierzu während der Sicherung einen Snapshot, sichert die Festplattendaten und löst dann den Snapshot wieder auf.
Wer dabei sicher gehen will das die Datenbank in einem konsistenten Zustand gesichert wird kann folgendes tun:
8.1 Methode 1: Cold Backup – Zabbix und Datenbank anhalten

Bei dieser Methode passiert folgendes:

Die Zabbix-Server und die Datenbank werden vor einem Snapshot angehalten
Der Snapshot wird erstellt
Die Datenbank und der Zabbix-Server werden wieder gestartet


Unter VMware funktioniert das mit 2 Skripten die wir wie folgt anlegen:

nano /usr/sbin/pre-freeze-script

mit folgendem Inhalt:

#!/bin/sh
echo “$(date) pre-freeze start” >> /tmp/snapshot.log
systemctl stop zabbix-server.service
systemctl stop mysql.service
echo “$(date) pre-freeze stop” >> /tmp/snapshot.log


und

nano /usr/sbin/post-thaw-script

#!/bin/sh
echo “$(date) post-thaw start” >> /tmp/snapshot.log
systemctl start mysql.service
systemctl start zabbix-server.service
echo “$(date) post-thaw stop” >> /tmp/snapshot.log


Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:

chmod 0700 /usr/sbin/pre-freeze-script
chmod 0700 /usr/sbin/post-thaw-script
chown root:root /usr/sbin/pre-freeze-script
chown root:root /usr/sbin/post-thaw-script


Voraussetzung ist das die VMware-Tools installiert sind!
Dabei ist es egal ob es sich um die Original VMware-Tools oder um die Open-VM-Tools aus den Repositories handelt.
Nun können wir die Skripts testen indem wir einen Snapshot mit den folgenden Einstellungen erstellen:

Wenn wir uns die Logs ansehen sollte

Ein Eintrag in die Datei /tmp/snapshot.log vorgenommen
Der Zabbix-Server gestoppt
Der MySQL-Server gestoppt
Wieder ein Eintrag in die Datei /tmp/snapshot.log geschrieben
Der MySQL-Server wieder gestartet
Der Zabbix-Server wieder gestartet

werden.

Important.png
Hinweis: Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!

 


8.2 Methode 2: Hot Backup – Datenbank einfrieren

Bei dieser Methode passiert folgendes:

Die Datenbank wird vor einem Snapshot auf “READ ONLY” gesetzt – zuvor werden noch alle Daten geschrieben (“FLUSH TABLES”)
Der Snapshot wird erstellt
Die Datenbank wird wieder für Schreibzugriffe freigegeben


Unter VMware funktioniert das mit 2 Skripten die wir wie folgt anlegen:

nano /usr/sbin/pre-freeze-script

mit folgendem Inhalt:
Warning.png
Warnung: Vergesst nicht das Passwort in Zeile 9 zu setzen (steht auf Leer was per Default passen sollte)

#!/bin/sh
# 2018-04-20 Bernhard Linz
# Original script by Pascal Di Marco, check https://www.veeam.com/wp-consistent-protection-mysql-mariadb.html for more information
# Log will be write to syslog and(!) to /tmp/snapshot.log
echo “$0 pre-freeze start” | logger
echo “————————————————————————————-” >> /tmp/snapshot.log
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) pre-freeze start” >> /tmp/snapshot.log
# Set Username and Passwort for MySQL Access. Set mysql_password=”” if no password needed
mysql_username=”root”
mysql_password=””
timeout=300

# ************************************************************************************************
# No Changes behind this line!
# ************************************************************************************************
# Check if username + password is used
if [ -n “$mysql_password” ]; then
use_credentials=”-u$mysql_username -p$mysql_password”
else
use_credentials=””
fi

# Name of the Lockfile
lock_file=/tmp/mysql_tables_read_lock

sleep_time=$((timeout+10))
rm -f $lock_file
echo “$0 executing FLUSH TABLES WITH READ LOCK” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) executing FLUSH TABLES WITH READ LOCK” >> /tmp/snapshot.log

# Start READ LOCK – Process will send to background (and will still run after script is completed. Lock will stop if process is stopped
# After READ ONLY mode is entered the lockfile will be created. Process will stop when getting stop signal from post-thaw-script or timeout reached
mysql $use_credentials -e “FLUSH TABLES WITH READ LOCK; system touch $lock_file; system nohup sleep $sleep_time; system echo lock released|logger; ” > /dev/null &
# get the PID of the mysql process
mysql_pid=$!

echo “$0 child pid $mysql_pid” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) child pid $mysql_pid” >> /tmp/snapshot.log

# Waiting for the lockfile …
c=0
while [ ! -f $lock_file ]do
# check if mysql is running
if ! ps -p $mysql_pid 1>/dev/null ; then
echo “$0 mysql command has failed (bad credentials?)” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) mysql command has failed (bad credentials?)” >> /tmp/snapshot.log
exit 1
fi
sleep 1
c=$((c+1))
# check if the script run into timeout
if [ $c -gt $timeout ]; then
echo “$0 timed out waiting for lock” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) timed out waiting for lock” >> /tmp/snapshot.log
touch $lock_file
kill $mysql_pid
fi
done
# write PID into the lockfile
echo $mysql_pid > $lock_file

echo “$0 pre-freeze stop” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) pre-freeze stop” >> /tmp/snapshot.log

exit 0


und

nano /usr/sbin/post-thaw-script

#!/bin/sh
# 2018-04-20 Bernhard Linz
# Original script by Pascal Di Marco, check https://www.veeam.com/wp-consistent-protection-mysql-mariadb.html for more information
# Log will be write to syslog and(!) to /tmp/snapshot.log
echo “$0 post-thaw start” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) post-thaw start” >> /tmp/snapshot.log

lock_file=/tmp/mysql_tables_read_lock

# get PID from lockfile
mysql_pid=$(cat $lock_file)
echo “$0 sending sigterm to $mysql_pid” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) sending sigterm to $mysql_pid” >> /tmp/snapshot.log
# and send stop to process
pkill -9 -P $mysql_pid
rm -f $lock_file

echo “$0 post-thaw stop” | logger
echo “$0 $(date ‘+%Y-%m-%d %H:%M:%S’) post-thaw stop” >> /tmp/snapshot.log

exit 0


Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:

chmod 0700 /usr/sbin/pre-freeze-script
chmod 0700 /usr/sbin/post-thaw-script
chown root:root /usr/sbin/pre-freeze-script
chown root:root /usr/sbin/post-thaw-script


Voraussetzung ist das die VMware-Tools installiert sind!
Dabei ist es egal ob es sich um die Original VMware-Tools oder um die Open-VM-Tools aus den Repositories handelt.
Nun können wir die Skripts testen indem wir einen Snapshot mit den folgenden Einstellungen erstellen:

Beispielausgabe aus der

cat /tmp/snapshot.log

————————————————————————————-
/usr/sbin/pre-freeze-script 2018-04-20 11:37:12 pre-freeze start
/usr/sbin/pre-freeze-script 2018-04-20 11:37:12 executing FLUSH TABLES WITH READ LOCK
/usr/sbin/pre-freeze-script 2018-04-20 11:37:12 child pid 10992
/usr/sbin/pre-freeze-script 2018-04-20 11:37:13 pre-freeze stop
/usr/sbin/post-thaw-script 2018-04-20 11:37:16 post-thaw start
/usr/sbin/post-thaw-script 2018-04-20 11:37:16 sending sigterm to 10992
/usr/sbin/post-thaw-script 2018-04-20 11:37:16 post-thaw stop


Falls es mit dem Passwort mal hakt so müsste das auch dort stehen:

/usr/sbin/pre-freeze-script 2018-06-13 12:01:04 mysql command has failed (bad credentials?)

Mehr Details stehen ggf. im syslog’

tail -f -n 500 /var/log/syslog

Zabbix selbst nimmt den Vorgang relativ locker und meldet maximal einige slow query bei inserts.
In den meisten Umgebungen geht das so schnell das nicht einmal diese kommen (4 bis 5 Sekunden).
Important.png
Hinweis: Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!

 


9 Festplatte im laufenden Betrieb vergrößern

Ihr habt den Zabbix-Server nach dieser Anleitung hier als VM installiert (und ohne LVM) und nun geht euch der Platz aus?
Kein Problem, Ihr könnt die Festplatte im laufenden Betrieb vergößern!
9.1 Schritt 1: Platz an die Festplatte anhängen

Stellt sicher das auf der VM zur zeit kein Snapshot aktiv ist!
Vergrößert die Festplatten um den benötigten Speicherplatz

in dem Beispiel hier wird der Platz von 50 auf 80GB vergrößert.
9.2 Schritt 2: Betriebssystem die neue Größe erkennen lassen

Die einfachste Methode ist den Server neu zu starten.
Wer will kann es aber auch im laufenden Betrieb durchführen, und das geht so:

apt install scsitools
rescan-scsi-bus –forcerescan

Da kommen dann reichlich Meldungen.
Im Anschluß zur Kontrolle ein

fdisk -l

Die Ausgabe sollte ähnlich wie diese sein:

Festplatte /dev/loop0: 54,98 MiB, 57626624 Bytes, 112552 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes

Festplatte /dev/loop1: 71,28 MiB, 74735616 Bytes, 145968 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes

Festplatte /dev/loop2: 29,9 MiB, 31334400 Bytes, 61200 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes

GPT-PMBR-Größenunterschied (104857599 != 167772159) wird durch »write« korrigiert.
Die Sicherungs-GPT-Tabelle befindet sich nicht am Ende des Gerätes. Das Problem wird durch »write« korrigiert.
Festplatte /dev/sda: 80 GiB, 85899345920 Bytes, 167772160 Sektoren
Festplattenmodell: Virtual disk
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: D205F6E7-853F-4CCC-83BE-67262A1827C8

Er meckert also schon das die Platte ungenutzten Platz hat (weshalb die GPT nicht mehr am Ende steht), zudem können wir in der Zeile

Festplatte /dev/sda: 80 GiB, 85899345920 Bytes, 167772160 Sektoren

sehen das es nun 80GB sind und nicht mehr 50GB
9.3 Schritt 3: Partition vergrößern

Das / Verzeichnis, auch root-Verzeichnis genannt befindet sich auf dem Gerät

/dev/sda2

wenn Ihr nach dieser Anleitung installiert hattet. Kontrollieren könnte Ihr das z.B. mit

df -h

und dann schauen was links vom Verzeichnis / steht:

Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 448M 0 448M 0% /dev
tmpfs 99M 1,1M 98M 2% /run
/dev/sda2 49G 5,5G 40G 8% /

Die nächsten Befehle gehen von /dev/sda2, wenn der Pfad anderes ist müsst Ihr diesen anpassen!

growpart /dev/sda 2
resize2fs /dev/sda2

Ja, beim ersten Befehl ist da ein Leerzeichen zwischen dem sda und der 2, beim zweiten Befehl nicht.
9.4 Schritt 4: Das war schon alles!

Ihr könnt mit

df -h

es einmal kontrollieren – aber das war schon alles:

Dateisystem Größe Benutzt Verf. Verw% Eingehängt auf
udev 448M 0 448M 0% /dev
tmpfs 99M 1,1M 98M 2% /run
/dev/sda2 79G 5,5G 70G 8% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5,0M 0 5,0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/loop0 55M 55M 0 100% /snap/core18/1880
/dev/loop1 72M 72M 0 100% /snap/lxd/16099
/dev/loop2 30M 30M 0 100% /snap/snapd/8542
tmpfs 99M 0 99M 0% /run/user/0
/dev/loop3 32M 32M 0 100% /snap/snapd/10707
/dev/loop4 56M 56M 0 100% /snap/core18/1944
/dev/loop5 70M 70M 0 100% /snap/lxd/19032

10 Upgrade auf 5.0.0

Wenn Ihr von einer Vor-Version auf die aktuelle Version wechseln wollt so ist das recht einfach,
Lest hierzu auch die offizielle Dokumentation / Anleitung von Zabbix:

https://www.zabbix.com/documentation/current/manual/installation/upgrade

10.1 Backup

Macht ein Backup eures Zabbix-Servers oder wie ich es bevorzuge: einen Snapshot.
Falls euer Zabbix-Server eine VM ist so fahrt diesen runter, macht einen Snapshot und fahrt ihn wieder hoch.

10.2 Benachrichtigungen deaktivieren

Falls ihr euch Emails bei Problemen senden lasst – deaktiviert das jetzt besser.
Die Probleme werden weiter auf dem Webinterface angezeigt.

10.3 Vorher alles andere Updaten

apt update && apt upgrade -y && apt autoremove -y

und danach am besten einen Reboot durchführen

10.4 Konfigurationsdateien sichern

Wir machen eine Kopie in das Home-Verzeichnis des root:

cp /etc/zabbix/zabbix_server.conf /root/
cp /etc/zabbix/zabbix_agentd.conf /root/


10.5 Zabbix stoppen

systemctl stop zabbix-server.service
systemctl stop zabbix-agent.service


10.6 Repository ändern

Wir entfernen das alte Repository:

rm -Rf /etc/apt/sources.list.d/zabbix.list

und fügen das Repository für die 5.0er Version hinzu:
Für die Version 5.0.x LTS (Support bis 31.05.2025)

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
dpkg -i zabbix-release_5.0-1+focal_all.deb
apt update
rm zabbix-release_*

10.7 Zabbix-Server anhalten

systemctl stop zabbix-server.service zabbix-agent.service

10.8 Upgrade einspielen
Important.png
Hinweis:Normalerweise würden wir das Update per apt upgrade -y einspielen. Aber in Zabbix 5.0 hat sich was an den Paketen geändert, genauer gesagt ist es ein Paket mehr. Ohne das Paket funktioniert Zabbix zwar, aber das Webinterface nicht. Deshlab über den apt install Weg, der kann nämlich auch Updates einspielen, dann aber halt nur für die angegebenen Pakete


Nun führt Ihr folgendes aus:

apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent zabbix-get zabbix-sender zabbix-java-gateway

und schon installiert er die neue Version über die alte.
Es wird eine Abfrage zu den beiden Konfigurationsdateien kommen – nämlich ob Ihr diese Überschreiben wollt (J oder Y) oder die vorhandene beibehalten (N).
Es wird auch funktionieren wenn Ihr die vorhandene beibehaltet. Es fehlen dann halt die Einträge für neuere Funktionen – diesen werden dann mit einem Default-Wert gesetzt was aber auch völlig ok ist.
Falls Ihr die Dateien überschreibt müsst ihr diese dann mit den beiden zuvor gesicherten vergleichen und die neuen anpassen.
Ich empfehle eine 2. PuTTY Sitzung zu öffnen, dann könnt Ihr beide Dateien nebeneinander betrachten.
Vergleicht jeden Eintrag – hat sich zum Beispiel der Pfad zu den Alertscripts und Externalscripts geändert (den Ihr einfach wieder auf den alten Wert anpassen könnt).

Falls Ihr die Dateien nicht überschrieben habt müsst ihr nichts weiter machen.
10.9 Database history tables upgraded: No

Wenn eure Zabbix-Installation schon älter ist – im Sinne von das Ihr schon viele Upgrades von vorherigen Versionen mitgemacht habt – dann wird es nach dem Start im Dashboard von Zabbix im Bereich System information sehr wahrscheinlich einen Hinweis geben:

Database history tables upgraded: No

Der Grund ist das die History-Daten nun ein anderes Zahlenformat mit höherer Genauigkeit haben – das müssen wir in der Datenbank umstellen:

mysql -uzabbix -pzabbix -e “use zabbix; ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT ‘0.0000’ NOT NULL,MODIFY value_avg DOUBLE PRECISION DEFAULT ‘0.0000’ NOT NULL,MODIFY value_max DOUBLE PRECISION DEFAULT ‘0.0000’ NOT NULL;ALTER TABLE history MODIFY value DOUBLE PRECISION DEFAULT ‘0.0000’ NOT NULL”

Dieser Einzeiler erwartet das der Benutzer zabbix (-uzabbix) mit dem Passwort zabbix (-pzabbix) die Datenbank zabbix (use zabbix;) nutzt.

Der Zabbix-Server sollte dazu unbedingt noch angehalten sein!
Das kann je nach Datenbankgröße sehr lange dauern!!!

10.10 Der erste Start

Öffnet eine 2. puTTY-Sitzung in welcher Ihr folgenden Befehl ausführt:

tail -n 100 -f /var/log/zabbix/zabbix_server.log

Ihr seht dann in Echtzeit das Log des Zabbix-Servers – da sollte was vom Stop des Servers stehen und nichts weiter passieren – der Dienst ist ja angehalten.
In eurer 1. puTTY Sitzung startet Ihr nun wieder den Zabbix-Agenten und -Server:

systemctl start zabbix-agent.service
systemctl start zabbix-server.service

Im Log könnt Ihr sehen wie er startet und ein Datenbankupgrade durchführt. Geduld. Es dauert eben so lange wie es dauern muss.
Achtet auf Warnmeldungen – manchmal deaktiviert er Actions zu Triggern mit dem Hinweis das Ihr diese einmal manuell überprüfen sollt.
Nach einer Weile (30 Sekunden bis 30 Stunden) sollte das Upgrade abgeschlossen sein und er seine normalen Worker starten.

Sollte es keinerlei Log-Meldungen geben und der Dienst beendet sich einfach wieder so gibt es in der Regel einen Fehler in der Konfigurationsdatei.
Den genauen Fehler findet Ihr mit

journalctl -xe

Da steht dann über welchen Parameter er gestolpert ist.

10.11 Geduld

Der Server war eine Weile aus – lasst Ihn sich erst einmal beruhigen. gerade wenn Ihr Zabbix-Proxys haben prasseln nun jede menge Daten auf ihn ein.
Ihr könnt natürlich alles ansehen, mit dem Aktivieren der Benachrichtigungen solltet Ihr aber etwa 30 Minuten bis 1 Stunde warten – bis die Probleme durch das Upgrade wieder verschwunden sind und der Server wieder auf normaler last arbeitet.

10.12 Snapshot wieder löschen

Läuft alles wie gewünscht (was es tut wenn das Datenbankupgrade fehlerfrei durchgelaufenen ist) löscht den Snapshot wieder.

11 =Benachrichtigungen wieder aktivieren

Hat sich alles wieder beruhigt, der Server lief eine Weile und die Problems List hat sich wieder normalisiert?
Dann könnt Ihr die Benachrichtigungen wieder scharf schalten.
11.1 Templates

Jetzt seit Ihr zwar auf der 5.0.0 Version, habt aber noch eure alten Templates.
Um die neuen Templates zu bekommen würde ich folgendes tun:

Alle eigenen Templates haben bei mir sowieso immer ein eigenes kürzel im Namen vorweg, z.B. znil Template …
Alle Templates ohne so ein Präfix benenne ich um indem ich ein Präfix davor setze, z.B. old_ oder 4.0_
Wenn wir die neuen importieren werden nämlich die alten Überschrieben / ergänzt falls es schon ein Template mit gleichem Namen gibt. Dadurch das wir alle umbenennen sollte das nicht vorkommen. Alternativ könnt Ihr auch nicht genutzte einfach löschen.
Unter https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates könnt Ihr nun die neuen Templates herunterladen und dann importieren.

Ich habe die neuen Templates mal aus einer nackten 5.0.0 Installation in 2 Teilen exportiert (wegen der Abhängigkeiten):
Important.png
Hinweis:Rechte Maustaste und Link speichern unter … nutzen!

Zabbix_5.0.0_Templates_Part_1.xml
Zabbix_5.0.0_Templates_Part_2.xml