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. 😉

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert