Wie überwache ich mit Zabbix mein VPS auf Ubuntu 16.04 LTS

Heute wollen wir eine Überwachung für unseren VPS einrichten.
Dazu benötigen wir eine von unseren Servern unabhängige Instanz, auf die wir Zabbix installieren.
Step 1: Installation LAMP-Stack und benötigte Pakete für Zabbix
Mit dem folgenden Befehl installieren wir auf unserem Server den LAMP-Stack:
sudo apt-get install lamp-server^
und die restlichen Pakete, die wir für Zabbix minimal benötigen:
sudo apt-get install nano fping php7.0-gd dnsutils htop php7.0-ldap traceroute ipmitool libldap2-dev php7.0-bcmath php7.0-mbstring php7.0-xml
Step 2: Installation Zabbix-Server
Wir installieren die Version 3.4 und dazu müssen wir aber erst einmal das entsprechende Repository hinzufügen:
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb sudo apt-get update
Haben wir das getan, können wir Zabbix-Server und die dazugehörigen Komponenten installieren:
sudo apt-get install zabbix-server-mysql zabbix-frontend-php zabbix-agent zabbix-get zabbix-sender zabbix-java-gateway
Um Zabbix zu nutzen, benötigen wir eine Datenbank, die wir noch anlegen müssen:
mysql -u root -p
Dann im mysql-Prompt:
create database zabbix character set utf8 collate utf8_bin; grant all privileges on zabbix.* to zabbix@localhost identified by 'Dein-Passwort'; flush privileges; quit;
und im Anschluss importieren wir das Schema von Zabbix:
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -pDein-passwort zabbix
Nun müssen wir noch die Konfigurationsdatei von Zabbix anpassen:
sudo nano /etc/zabbix/zabbix_server.conf
in dieser überprüfen wir, ob die folgenden Zeilen vorhanden sind und passen diese entsprechend an:
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=Dein-Passwort
Start von Zabbix Server und Zabbix Agent beim Systemstart aktivieren:
sudo systemctl enable zabbix-server sudo systemctl enable zabbix-agent
Zabbix-Server starten:
sudo systemctl start zabbix-server
und Status überprüfen:
sudo systemctl status zabbix-server
Ausgabe sollte „active (running)“ anzeigen:
zabbix-server.service - Zabbix Server Loaded: loaded (/lib/systemd/system/zabbix-server.service; enabled; vendor preset: enabled) Active: active (running) since ...
Step 3: Apache2 und php anpassen
In diesem Schritt legen wir uns einen passenden vHost an:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/001-zabbix.conf sudo nano /etc/apache2/sites-available/001-zabbix.conf
den Inhalt der Datei ersetzen wir durch den folgenden:
<VirtualHost *:80>
ServerName zabbix.deine-domain.tld
ServerAdmin webmaster@deine-domain.tld
DocumentRoot /usr/share/zabbix
<Directory "/usr/share/zabbix">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</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>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
und aktivieren die Site:
sudo a2ensite 001-zabbix.conf
in der php.ini setzen wir noch die folgenden Parameter:
sudo nano /etc/php/7.0/apache2/php.ini
max_execution_time 300 memory_limit = 128M post_max_size = 16M upload_max_filesize = 8M max_input_time = 300 always_populate_raw_post_data = -1 date.timezone = Europe/Berlin
hier darauf achten, dass die Werte in den richtigen Abschnitten gesetzt werden, am besten mit STRG + W nach den Parametern suchen.
und dann starten wir den Webserver neu:
sudo systemctl restart apache2
Da wir später über https auf unsere Installation zugreifen wollen, installieren wir uns certbot:
sudo apt-get install -y software-properties-common sudo apt-get install -y python-software-properties sudo add-apt-repository -y ppa:certbot/certbot sudo apt-get update sudo apt-get install -y python-certbot-apache
und starten den Zertifikats-Request mit:
sudo certbot --apache
Wir wählen unseren vHost aus und wählen am Ende die Option 2 – Redirect aus.
Step 4: Zabbix Webinterface konfigurieren
Unseren Zabbix-Server rufen wir jetzt im Browser auf:

und gehen die Einstellungen nach und nach durch



Wenn wir fertig sind, können wir uns einloggen:

Bitte beachten: Username ist Admin mit großem „A“, Initialpasswort ist „zabbix„.
Aus Sicherheitsgründen ändern wir zuerst unser Passwort, dazu oben rechts auf das User-Icon „klicken“:

Dann müssen wir noch den Guest-User Login deaktivieren, dazu müssen wir unter „Administration“ die „User Groups“ aufrufen und bei der Gruppe „Guests“ auf „enabled“ klicken, damit diese „disabled“ wird:

Damit deaktivieren wir den Guest-Login in der Anmeldemaske.
Nun schalten wir noch in der GUI unter „Configuration“ -> „Hosts“ die Überwachung des „Zabbix Server“ selbst ein:

und starten den Zabbix-Agent auf dem Zabbix-Server:
sudo systemctl start zabbix-agent
Step 5: Zabbix-Agent auf VPS installieren und Kommunikation absichern
Nun loggen wir uns auf unseren zu überwachenden VPS ein und fügen ebenfalls das Repository für Zabbix hinzu:
wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb sudo apt-get update
Den Agenten installieren wir dann mit:
sudo apt-get install zabbix-agent
Für die sichere Kommunikation zwischen Agent und Server verwenden wir Pre-Shared-Keys, die wir auf dem zu überwachenden VPS generieren:
sudo sh -c "openssl rand -hex 32 > /etc/zabbix/agent.psk"
den soeben generierten Key lassen wir uns anzeigen:
cat /etc/zabbix/agent.psk
Ausgabe sollte etwa so aussehen:
17eb98553b8ca3d9cdf408a9d596ea2f1a94e86cfdf4353f12f8dd7e9f5d99ca
Diesen kopieren wir uns z.B. in Notepad, da wir diesen später brauchen.
In der Konfigurations-Datei vom Agenten müssen wir jetzt noch ein paar Werte anpassen:
sudo nano /etc/zabbix/zabbix_agentd.conf
Die folgenden Werte in den entsprechenden Abschnitten setzen:
Server=IP-Adresse-unseres-Zabbix-Server
TLS-Optionen:
TLSConnect=psk TLSAccept=psk TLSPSKFile=/etc/zabbix/agent.psk TLSPSKIdentity=PSK 001
Nun können wir den Agenten starten und verwenden:
sudo systemctl start zabbix-agent sudo systemctl enable zabbix-agent
In der GUI auf dem Zabbix-Server können wir diesen Host nun unter „Configuration“ -> „Hosts“ -> „Create Host“ hinzufügen:

Im Reiter „Encryption“ passen wir die Werte dann an und aktivieren den Pre-Shared-Key:

Nicht vergessen die Templates an den Host zu binden 😉
Bis bald und viel Spaß beim Ausprobieren.
Wenn Ihr Fragen habt, immer her damit. 😉