Server Monitoring mit Zabbix – Installation und Konfiguration unter Ubuntu 18.04 LTS

  • Home
  • Unkategorisiert
  • Server Monitoring mit Zabbix – Installation und Konfiguration unter Ubuntu 18.04 LTS

Zabbix Installation auf Ubuntu

Open-Source Monitoring für deine Server

Wer Cloud Server mit Live-Systemen betreibt, muss sich natürlich auch um die Überwachung seiner Systeme Gedanken machen. Für die Überwachung der Cloud ist es daher unbedingt notwendig, ein gutes Server-Monitoring einzurichten. Admins haben dabei die Wahl aus einer Vielzahl von Tools mit verschiedenen Stärken und Schwächen. Die Open-Source-Software Zabbix bietet in Sachen Server-Monitoring eine flexibel anpassbare Lösung, die bereits seit 2001 kontinuierlich weiterentwickelt wird.

In Zabbix können eigene Templates aus einer riesigen Auswahl an bereitgestellten Server-Metriken erstellt werden. Darüber hinaus kann die Auswahl der für das eigene Monitoring relevanten Objekten durch eigene Skripte erweitert werden. Mit der neuen Version 3.4 sind wieder einmal viele interessante Neuerungen dazu gekommen. Hierzu gehört unter anderem, dass von nun an die Einrichtung mehrerer individueller Dashboards möglich ist. Einen Überblick über alle Neuerungen bekommst du hier:  What’s new in Zabbix 3.4.0.

Weitere interessante Tutorials wie zum Beispiel GoAccess – Echtzeit Webserver Log Analyse findest du wie immer in unserer Developer Community.

Vorbereitungen

Um die Schritte im Tutorial mitmachen zu können, benötigst du:

Auf Host1 wird der Zabbix Monitoring-Server eingerichtet, von dem aus alle anderen Hosts überwacht werden. Der Zabbix-Server überwacht den zweiten Server Host2, auf dem du, damit das Monitoring funktioniert, lediglich den Zabbix Agent einrichten musst.

PHP Module und Zabbix installieren

Nachdem du die zwei Server bereitgestellt hast und auf Host1 Apache, MySQL und PHP installiert ist, kann es mit der Einrichtung losgehen.

Verbinde dich dazu per SSH mit Host1 und bringe den Server auf den aktuellen Stand.

sudo apt update -y && apt upgrade -y

Anschließend können die benötigten PHP Module installiert werden.

apt-get -y install php7.2-xml php7.2-bcmath php7.2-mbstring

Mit diesen Vorbereitungen kann Zabbix bereits installiert werden. Damit du die aktuellste Version herunterladen kannst, muss vorher noch das Repository für Zabbix hinzugefügt werden.

wget https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb
sudo dpkg -i zabbix-release_3.4-1+bionic_all.deb
sudo apt-get update

Mit dem folgenden Befehl wird dann der Zabbix Server mit MySQL Support und das Web Frontend installiert.

sudo apt-get install zabbix-server-mysql zabbix-frontend-php

Außerdem installierst du noch den Zabbix Agent, durch den du bei Bedarf auch Daten über den Zabbix Server selbst sammeln kannst.

sudo apt-get install zabbix-agent

MySQL Datenbank für Zabbix konfigurieren

In diesem Schritt wird MySQL für die Anbindung an Zabbix konfiguriert. Dazu muss eine neue Datenbank erstellt, ein spezielles Schema importiert und ein neuer User erstellt werden.
Logge dich hierzu mit deinem Root-User bei MySQL bzw. MariaDB ein:

mysql -u root -p

Und erstelle dann die Zabbix Datenbank mit UTF-8 Support:

create database zabbix character set utf8 collate utf8_bin;

Im nächsten Schritt muss der User für den Zabbix-Server zusammen mit einem Passwort erstellt werden. Ersetze die Stelle wo “dein-passwort” steht mit einem sicheren Passwort von dir.

grant all privileges on zabbix.* to zabbix@localhost identified by 'dein-passwort';

Dann noch die Änderungen wirksam machen:

flush privileges;

Schließlich kannst du dich aus MySQL ausloggen.

quit;

Jetzt fehlt noch das Schema, damit Zabbix mit der neu erstellten Datenbank etwas anfangen kann. Es wurde zusammen mit der Installation bereitgestellt und kann über folgenden Befehl importiert werden:

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

Nach dem Ausführen des Befehls wird das Passwort des soeben erstellten User zabbix abgefragt. Wenn du keine Error-Meldung oder Ausgabe erhältst, war der Vorgang erfolgreich. Sollte dir eine Error-Meldung mit “Access denied” ausgegeben werden, überprüfe nochmals ob du das richtige Passwort für den User zabbix angegeben hast.
Damit der Zabbix-Server auf die Datenbank zugreifen kann, muss als nächstes das Datenbankpasswort in der Config-Datei hinterlegt werden. Öffne die Datei mit nano, vim oder einem Editor deiner Wahl.

nano /etc/zabbix/zabbix_server.conf

Schaue innerhalb der Datei anschließend nach folgender Stelle im Code:

### Option: DBPassword
#       Database password. Ignored for SQLite.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=

Und füge folgende Zeile unterhalb der Sektion ein:

DBPassword=dein-datenbank-passwort

Anschließend abspeichern und den Editor schließen.

Jetzt sind alle Einstellungen vorgenommen, damit dein Zabbix-Server mit der Datenbank kommunizieren kann. Im nächsten Abschnitt müssen nun noch weitere Einstellungen am PHP Setting vorgenommen werden.

PHP für Zabbix konfigurieren

Zabbix lässt sich bequem über ein Webinterface in deinem Browser steuern, dieses ist in PHP gecodet und benötigt daher einige PHP spezifische Einstellungen. Bei der Installation wurde unter /etc/zabbix eine Apache Konfigurationsdatei angelegt, diese beinhaltet die nötigen PHP Einstellungen. Eine kleine Änderung muss jedoch manuell an der Datei vorgenommen werden.

nano /etc/zabbix/apache.conf

In der per Default auskommentierten Zeile “php_value date.timezone” muss lediglich die richtige Zeitzone definiert und die Zeile entsprechend einkommentiert werden.

    
        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
    

Eine Liste mit den unterstützten Zeitzonen die hinterlegt werden können, findest du in der List of Supported Timezones. Anschließend speicherst du die Datei ab und beendest deinen Editor.

Danach muss dein Apache neu gestartet werden, um die Änderungen zu übernehmen.

sudo systemctl restart apache2

Nun kann auch der Zabbix Server gestartet werden.

sudo systemctl start zabbix-server

Mit folgendem Befehl kannst du nachvollziehen, ob alles geklappt hat:

sudo systemctl status zabbix-server

Deine Ausgabe sollte folgendermaßen aussehen:

root@zabbix1:~# sudo systemctl status zabbix-server
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-08-15 08:03:37 UTC; 57min ago
  Process: 638 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)

Im letzten Schritt kannst du noch aktivieren, dass der Zabbix-Server beim Bootvorgang des Servers automatisch startet.

sudo systemctl enable zabbix-server

Zabbix Webinterface einrichten

Über das Zabbix Webinterface hast du Zugriff auf deine Dashboards. Hier lassen sich auch die Monitoring Reports und Hosts verwalten. Bevor du damit starten kannst, muss zuvor das Setup abgeschlossen werden.
Rufe dazu im Browser folgende Adresse auf :

http://deine_zabbix_server_ip/zabbix/

(Ersetze den ersten Teil der URL mit der IP-Adresse von Host1.)

An dieser Stelle wirst du von dem Zabbix Welcome Screen begrüßt, klicke auf “Next” um zum zweiten Punkt zu gelangen. In den nächsten Abschnitten werden alle Schritte und Vorkehrungen, die wir bereits durchgeführt haben, auf ihre Richtigkeit überprüft.

zabbix Einrichtung 1

Unter Punkt zwei sollte dir ein “OK” für alle notwendigen Voraussetzungen in der Tabelle angezeigt werden. Klicke auf “Next step” um zum Punkt “Configure DB connection” zu gelangen.

zabbix Einrichtung 2

An dieser Stelle übernimmt Zabbix die von uns festgelegten Werte zur Datenbank. Vervollständige noch das Feld Passwort mit dem von dir hinterlegten Passwort für die Zabbix Datenbank und klicke auf “Next step”.

zabbix Einrichtung 3

Beim nächsten Punkt “Zabbix Server details” kannst du einfach die Default Einstellungen übernehmen. Folge hiernach dem Verlauf um das Setup abzuschließen.

zabbix Einrichtung 4

Mit dem Abschluss des Setup wird eine Konfigurationsdatei unter “/usr/share/zabbix/conf/zabbix.conf.php” generiert. Es bietet sich an ein Backup von der Datei anzulegen, so kannst du diese in Zukunft ggf. wiederverwenden.

Nach dem Klick auf “Finish” kannst du dich mit Username und Passwort im Webinterface anmelden. Lass uns bevor du dich einloggst aber noch den zweiten Cloud Server für das Monitoring vorbereiten.

Die Default Login-Daten lauten:

Username = Admin
Passwort = zabbix

Zabbix Agent installieren und konfigurieren

In diesem Schritt wird Host2 mit dem Zabbix-Agent ausgestattet. Öffne ein zweites Terminal Fenster und verbinde dich mit per SSH mit Host2.
Auch auf dem Server fügst du zuerst wieder das Repository hinzu, um die aktuellste Version zu erhalten.

https://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+bionic_all.deb
sudo dpkg -i zabbix-release_3.4-1+bionic_all.deb
sudo apt update -y && apt upgrade -y 

Anschließend kann der Zabbix-Agent installiert werden.

sudo apt-get install zabbix-agent

Verschlüsselung mit Pre-shared keys

Nach der Installation sollte ein Verschlüsselungsverfahren für die Kommunikation zwischen Zabbix-Server und dem Host aufgesetzt werden. Zabbix unterstützt RSA Zertifikate im PEM format und Pre-shared keys. Da die Einrichtung von Zertifikaten den Rahmen dieses Tutorials sprengen würde, verwenden wir die etwas weniger sichere Methode mit Pre-shared keys. Wenn du dennoch Zertifikate verwenden willst, findest du mehr Informationen dazu unter folgendem Link: Configuring certificate on Zabbix server.

Also zuerst den PSK erstellen:

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

Danach lässt du dir mit cat den erstellten Key ausgeben und kopierst ihn dir irgendwo zwischen, du benötigst ihn später nochmal.

cat /etc/zabbix/zabbix_agentd.psk

Im nächsten Schritt muss die sichere Verbindung für zum Zabbix-Server in der Konfiguration eingerichtet werden. Dazu öffnest du die Agent Konfigurationsdatei unter “/etc/zabbix/zabbix_agentd.conf” mit einem Editor.

sudo nano /etc/zabbix/zabbix_agentd.conf

Innerhalb der Datei müssen für die PSK Einrichtung an mehreren Stellen im Code Einstellungen definiert werden. Finde zunächst die im unten stehenden Code-Snippet gezeigte Stelle innerhalb der Datei.

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

Unter der Variable “Server=” muss die IP-Adresse des Zabbix-Server angegeben werden. Füge hierfür folgende Zeile unter dem Code Block ein und ersetze die IP-Adresse entsprechend.

Server=ip-von-host1

Als nächstes musst du zum Abschnitt innerhalb der Datei springen, indem die Art der sicheren Verbindung zum Zabbix-Server definiert wird. Diese Stelle sieht wie folgt aus:

####### TLS-RELATED PARAMETERS #######

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

Unter dem Block fügst du folgende Zeile in die Datei ein:

TLSConnect=psk

Danach springst du zum TLSAccept Block direkt darunter, dieser sieht wie folgt aus:

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

Unter dem Block fügst du die folgende Zeile ein:

TLSAccept=psk

Suche nun den TLSPSKIdentity Abschnitt in der Datei:

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

Hier vergibst du einen eindeutigen Namen für den Pre-shared key, füge dafür folgende Zeile Code unter dem Block ein:

TLSPSKIdentity=PSK001

Der Name (PSK001) muss später auch im Webinterface hinterlegt werden, wenn Host2 für das Monitoring hinzugefügt wird.
Im letzten Schritt wird der Pfad zu dem zuvor erstellten Pre-shared key hinterlegt.
Der Abschnitt findet sich direkt unter dem vorherigen:

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

Füge den Pfad der auf deinen PSK verweist unter dem Abschnitt in eine neue Zeile ein:

TLSPSKFile=/etc/zabbix/zabbix_agentd.psk

Damit sind alle erforderlichen Änderungen an Host2 vorgenommen, du kannst die Datei abspeichern und den Editor schließen.

Starte den Zabbix-Agent und aktiviere automatisches Starten nach dem booten.

sudo systemctl start zabbix-agent


sudo systemctl enable zabbix-agent

Ob der Zabbix-Agent läuft, überprüfst du mit:

sudo systemctl status zabbix-agent

Geschafft! Der Agent ist damit fertig konfiguriert.

Hinweis: Wenn du die ufw Firewall aktiviert hast, ist es notwendig tcp Verbindungen auf Port 10050 zu erlauben.

 sudo ufw allow 10050/tcp

Mehr zur ufw Firewall gibts in folgendem Artikel: UFW auf Ubuntu 16.04 installieren

Host zum Zabbix-Server hinzufügen

Mit der Einrichtung des Zabbix-Agents hast du den Großteil der Einrichtung hinter dich gebracht. Zusätzlich muss jeder Host, der überwacht werden soll noch im Zabbix Webinterface hinzugefügt werden.

Logge dich dafür nun in dein Zabbix Webinterface ein.

zabbix Login-Screen

Im Dashboard angekommen wählst du nun in der oberen Menüleiste “Configuration” und dann im Untermenü “Hosts” aus. Danach klickst du in der oberen rechten Ecke auf “Create Host” um einen neuen Host hinzuzufügen.

zabbix Host hinzufügen 1

An dieser Stelle hinterlegst du den Hostnamen und die IP-Adresse von deinem zweiten Cloud Server. Als nächstes wählst du eine Gruppe welcher der Host angehören soll, du kannst hier aus einer der bestehenden Gruppen z.B. “Linux Servers” auswählen oder neue Gruppen erstellen. Jeder Host kann mehreren Gruppen zugeordnet werden. Wenn du fertig bist, wechselst du zum Menüpunkt “Templates”.

zabbix Host hinzufügen 2

Zabbix kommt mit vielen Templates für verschiedenste Betriebssysteme, so natürlich auch für Linux. Da unser Host2 ein Ubuntu 18.04 LTS ist, kannst du im Suchfeld nach Linux suchen und “Template OS Linux” auswählen.
Im nächsten Schritt wechselst du zum Menüpunkt “Encryption”, um die PSK Verschlüsselung zu definieren. Unter “PSK” gibst du den Pfad zu dem erstellten Pre-shared key auf dem Zabbix-Agent Server an > „/etc/zabbix/zabbix_agentd.psk„. Im Feld “PSK Identity” wird der übereinstimmende Wert von “TLSPSKIdentity” aus der Agent Konfigurationsdatei angegeben > „PSK001„.

zabbix Host encryption konfigurieren

Zum Abschluss klickst du auf “Add”, um den neuen Host für das Monitoring hinzuzufügen.

Hat alles geklappt, erscheinen grüne Labels für die aktive Verbindung zum Zabbix-Agent und die verschlüsselte Verbindung mit Pre-shared keys.

Es vergehen ein paar Sekunden bis die aktiven Daten für das Monitoring auf dem Zabbix-Server zu sehen sind. Die Statistiken sind unter Monitoring > Latest Data einsehbar. Um zu testen, ob alles reibungslos funktioniert, kannst du deinen Host zu Testzwecken herunterfahren. Dir sollte unmittelbar danach eine Problem-Warnung in deinem Dashboard ausgegeben werden.

zabbix Monitoring Problem Warnung

Wiederhole die oben gezeigten Schritte Zabbix-Agent installieren > PSK Keys erstellen > und Agent Konfiguration um zusätzliche Hosts für das Monitoring hinzuzufügen.

Fazit

Mit der Installation von Zabbix-Server sowie Zabbix-Agent hast du dein Monitoring erfolgreich eingerichtet. Letztendlich ist es immer ein bisschen Aufwand bis das Monitoring nach den eigenen Bedürfnissen eingerichtet ist. Der nächste Schritt besteht darin, dein Dashboard mit den nötigen Indikatoren und Widgets auf deinen Use-Case einzustellen. Zabbix ist bei der Einrichtung sehr gefällig, also probier einfach ein bisschen aus.

Du hast noch nicht genug?
Bei Tech4Hosting warten noch viele weitere spannende Tutorials auf dich:

Zurück zur Tutorial Übersicht Back to Tutorial Overview

© 2002-2023 Phox inc. all rights reserved.

© 2002-2023 Phox inc. all rights reserved.