Installation Ubuntu Server 22.04.x LTS (Long Term Support)
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. Diese berücksichtigen auch die Mindestanforderungen von Ubuntu 22.04
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.
Die Festplatte kann bei einer VM nachträglich vergrößert werden - siehe dazu den Abschnitt in diesem Artikel weiter unten
Thick-Provision Lazy-Zeroed
Danach Einstellungen der VM bearbeiten:
Reiter Hardware:
Arbeitsspeicher:
Server 4GB oder mehr
Proxy 2GB oder mehr
CPUs:
Anzahl der virtuellen Sockets
Server: 4 oder mehr
Proxy: 2 oder mehr
Anzahl der Cores pro Socket: 1 (Immer Anzahl der Sockets erhöhen)
Reiter Optionen
...
Grundinstallation
Hinweis:Ich habe die offizielle ISO verwendet: https://ubuntu.com/download/server (Option 1: Manual server installation - ubuntu-22.04.1-live-server-amd64.iso). Es gibt zur Zeit keine Minimalversion mit LAMP Installer.
CD einlegen und los,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):
Try or Install Ubuntu Server
Deutsch
German / German
Ubuntu Server
Jetzt könnt Ihr schon die gewünschte feste IP-Adresse einstellen. Wählt dazu mit den Pfeiltasten den ens160 Eintrag aus und drückt Enter:
ens160 => Bearbeite IPv4
Manuell
Bei Subnetz kommt nicht die Subnetzmaske sondern das Netzwerk mit Suffix. Bei einer 24 Maske (= 255.255.255.0) ist das die IP 0 mit Suffix /24
Erledigt
Bei Bedarf, sonst leer lassen
Erledigt
Nutzt die ganze Festplatte ohne LVM (also Haken entfernen). Die Festplatte lässt sich später trotzdem leicht vergrößern
Erledigt
Fortfahren
Ich lege hier den Benutzer installadmin an. Wählt euren Benutzer und Passwort nach Wunsch (Aufschreiben!)
OpenSSH-Server auswählen => Erledigt (für Zugriff z.B. mit Putty)
Erledigt
Ab jetzt heißt es abwarten. Wenn er kann lädt er gleich ein paar Sicherheitsupdates nach:
Jetzt neustarten
ISO aus der VM entfernen und Enter drücken
Nach dem Reboot wartet ab bis diverse Meldungen abgelaufen sind
PuTTY
Ab dieser Stelle könnt Ihr PuTTY oder den SSH Client eurer Wahl nutzen - was ich dringend empfehle. Denn dann könnt Ihr hier vorgeschlagenen Befehle einfach per Copy&Paste übernehmen.
Die IP-Adresse habt Ihr zu diesem Zeitpunkt ja bereits festgelegt:
Nach der Anmeldung nutze ich immer gerne ein
sudo -i
Damit wechselt man dauerhaft zum root Benutzer und muss nicht vor jedem Befehl ein sudo stellen.
root wieder freischalten
Hinweis: Ob nun wie ich immer als root arbeiten wollt oder aber als einfacher Benutzer und dann immer sudo verwendet müsst Ihr selbst wissen
Mit Benutzer installadmin anmelden
sudo -i
Kennwort des Benutzer installadmin eintippen
passwd root
neues Kennwort für "root" 2x eintippen
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
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
Hinweis:
Ja, ich persönlich arbeite gerne als root und habe diesen für die Anmeldung freigeschaltet. Was ich nicht mache ist das Login per SSH mit Passwort zu erlauben. Ich hinterlege also immer einen SSH-Key für die Anmeldung und nutze diesen statt des Kennwortes. Die Lösung hier ist einfach gehalten, der Profi mögen anpassen wie er es braucht. Ein Anmeldung als eingeschränkter Benutzer geht natürlich auch, das erste was ich dann immer mache ist ein sudo -i um dauerhaft zum root zu wechseln
Anmelden als root
Startet PuTTY wieder und meldet euch diesmal gleich als Benutzer root an.
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.
Installadmin sudo ohne Passwort
Warnung: Da hier nur machen wenn Ihr NICHT als root arbeiten wollt sondern den Installadmin nutzen wollt, Ansonsten überspringen!
Wenn wir auf den root verzichten und uns immer mit einem Benutzer anmelden so möchte ich zumindest auf das ständige Passwort eingeben verzichten.
sudo visudo
und ganz am Ende folgendes anhängen:
installadmin ALL=(ALL) NOPASSWD: ALL
Nun reicht nach der Anmeldung als installadmin ein
sudo -i
um dauerhaft root zu sein.
Installadmin löschen
Warnung: Da hier nur machen wenn Ihr immer als root arbeiten wollt und auch gerade als root angemeldet seit
Alternativ arbeiten wir nur als root und den installadmin entfernen wir mit
deluser --remove-home installadmin
root farbiger Prompt
Als root anmelden:
nano ~/.bashrc
Zeile 39 (Alt + C aktiviert Zeilennummernanzeige):
#force_color_prompt=yes
ändern zu (# entfernen):
force_color_prompt=yes
nun wieder Abmelden - ab der nächsten Anmeldung ist der neue Prompt aktiv.
Wer den sofort haben will (ohne neu Anmelden):
source ~/.bashrc
Feste IP-Adresse vergeben
Der Server hat dank des neuen Setupdialoges nun bereits eine feste IP-Adresse.
Solltet Ihr an dieser etwas ändern müssen so bearbeitet die Datei
nano /etc/netplan/00-installer-config.yaml
Multipathing deinstallieren
Ab Werk wird nun das
/var/log/syslog
mit Multipath-Meldungen vollgemüllt:
May 21 14:28:19 zabbix multipathd[674]: sda: add missing path
May 21 14:28:19 zabbix multipathd[674]: sda: failed to get udev uid: Invalid argument
May 21 14:28:19 zabbix multipathd[674]: sda: failed to get sysfs uid: Invalid argument
May 21 14:28:19 zabbix multipathd[674]: sda: failed to get sgio uid: No such file or directory
Unter Ubuntu 22.04 scheint es nicht mehr ganz so schlimm wie unter 20.04 - aber in einer VM macht Multipath keinen Sinn, also deaktivieren und deinstallieren um das Syslog von den Meldungen befreien:
Wenn Ihr die VM reboootet und die Console betrachtet tauchen kurz nach dem Reboot (Fehler-)Meldungen zum Cloud-init auf:
Das Cloud-Init ist - wenn ich mich recht erinnere - dafür da falls eure VM z.B. bei Amazon AWS, Azure oder andere Anbieter läuft um z.B. die Netzwerkinformationen vom Hoster/Provider zu erhalten.
Brauchen wir nicht, also weg damit:
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.
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
Automatische Updates deaktivieren
Ich persönlich möchte nicht das der Zabbix-Server automatisch Updates einspielt.
Die automatischen Updates aktualisieren - soweit ich das beobachten konnte - nur den Kernel. Aber auch das möchte ich nicht. Ich möchte das geplant durchführen.
Die automatischen Updates verhindern wir mit
apt remove -y unattended-upgrades
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:
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.
Zabbix Server installieren
Zabbix Repository hinzufügen
Für die Version 6.0.x LTS (Support bis 28.02.2027)
Die wenigsten werden es nutzen - doch diese Anleitung ist so gemacht das sich danach alle Features von Zabbix nutzen lassen. Wann braucht Ihr es? Wenn Ihr Java-Applikationen habt die Ihr aus dieser Applikation selbst monitoren wollt. Dazu müssen beim Start der Applikation extra Parameter hierfür übergeben werden (nämlich unter anderen die Daten des Java-Gateways).
Wer es nicht braucht (und gerade nur Bahnhof verstanden hat) deaktiviert es mit
Bei der Installation gab es ggf. Fehlermeldungen das der Dienst nicht gestartet werden konnte - das würde jetzt aber funktionieren.
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 habt:
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 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 (und die Kommentare lesen / beachten!!!):
# 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
# Eigenes Fehlerprotokoll wieder aktivieren
log_error = /var/log/mysql/error.log
mit STRG + x den nano verlassen und speichern bestätigen j + Enter)
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
Damit nach einen Upgrade das Fehlerlogging weiter funktioniert entfernt das Kommentarzeichen auch in der folgenden Zeile:
log_error = /var/log/mysql/error.log
also das # am Anfang entfernen
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_logfile1 size to 536870912 bytes
2020-05-21 15:17:02 0 [Note] InnoDB: Renaming log file ./ib_logfile101 to ./ib_logfile0
2020-05-21 15:17:02 0 [Note] InnoDB: New log files created, LSN=1625466
2020-05-21 15:17:02 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2020-05-21 15:17:02 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2020-05-21 15:17:02 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2020-05-21 15:17:02 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
2020-05-21 15:17:02 0 [Note] InnoDB: 10.3.22 started; log sequence number 1625466; transaction id 21
2020-05-21 15:17:02 0 [Note] Plugin 'FEEDBACK' is disabled.
2020-05-21 15:17:02 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
2020-05-21 15:17:02 0 [Note] InnoDB: Buffer pool(s) load completed at 200521 15:17:02
2020-05-21 15:17:02 0 [Note] Server socket created on IP: '0.0.0.0'.
2020-05-21 15:17:02 0 [Note] Reading of all Master_info entries succeeded
2020-05-21 15:17:02 0 [Note] Added new Master_info to hash table
2020-05-21 15:17:02 0 [Note] /usr/sbin/mysqld: ready for connections.
Version: '10.3.22-MariaDB-1ubuntu1' socket: '/run/mysqld/mysqld.sock' port: 3306 Ubuntu 20.04
Wichtig ist immer die Zeile mit dem Socket und Port (hier die letzte) - da muss der Port auftauchen auf dem der Server lauscht, in der Regel 3306
MariaDB/MySQL Datenbank erstellen und einrichten
Zabbix Datenbank anlegen:
mysql -u root -e "create database zabbix character set utf8mb4 collate utf8mb4_bin"
mysql -u root -e "create user 'zabbix'@'localhost' identified by 'zabbix'"
mysql -u root -e "grant all privileges on zabbix.* to 'zabbix'@'localhost'"
mysql -u root -e "SET GLOBAL log_bin_trust_function_creators = 1"
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.
Hinweis: Hinschauen! Hier folgen 2 unterschiedliche Wege für Server oder Proxy!
Bei einem Server: Ab Version 6.0
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -pzabbix zabbix
Bei einem Proxy:
Auf einem Proxy darf nur die schema.sql importiert werden!!!!
Solltet Ihr aus versehen alle Schema importiert haben so löscht die Datenbank noch einmal und fangt von vorne an! Der Proxy funktioniert nicht wenn er alle Schemas hat!
Ab Version 6.0
cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql -uzabbix -pzabbix zabbix
Konfigurationsdateien anpassen
Nun die Konfigurationsdatei bearbeiten:
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
# This is a configuration file for Zabbix server daemon
Bei einem Proxy:
nano /etc/zabbix/zabbix_proxy.conf
folgende Zeilen finden und auf diese Werte ändern, ggf. den # davor entfernen, STRG + W ist suchen!
ProxyMode=0
#IP oder DNS Name des Zabbix-Servers an den gemeldet werden soll. Falls der Port nicht 10051 ist dann mit : dahinter setzen
Server=123.123.123.123
# Hostname -> unter diesem Namen müssen wir den Proxy auch auf dem Hauptserver anlegen!
Hostname=zabbixproxy
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
EnableRemoteCommands=1
Timeout=30
StartVMwareCollectors=5
# Nachfolgend: Richtig, nichts darf hinter dem = stehen!
Fping6Location=
Hinweis:Unter Ubuntu 22.04 istfping und fping6 das gleiche Programm. Die 6er Variante ist nur ein symbolischer Link auf die normale Version. Auf meinem Proxy zickte er deswegen rum (der hat eine IPv6 konfiguriert). Wenn den Eintrag wie zuvor beschrieben abändert geht es ohne Probleme.
Die Fehlermeldung die er bringt ist
Cannot detect the minimum interval of /usr/bin/fping6
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: Auf einem Server
systemctl enable zabbix-server.service
Auf einem Proxy
systemctl enable zabbix-proxy.service
und noch der Agent
systemctl enable zabbix-agent.service
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 [processed 0 values, 0 triggers in 0.000028 sec, idle 1 sec]
├─18840 /usr/sbin/zabbix_server: history syncer #3 [processed 0 values, 0 triggers in 0.000025 sec, idle 1 sec]
├─18841 /usr/sbin/zabbix_server: history syncer #4 [processed 0 values, 0 triggers in 0.000024 sec, idle 1 sec]
├─18842 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.001428 sec, idle 3 sec]
├─18843 /usr/sbin/zabbix_server: ipmi poller #1 started
├─18844 /usr/sbin/zabbix_server: ipmi poller #2 started
├─18846 /usr/sbin/zabbix_server: ipmi poller #3 started
├─18847 /usr/sbin/zabbix_server: ipmi poller #4 started
├─18848 /usr/sbin/zabbix_server: ipmi poller #5 started
├─18849 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000024 sec, idle 5 sec]
├─18850 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000024 sec, idle 1 sec]
├─18851 /usr/sbin/zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000019 sec, idle 5 sec]
├─18852 /usr/sbin/zabbix_server: vmware collector #2 [updated 0, removed 0 VMware services in 0.000020 sec, idle 5 sec]
├─18860 /usr/sbin/zabbix_server: vmware collector #3 [updated 0, removed 0 VMware services in 0.000020 sec, idle 5 sec]
├─18861 /usr/sbin/zabbix_server: vmware collector #4 [updated 0, removed 0 VMware services in 0.000019 sec, idle 5 sec]
├─18862 /usr/sbin/zabbix_server: vmware collector #5 [updated 0, removed 0 VMware services in 0.000017 sec, idle 5 sec]
├─18863 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.001796 sec, idle 5 sec]
├─18864 /usr/sbin/zabbix_server: poller #1 [got 1 values in 0.000133 sec, idle 3 sec]
├─18866 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000044 sec, idle 3 sec]
├─18867 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000047 sec, idle 3 sec]
├─18868 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000045 sec, idle 3 sec]
├─18869 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000065 sec, idle 3 sec]
├─18870 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000057 sec, idle 5 sec]
├─18872 /usr/sbin/zabbix_server: unreachable poller #2 [got 0 values in 0.000051 sec, idle 5 sec]
├─18876 /usr/sbin/zabbix_server: unreachable poller #3 [got 0 values in 0.000044 sec, idle 5 sec]
├─18877 /usr/sbin/zabbix_server: unreachable poller #4 [got 0 values in 0.000054 sec, idle 5 sec]
├─18878 /usr/sbin/zabbix_server: unreachable poller #5 [got 0 values in 0.000078 sec, idle 5 sec]
├─18879 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
├─18880 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
├─18881 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
├─18882 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
├─18883 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
├─18884 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000038 sec, idle 5 sec]
├─18885 /usr/sbin/zabbix_server: icmp pinger #2 [got 0 values in 0.000041 sec, idle 5 sec]
├─18886 /usr/sbin/zabbix_server: icmp pinger #3 [got 0 values in 0.000043 sec, idle 5 sec]
├─18887 /usr/sbin/zabbix_server: icmp pinger #4 [got 0 values in 0.000040 sec, idle 5 sec]
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:
17748:20220721:153654.849 Starting Zabbix Server. Zabbix 6.0.6 (revision 3f7597e3ea3).
17748:20220721:153654.849 ****** Enabled features ******
17748:20220721:153654.849 SNMP monitoring: YES
17748:20220721:153654.849 IPMI monitoring: YES
17748:20220721:153654.849 Web monitoring: YES
17748:20220721:153654.849 VMware monitoring: YES
17748:20220721:153654.849 SMTP authentication: YES
17748:20220721:153654.849 ODBC: YES
17748:20220721:153654.849 SSH support: YES
17748:20220721:153654.849 IPv6 support: YES
17748:20220721:153654.849 TLS support: YES
17748:20220721:153654.849 ******************************
17748:20220721:153654.849 using configuration file: /etc/zabbix/zabbix_server.conf
17748:20220721:153654.874 current database version (mandatory/optional): 06000000/06000004
17748:20220721:153654.874 required mandatory version: 06000000
17750:20220721:153654.880 starting HA manager
17750:20220721:153654.884 HA manager started in active mode
17748:20220721:153654.885 server #0 started [main process]
17751:20220721:153654.886 server #1 started [service manager #1]
17752:20220721:153654.886 server #2 started [configuration syncer #1]
17756:20220721:153655.131 server #3 started [alert manager #1]
17758:20220721:153655.132 server #5 started [alerter #2]
17759:20220721:153655.132 server #6 started [alerter #3]
17760:20220721:153655.133 server #7 started [preprocessing manager #1]
17761:20220721:153655.134 server #8 started [preprocessing worker #1]
17763:20220721:153655.135 server #10 started [preprocessing worker #3]
17766:20220721:153655.136 server #13 started [lld worker #2]
17767:20220721:153655.136 server #14 started [ipmi manager #1]
17768:20220721:153655.141 server #15 started [housekeeper #1]
17776:20220721:153655.141 server #23 started [escalator #1]
17762:20220721:153655.143 server #9 started [preprocessing worker #2]
17765:20220721:153655.143 server #12 started [lld worker #1]
17764:20220721:153655.145 server #11 started [lld manager #1]
17771:20220721:153655.146 server #18 started [discoverer #1]
17777:20220721:153655.147 server #24 started [ipmi poller #1]
17772:20220721:153655.149 server #19 started [history syncer #1]
17770:20220721:153655.150 server #17 started [http poller #1]
17769:20220721:153655.150 server #16 started [timer #1]
17773:20220721:153655.151 server #20 started [history syncer #2]
17774:20220721:153655.151 server #21 started [history syncer #3]
17775:20220721:153655.152 server #22 started [history syncer #4]
17757:20220721:153655.152 server #4 started [alerter #1]
17778:20220721:153655.153 server #25 started [proxy poller #1]
17784:20220721:153655.154 server #26 started [self-monitoring #1]
17790:20220721:153655.163 server #28 started [task manager #1]
17791:20220721:153655.164 server #29 started [poller #1]
17792:20220721:153655.167 server #30 started [poller #2]
17793:20220721:153655.172 server #31 started [poller #3]
17799:20220721:153655.174 server #37 started [unreachable poller #4]
17795:20220721:153655.175 server #33 started [poller #5]
17798:20220721:153655.178 server #36 started [unreachable poller #3]
17803:20220721:153655.178 server #41 started [trapper #3]
17800:20220721:153655.181 server #38 started [unreachable poller #5]
17794:20220721:153655.181 server #32 started [poller #4]
17801:20220721:153655.182 server #39 started [trapper #1]
17804:20220721:153655.185 server #42 started [trapper #4]
17802:20220721:153655.186 server #40 started [trapper #2]
17789:20220721:153655.186 server #27 started [vmware collector #1]
17797:20220721:153655.189 server #35 started [unreachable poller #2]
17796:20220721:153655.192 server #34 started [unreachable poller #1]
17808:20220721:153655.194 server #44 started [icmp pinger #1]
17809:20220721:153655.194 server #45 started [icmp pinger #2]
17807:20220721:153655.195 server #43 started [trapper #5]
17810:20220721:153655.196 server #46 started [icmp pinger #3]
17811:20220721:153655.200 server #47 started [icmp pinger #4]
17812:20220721:153655.201 server #48 started [icmp pinger #5]
17822:20220721:153655.203 server #54 started [alert syncer #1]
17818:20220721:153655.203 server #50 started [icmp pinger #7]
17823:20220721:153655.204 server #55 started [history poller #1]
17819:20220721:153655.204 server #51 started [icmp pinger #8]
17820:20220721:153655.204 server #52 started [icmp pinger #9]
17817:20220721:153655.205 server #49 started [icmp pinger #6]
17821:20220721:153655.205 server #53 started [icmp pinger #10]
17824:20220721:153655.206 server #56 started [history poller #2]
17825:20220721:153655.208 server #57 started [history poller #3]
17829:20220721:153655.209 server #59 started [history poller #5]
17826:20220721:153655.210 server #58 started [history poller #4]
17830:20220721:153655.216 server #60 started [availability manager #1]
17831:20220721:153655.218 server #61 started [trigger housekeeper #1]
17832:20220721:153655.219 server #62 started [odbc poller #1]
17792:20220721:153656.171 enabling Zabbix agent checks on host "Zabbix server": interface became available
Wie Ihr seht ist der erste Host schon im Monitoring - Der Server selbst (der Agent startet automatisch bei der Installation).
Bei einem Proxy kann es noch folgende Fehlermeldung geben:
failed to update local proxy configuration copy: Can't open JSON object or array ""failed"}"
Naja, wir müssen den Proxy auf unserem Zabbix-Server unter
Administration - Proxies
noch anlegen - und zwar bitte genau mit dem gleichen Namen wie in der zabbix_proxy.conf unter Hostname= angegeben - dann ist der Fehler weg.
Bei Erfolg sollte das dann so aussehen:
An den Sekunden unter 'Last seen (age)' sehen wir die letzte Kontaktaufnahme.
Wenn da überhaupt etwas steht hatten wir Erfolg!
Sprachdateien für Zabbix 6.0 installieren
Zabbix 6.0 braucht noch ein paar zusätzliche Sprachdateien, die installieren wir sonst ist das Webinterface voll mit Fehlermeldungen:
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.
Webinterface konfigurieren
Ihr ruft den Zabbix-Server im Browser auf:
:
Wenn Ihr den Inhalt der 000-default.conf wie zuvor beschrieben geändert habt sollte hier alles grün sein:
Die Datenbankkonfiguration, in die letzten 3 Felder muss überall "zabbix" stehen:
In dem leeren Feld könnt Ihr den Namen des Servers angeben. Dieser wird oben rechts und auf den Web-Tabs angezeigt:
Noch eben die Zusammenfassung bestätigen:
Geschafft!
Benutzername: Admin
Passwort: zabbix
Hinweis:Admin mit großem A!
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
Empfang von SNMP-Traps einrichten
Hinweis:Neue Methode! Statt snmptt wird ein Perl-Script von Zabbix.com verwendet. snmptt machte bei mir unter Ubuntu 22.04 jede menge Ärger Die Lösung stammt in Teilen von https://sbcode.net/zabbix/snmp-traps/
und
fehlende Pakete nachinstallieren
Wir Installieren ggf. die benötigten Pakete nach (sollten schon vorhanden sein):
Für den Fall das der Download nicht zur Verfügung steht hier der Inhalt der Datei:
#!/usr/bin/env perl## Zabbix# Copyright (C) 2001-2022 Zabbix SIA## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.############################################## ABOUT ZABBIX SNMP TRAP RECEIVER ############################################## This is an embedded perl SNMP trapper receiver designed for sending data to the server.# The receiver will pass the received SNMP traps to Zabbix server or proxy running on the# same machine. Please configure the server/proxy accordingly.## Read more about using embedded perl with Net-SNMP:# http://net-snmp.sourceforge.net/wiki/index.php/Tut:Extending_snmpd_using_perl##################################################### ZABBIX SNMP TRAP RECEIVER CONFIGURATION ######################################################## Option: SNMPTrapperFile# Temporary file used for passing data to the server (or proxy). Must be the same# as in the server (or proxy) configuration file.## Mandatory: yes# Default:$SNMPTrapperFile='/tmp/zabbix_traps.tmp';### Option: DateTimeFormat# The date time format in strftime() format. Please make sure to have a corresponding# log time format for the SNMP trap items.## Mandatory: yes# Default:$DateTimeFormat='%H:%M:%S %Y/%m/%d';####################################### ZABBIX SNMP TRAP RECEIVER #######################################useFcntlqw(O_WRONLY O_APPEND O_CREAT);usePOSIXqw(strftime);subzabbix_receiver{my(%pdu_info)=%{$_[0]};my(@varbinds)=@{$_[1]};# open the output fileunless(sysopen(OUTPUT_FILE,$SNMPTrapperFile,O_WRONLY|O_APPEND|O_CREAT,0666)){printSTDERR"Cannot open [$SNMPTrapperFile]: $!\n";returnNETSNMPTRAPD_HANDLER_FAIL;}# get the host namemy$hostname=$pdu_info{'receivedfrom'}||'unknown';if($hostnamene'unknown'){$hostname=~ /\[(.*?)\].*/;# format: "UDP: [127.0.0.1]:41070->[127.0.0.1]"$hostname=$1||'unknown';}# print trap header# timestamp must be placed at the beginning of the first line (can be omitted)# the first line must include the header "ZBXTRAP [IP/DNS address] "# * IP/DNS address is the used to find the corresponding SNMP trap items# * this header will be cut during processing (will not appear in the item value)printfOUTPUT_FILE"%s ZBXTRAP %s\n",strftime($DateTimeFormat,localtime),$hostname;# print the PDU infoprintOUTPUT_FILE"PDU INFO:\n";foreachmy$key(keys(%pdu_info)){if($pdu_info{$key}!~/^[[:print:]]*$/){my$OctetAsHex=unpack('H*',$pdu_info{$key});# convert octet string to hex$pdu_info{$key}="0x$OctetAsHex";# apply 0x prefix for consistency}printfOUTPUT_FILE" %-30s %s\n",$key,$pdu_info{$key};}# print the variable bindings:printOUTPUT_FILE"VARBINDS:\n";foreachmy$x(@varbinds){printfOUTPUT_FILE" %-30s type=%-2d value=%s\n",$x->[0],$x->[2],$x->[1];}close(OUTPUT_FILE);returnNETSNMPTRAPD_HANDLER_OK;}NetSNMP::TrapReceiver::register("all",\&zabbix_receiver)ordie"failed to register Zabbix SNMP trap receiver\n";printSTDOUT"Loaded Zabbix SNMP trap receiver\n";
MIBS nutzen
Die MIBS übersetzen die OID in lesbare Namen. Um diese zu nutzen:
nano /etc/snmp/snmp.conf
und dort aus
mibs :
ein
#mibs :
machen. Dann den dienst neu starten:
systemctl restart snmptrapd.service
logrotate für /tmp/zabbix_traps.tmp erstellen
Gerade wenn viele Einträge in der Datei
/tmp/zabbix_traps.tmp
landen kann das schon mal einigen Platz kosten.
Deshalb nutzen wir logrotate an um die Größe der Datei zu begrenzen.
Nach einem Reboot ist Datei weg bis der erste Trap eintrifft - was Zabbix aber nicht zu stören scheint.
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!
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.
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.
Der Dienst lauscht per Default auf Port 10053 was in der /etc/zabbix/zabbix_web_service.conf konfiguriert wird.
Anfragen nimmt er nur von lokal entgegen (127.0.0.1 / ::1)
Nun den Dienst auch noch im Zabbix-Server bekannt machen:
Im Webinterface müsst ihr nun einmal hinterlegen wir die Reporting-Services das Zabbix-Frontend erreichen können:
Unter Administration . General - Other bei Frontend URL folgendes setzen:
Jetzt muss noch Google-Chromium installiert werden, den braucht der Dienst zum erstellen. Da wir keine GUI auf dem Zabbix-Server haben laden wir den Browser einfach direkt als Paket herunter und installieren diesen:
Ja, das ist etwas umständlich, wir installieren Chrome, er meckert über fehlende Abhängigkeiten, die beheben wir dann und lassen das Konfigurieren noch mal laufen.
Dafür ist der dann installiert ohne das wir eine grafische Oberfläche auf dem Server installieren mussten.
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:
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:
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.
Hinweis: Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!
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:
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.logecho"$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 neededmysql_username="root"mysql_password=""timeout=300# ************************************************************************************************# No Changes behind this line!# ************************************************************************************************# Check if username + password is usedif[-n"$mysql_password"];thenuse_credentials="-u$mysql_username -p$mysql_password"elseuse_credentials=""fi# Name of the Lockfilelock_file=/tmp/mysql_tables_read_lock
sleep_time=$((timeout+10))
rm-f$lock_fileecho"$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 processmysql_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=0while[!-f$lock_file]do# check if mysql is runningif!ps-p$mysql_pid1>/dev/null;thenecho"$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
exit1fisleep1c=$((c+1))# check if the script run into timeoutif[$c-gt$timeout];thenecho"$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_filekill$mysql_pidfidone# write PID into the lockfileecho$mysql_pid>$lock_fileecho"$0 pre-freeze stop"|logger
echo"$0$(date'+%Y-%m-%d %H:%M:%S') pre-freeze stop">>/tmp/snapshot.log
exit0
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.logecho"$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 lockfilemysql_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_fileecho"$0 post-thaw stop"|logger
echo"$0$(date'+%Y-%m-%d %H:%M:%S') post-thaw stop">>/tmp/snapshot.log
exit0
Jetzt müssen wir die beiden Skripte noch ausführbar machen und dem root zuordnen:
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:
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).
Hinweis: Das ganze funktioniert sowohl mit den original VMware-Tools als auch den Open-VM-Tools!
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!
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.
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: