Instalacja i konfiguracja Zabbix na Ubuntu 20.04

Wstęp

Zabbix to oprogramowanie open source monitorujące dla sieci i aplikacji. Oferuje monitorowanie w czasie rzeczywistym tysięcy metryk zebranych z serwerów, maszyn wirtualnych, urządzeń sieciowych i aplikacji internetowych. Te metryki mogą pomóc w określeniu aktualnego stanu infrastruktury IT i wykryciu problemów ze sprzętem lub komponentami oprogramowania.

Aby zebrać metryki serwera, Zabbix używa małego agenta na monitorowanym kliencie, aby zebrać dane i wysłać je do serwera Zabbix. Zabbix obsługuje szyfrowaną komunikację między serwerem a podłączonymi klientami, dzięki czemu Twoje dane są chronione podczas podróży przez niezabezpieczone sieci.

Serwer Zabbix przechowuje swoje dane w bazie danych obsługiwanej przez MySQL lub PostgreSQL. Możesz również przechowywać dane historyczne w bazach danych NoSQL, takich jak Elasticsearch i TimescaleDB. Zabbix zapewnia interfejs webowy, dzięki któremu możesz przeglądać dane i konfigurować ustawienia systemu.

W tym poradniku skonfigurujesz Zabbix na dwóch maszynach z Ubuntu 20.04. Jeden zostanie skonfigurowany jako serwer Zabbix, a drugi jako klient, którego będziesz monitorować. Serwer Zabbix użyje bazy danych MySQL do rejestrowania danych monitorowania i Nginx do obsługi interfejsu webowego.

Wymagania wstępne

  • Dwie instancje Ubuntu Server 20.04. Na jednym serwerze zainstalujesz Zabbix, ten poradnik będzie odnosić się do tego jako do serwera Zabbix. Będzie monitorować Twój drugi serwer, będzie określany jako drugi serwer Ubuntu.
  • W pełni zarejestrowana domena, w tym poradniku użyjemy twoja_domena jako przykładu.
  • Skonfigurowane dwa rekordy DNS dla twojej domeny:
    • Rekord A, w którym twoja_domena wskazuje na publiczny adres IP Twojego serwera.
    • Rekord A z www.twoja_domena wskazujący na publiczny adres IP Twojego serwera.

1. Instalacja Nginx, MySQL i PHP na Serwerze Zabbix

Serwer, na którym będzie działał serwer Zabbix, wymaga zainstalowania Nginx, MySQL i PHP.

Instalacja Nginx

sudo apt update
sudo apt install nginx

Aktualizujemy reguły i włączamy firewall:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Status zapory będzie teraz wyglądał tak:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

Po dodaniu reguł zapory możesz sprawdzić, czy serwer jest uruchomiony i działa, wpisując domenę serwera lub publiczny adres IP w przeglądarce internetowej.

http://domena_serwera_lub_IP

Jeśli widzisz tę stronę, oznacza to, że pomyślnie zainstalowałeś Nginx i włączyłeś ruch HTTP dla swojego serwera WWW.

Instalacja MySQL

sudo apt install mysql-server

Po wyświetleniu monitu potwierdź instalację, wpisując Y, a następnie ENTER.

Po zakończeniu instalacji zaleca się uruchomienie skryptu bezpieczeństwa, który jest wstępnie zainstalowany z MySQL. Ten skrypt usunie niektóre niebezpieczne ustawienia domyślne i zablokuje dostęp do systemu bazy danych. Uruchom interaktywny skrypt, wpisując w terminalu:

sudo mysql_secure_installation

Pojawi się pytanie, czy chcesz skonfigurować VALIDATE PASSWORD PLUGIN. Odpowiedz Y na tak lub cokolwiek innego, aby kontynuować bez włączania.

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No:

Jeśli odpowiesz „tak”, zostaniesz poproszony o wybranie poziomu weryfikacji hasła. Pamiętaj, że jeśli wpiszesz 2 jako najsilniejszy poziom, otrzymasz błędy przy próbie ustawienia dowolnego hasła, które nie zawiera cyfr, dużych i małych liter oraz znaków specjalnych lub które opiera się na powszechnych słowach słownikowych.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1

Niezależnie od tego, czy zdecydujesz się skonfigurować VALIDATE PASSWORD PLUGIN, Twój serwer poprosi Cię o wybranie i potwierdzenie hasła dla użytkownika root MySQL. Nie należy tego mylić z rootem systemu. Użytkownik root bazy danych jest użytkownikiem administracyjnym z pełnymi uprawnieniami do systemu bazy danych. Mimo że domyślna metoda uwierzytelniania dla użytkownika root MySQL nie używa hasła, nawet jeśli jest ono ustawione, należy zdefiniować tutaj silne hasło jako dodatkowy środek bezpieczeństwa.

Jeśli włączyłeś sprawdzanie poprawności hasła, zostanie wyświetlona siła hasła dla właśnie wprowadzonego hasła root, a serwer zapyta, czy chcesz kontynuować z tym hasłem. Jeśli jesteś zadowolony z obecnego hasła, wpisz Y dla „tak” w monicie:

Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y

W przypadku pozostałych pytań naciśnij Y i klawisz ENTER przy każdej podpowiedzi. To usunie niektórych anonimowych użytkowników i testową bazę danych, wyłączy zdalne logowanie roota i załaduje te nowe reguły, aby MySQL natychmiast respektował wprowadzone przez Ciebie zmiany.

Po zakończeniu sprawdź, czy możesz zalogować się do konsoli MySQL, wpisując:

sudo mysql

Spowoduje to połączenie z serwerem MySQL jako root użytkownika administracyjnej bazy danych. Powinieneś zobaczyć następujące dane wyjściowe:

Welcome to the MySQL monitor.  Commands end with ; or \\g.
Your MySQL connection id is 22
Server version: 8.0.19-0ubuntu5 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type \'help;\' or \'\\h\' for help. Type \'\\c\' to clear the current input statement.

mysql> 

Aby wyjść z konsoli MySQL, wpisz:

mysql> exit

Zauważ, że nie musiałeś podawać hasła, aby połączyć się jako użytkownik root, mimo że zdefiniowałeś je podczas uruchamiania skryptu mysql_secure_installation. Dzieje się tak, ponieważ domyślną metodą uwierzytelniania administratora MySQL jest unix_socket zamiast hasła. Mimo że na początku może to wyglądać na problem z bezpieczeństwem, sprawia to, że serwer bazy danych jest bezpieczniejszy, ponieważ jedynymi użytkownikami, którzy mogą zalogować się jako root MySQL, są użytkownicy systemu z uprawnieniami sudo, łączący się z konsoli lub przez aplikację uruchomioną z tymi samymi prawami. W praktyce oznacza to, że nie będziesz mógł używać bazy danych administratora do łączenia się z aplikacji PHP. Ustawienie hasła dla konta root MySQL działa jako zabezpieczenie na wypadek zmiany domyślnej metody uwierzytelniania z unix_socket na hasło.

W celu zwiększenia bezpieczeństwa najlepiej jest mieć dedykowane konta użytkowników z mniej rozbudowanymi uprawnieniami skonfigurowanymi dla każdej bazy danych, zwłaszcza jeśli planujesz mieć wiele baz danych hostowanych na serwerze.

Instalacja PHP

sudo apt install php-fpm php-mysql

2. Instalacja Zabbix Server

Zabbix jest dostępny w menedżerze pakietów Ubuntu, ale jest przestarzały, więc użyj oficjalnego repozytorium Zabbix, aby zainstalować najnowszą stabilną wersję. Pobierz i zainstaluj pakiet konfiguracyjny repozytorium:

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb

Zobaczysz następujące dane wyjściowe:

Output
Selecting previously unselected package zabbix-release.
(Reading database ... 64058 files and directories currently installed.)
Preparing to unpack zabbix-release_5.0-1+focal_all.deb ...
Unpacking zabbix-release (1:5.0-1+focal) ...
Setting up zabbix-release (1:5.0-1+focal) ...

Zaktualizuj indeks pakietów, aby uwzględnić nowe repozytorium:

sudo apt update

Następnie zainstaluj serwer Zabbix i interfejs WWW z obsługą bazy danych MySQL:

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

Zainstaluj również agenta Zabbix, który pozwoli ci zbierać dane o stanie samego serwera Zabbix.

sudo apt install zabbix-agent

Zanim będziesz mógł używać Zabbix, musisz skonfigurować bazę danych do przechowywania danych, które serwer Zabbix będzie zbierał od swoich agentów.

3. Konfiguracja bazy danych MySQL dla Zabbix

Musisz stworzyć nową bazę danych MySQL i wypełnić ją podstawowymi informacjami, aby była odpowiednia dla Zabbix. Utworzysz również konkretnego użytkownika dla tej bazy danych, aby Zabbix nie logował się do MySQL za pomocą konta root.

Zaloguj się do MySQL jako użytkownik root:

sudo mysql

Utwórz bazę danych Zabbix z obsługą znaków UTF-8:

mysql> create database zabbix character set utf8 collate utf8_bin;

Następnie utwórz użytkownika, którego będzie używał serwer Zabbix, nadaj mu dostęp do nowej bazy danych i ustaw hasło dla użytkownika:

mysql> create user zabbix@localhost identified by 'hasło_mysql_zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;

Wyjdź z konsoli bazy danych.

mysql> quit;

Następnie musisz zaimportować początkowy schemat i dane. Instalacja Zabbix dostarczy plik, który to konfiguruje.

Uruchom następującą komendę, aby ustawić schemat i zaimportować dane do bazy danych zabbix. Użyj zcat, ponieważ dane w pliku są skompresowane:

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

Wprowadź hasło dla użytkownika zabbix MySQL, które skonfigurowałeś, gdy zostaniesz o to poproszony.

Wykonanie tego polecenia może zająć minutę lub dwie. Jeśli zobaczysz błąd ERROR 1045 (28000): Access denied for userzabbix@\’localhost\’ (using password: YES), upewnij się, że użyłeś prawidłowego hasła dla użytkownika zabbix.

Aby serwer Zabbix mógł korzystać z tej bazy danych, musisz ustawić hasło bazy danych w pliku konfiguracyjnym serwera Zabbix. Otwórz plik konfiguracyjny w preferowanym edytorze tekstu. W tym poradniku wykorzystamy nano:

sudo nano /etc/zabbix/zabbix_server.conf

Poszukaj następującej sekcji pliku:

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

Komentarze w pliku wyjaśniają, jak połączyć się z bazą danych. Musisz ustawić wartość DBPassword w pliku na hasło dla użytkownika bazy danych. Dodaj tę linię po tych komentarzach, aby skonfigurować bazę danych:

...
DBPassword=hasło_mysql_zabbix
...

Zapisz i zamknij zabbix_server.conf, naciskając CTRL+X, Y, ENTER, jeśli używasz nano.

Skonfigurowałeś teraz serwer Zabbix do łączenia się z bazą danych. Następnie skonfigurujesz serwer WWW Nginx do obsługi interfejsu użytkownika Zabbix.

4. Konfiguracja Nginx dla Zabbix

Aby skonfigurować Nginx, zainstaluj pakiet automatycznej konfiguracji:

sudo apt install zabbix-nginx-conf

W rezultacie otrzymasz plik konfiguracyjny /etc/zabbix/nginx.conf, a także link do niego w katalogu konfiguracyjnym Nginx /etc/nginx/conf.d/zabbix.conf.

Następnie musisz wprowadzić zmiany w tym pliku. Otwórz plik konfiguracyjny:

sudo nano /etc/zabbix/nginx.conf

Plik zawiera automatycznie wygenerowaną konfigurację bloku serwera Nginx. Zawiera dwie linie określające nazwę serwera i port, na którym nasłuchuje:

server {
#        listen          80;
#        server_name     example.com;
...

Odkomentuj te dwa wiersze i zastąp example.com nazwą swojej domeny:

server {
        listen          80;
        server_name     twoja_domena;
...

Zapisz i zamknij plik. Następnie przetestuj konfigurację, aby upewnić się, że nie ma błędów składniowych w żadnym z twoich plików Nginx i ponownie załaduj konfigurację:

sudo nginx -t
sudo nginx -s reload

5. Zabezpieczenie Nginx za pomocą Let\’s Encrypt

Zainstaluj Certbota:

sudo apt install certbot python3-certbot-nginx

Certbot zapewnia różne sposoby uzyskiwania certyfikatów SSL za pomocą wtyczek. Wtyczka Nginx zajmie się ponowną konfiguracją Nginx i przeładowaniem konfiguracji w razie potrzeby. Aby skorzystać z tej wtyczki, wpisz:

sudo certbot --nginx -d twoja_domena -d www.twoja_domena

To uruchamia certbota z wtyczką –nginx, używając -d do określenia nazw domen, dla których certyfikat ma być ważny.

Jeśli po raz pierwszy używasz certbota, zostaniesz poproszony o podanie adresu e-mail i zaakceptowanie warunków korzystania z usługi. Po wykonaniu tej czynności certbot komunikuje się z serwerem Let’s Encrypt, a następnie uruchamia wyzwanie, aby sprawdzić, czy kontrolujesz domenę, dla której żądasz certyfikatu.

Jeśli to się powiedzie, certbot zapyta, jak chcesz skonfigurować ustawienia HTTPS.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you\'re confident your site works on HTTPS. You can undo this
change by editing your web server\'s configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press \'c\' to cancel):

Wybierz czy serwer ma przekierować ruch na HTTPS, a następnie naciśnij ENTER. Konfiguracja zostanie zaktualizowana, a Nginx załaduje się ponownie, aby pobrać nowe ustawienia. Certbot zakończy się komunikatem informującym, że proces się powiódł i gdzie przechowywane są Twoje certyfikaty:

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/twoja_domena/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/twoja_domena/privkey.pem
   Your cert will expire on 2020-08-18. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the \"certonly\" option. To non-interactively renew *all* of
   your certificates, run \"certbot renew\"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let\'s Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Twoje certyfikaty są pobierane, instalowane i ładowane. Spróbuj ponownie załadować swoją witrynę za pomocą https:// i zwróć uwagę na wskaźnik bezpieczeństwa przeglądarki. Powinien wskazywać, że strona jest odpowiednio zabezpieczona, zazwyczaj ikoną kłódki.

Teraz, gdy Nginx jest skonfigurowany do obsługi interfejsu użytkownika Zabbix, dokonasz pewnych modyfikacji w konfiguracji PHP, aby interfejs sieciowy Zabbix działał poprawnie.

6. Konfiguracja PHP dla Zabbix

Interfejs sieciowy Zabbix jest napisany w PHP i wymaga pewnych specjalnych ustawień serwera PHP. Proces instalacji Zabbix utworzył plik konfiguracyjny PHP-FPM, który zawiera te ustawienia. Znajduje się w katalogu /etc/zabbix i jest ładowany automatycznie przez PHP-FPM. Musisz wprowadzić niewielką zmianę w tym pliku, więc otwórz go, wykonując następujące czynności:

sudo nano /etc/zabbix/php-fpm.conf

Plik zawiera ustawienia PHP, które spełniają niezbędne wymagania interfejsu sieciowego Zabbix. Jednak ustawienie strefy czasowej jest domyślnie wykomentowane. Aby upewnić się, że Zabbix używa prawidłowego czasu, musisz ustawić odpowiednią strefę czasową:

...
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[date.timezone] = Europe/Warsaw

Usuń komentarz z linii strefy czasowej i zmień ją na swoją strefę czasową. Możesz skorzystać z tej listy obsługiwanych stref czasowych, aby znaleźć odpowiednią dla siebie. Następnie zapisz i zamknij plik.

Teraz uruchom ponownie PHP-FPM, aby zastosować te nowe ustawienia:

sudo systemctl restart php7.4-fpm.service

Możesz teraz uruchomić serwer Zabbix:

sudo systemctl start zabbix-server

Następnie sprawdź, czy serwer Zabbix działa poprawnie:

sudo systemctl status zabbix-server

Zobaczysz następujący status:

● zabbix-server.service - Zabbix Server
     Loaded: loaded (/lib/systemd/system/zabbix-server.service; disabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-06-12 05:59:32 UTC; 36s ago
    Process: 27026 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
  ...

Na koniec włącz uruchamianie serwera w podczas uruchamiania serwera:

sudo systemctl enable zabbix-server

Serwer jest skonfigurowany i połączony z bazą danych. Następnie skonfiguruj aplikację webową.

7. Konfiguracja ustawień dla interfejsu webowego Zabbix

Interfejs sieciowy umożliwia przeglądanie raportów i dodawanie hostów, które chcesz monitorować, ale wymaga wstępnej konfiguracji, zanim będzie można z niego korzystać. Uruchom przeglądarkę i przejdź do adresu https://twoja_domena. Na pierwszym ekranie zobaczysz wiadomość powitalną. Kliknij Next step, aby kontynuować.

Na następnym ekranie zobaczysz tabelę zawierającą wszystkie wymagania wstępne do uruchomienia Zabbix.

Wszystkie wartości w tej tabeli muszą być OK, więc sprawdź, czy są. Przewiń w dół i przejrzyj wszystkie wymagania wstępne. Po sprawdzeniu, że wszystko jest w porządku, kliknij Next step, aby kontynuować.

Następny ekran poprosi o informacje o połączeniu z bazą danych.

Interfejs sieciowy Zabbix potrzebuje dostępu do bazy danych, aby zarządzać hostami i czytać dane. Dlatego wprowadź poświadczenia MySQL skonfigurowane w kroku 3. Kliknij Next step, aby kontynuować.

Na następnym ekranie możesz pozostawić opcje z wartościami domyślnymi.

Pole Name jest opcjonalne; jest używane w interfejsie sieciowym do odróżnienia jednego serwera od drugiego w przypadku, gdy masz kilka serwerów monitorujących. Kliknij Next step, aby kontynuować.

Następny ekran pokaże podsumowanie przed instalacją, dzięki czemu możesz potwierdzić, że wszystko jest w porządku.

Kliknij Next step, aby przejść do ostatniego ekranu.

Konfiguracja interfejsu webowego została zakończona. Proces ten tworzy plik konfiguracyjny /usr/share/zabbix/conf/zabbix.conf.php, którego kopię zapasową możesz wykonać i używać w przyszłości. Kliknij Finish, aby przejść do ekranu logowania. Domyślnym użytkownikiem jest Admin, a hasłem zabbix.

Zanim się zalogujesz, skonfiguruj agenta Zabbix na swoim drugim serwerze Ubuntu.

8. Instalacja i konfiguracja agenta Zabbix

Teraz musisz skonfigurować oprogramowanie agenta, które będzie wysyłać dane monitorowania do serwera Zabbix.

Zaloguj się do drugiego serwera Ubuntu.

Tak jak na serwerze Zabbix, uruchom następujące polecenia, aby zainstalować pakiet konfiguracyjny repozytorium:

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb

Następnie zaktualizuj indeks pakietów:

sudo apt update

Następnie zainstaluj agenta Zabbix:

sudo apt install zabbix-agent

Chociaż Zabbix obsługuje szyfrowanie oparte na certyfikacie, ustawienie certyfikacji wykracza poza zakres tego poradnika. Możesz jednak użyć kluczy wstępnych (PSK), aby zabezpieczyć połączenie między serwerem a agentem.

Najpierw wygeneruj PSK:

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

Pokaż klucz za pomocą cat, aby móc go gdzieś skopiować:

cat /etc/zabbix/zabbix_agentd.psk

Klucz będzie wyglądał mniej więcej tak:

2f68d134d65c7b4f78ae29142c331ed5fc4b41568b258dd7cc915a8361819ab6

Zachowaj to na później; będziesz go potrzebować do skonfigurowania hosta.

Teraz edytuj ustawienia agenta Zabbix, aby skonfigurować bezpieczne połączenie z serwerem Zabbix. Otwórz plik konfiguracyjny agenta w edytorze tekstu:

sudo nano /etc/zabbix/zabbix_agentd.conf

Każde ustawienie w tym pliku jest udokumentowane za pomocą komentarzy informacyjnych w całym pliku, ale wystarczy edytować tylko niektóre z nich.

Najpierw musisz edytować adres IP serwera Zabbix. Znajdź następującą sekcję:

...
### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names 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.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=127.0.0.1
...

Zmień domyślną wartość na adres IP twojego serwera Zabbix:

...
Server=adres_IP_twojego_serwera_zabbix
...

Domyślnie serwer Zabbix łączy się z agentem. Jednak w przypadku niektórych kontroli (na przykład monitorowania dzienników) wymagane jest połączenie odwrotne. Dla poprawnego działania, musisz określić adres serwera Zabbix i unikalną nazwę hosta.

Znajdź sekcję, która konfiguruje aktywne kontrole i zmień wartości domyślne:

...
##### Active checks related

### Option: ServerActive
#       List of comma delimited IP:port (or DNS name:port) pairs of Zabbix servers and Zabbix proxies for active checks.
#       If port is not specified, default port is used.
#       IPv6 addresses must be enclosed in square brackets if port for that host is specified.
#       If port is not specified, square brackets for IPv6 addresses are optional.
#       If this parameter is not specified, active checks are disabled.
#       Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
# Mandatory: no
# Default:
# ServerActive=

ServerActive=adres_IP_twojego_serwera_zabbix

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=

Hostname=Drugi Serwer Ubuntu
...

Następnie znajdź sekcję, która konfiguruje bezpieczne połączenie z serwerem Zabbix i włącz obsługę kluczy wstępnych. Znajdź sekcję TLSConnect, która wygląda tak:

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

Następnie dodaj tę linię, aby skonfigurować obsługę kluczy wstępnych:

...
TLSConnect=psk
...

Następnie zlokalizuj sekcję TLSAccept, która wygląda tak:

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

Skonfiguruj połączenia przychodzące do obsługi kluczy wstępnych, dodając ten wiersz:

...
TLSAccept=psk
...

Następnie znajdź sekcję TLSPSKIdentity, która wygląda tak:

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

Wybierz unikatową nazwę, aby zidentyfikować swój klucz wstępny, dodając ten wiersz:

...
TLSPSKIdentity=PSK 001
...

Użyjesz go jako PSK ID podczas dodawania hosta przez interfejs sieciowy Zabbix.

Następnie ustaw opcję wskazującą na wcześniej utworzony klucz wstępny. Znajdź opcję TLSPSKFile:

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

Dodaj tę linię, aby skierować agenta Zabbix do utworzonego pliku PSK:

...
TLSPSKFile=/etc/zabbix/zabbix_agentd.psk
...

Zapisz i zamknij plik. Teraz możesz zrestartować agenta Zabbix i ustawić go tak, aby uruchamiał się przy starcie systemu:

sudo systemctl restart zabbix-agent
sudo systemctl enable zabbix-agent

Dla pewności sprawdź, czy agent Zabbix działa poprawnie:

sudo systemctl status zabbix-agent

Zobaczysz następujący stan, wskazujący, że agent jest uruchomiony:

● zabbix-agent.service - Zabbix Agent
   Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2020-06-12 08:19:54 UTC; 25s ago
  ...

Agent będzie nasłuchiwał na porcie 10050 połączeń z serwera. Skonfiguruj UFW, aby zezwolić na połączenia z tym portem:

sudo ufw allow 10050/tcp

Agent jest teraz gotowy do wysyłania danych do serwera Zabbix. Aby jednak z niego skorzystać, musisz połączyć się z nim z konsoli internetowej serwera. W następnym kroku zakończysz konfigurację.

9. Dodawanie nowego hosta do serwera Zabbix

Instalacja agenta na serwerze, który chcesz monitorować, to tylko połowa procesu. Każdy host, który chcesz monitorować, musi być zarejestrowany na serwerze Zabbix, co możesz zrobić przez interfejs sieciowy.

Zaloguj się do interfejsu sieciowego serwera Zabbix Server przechodząc pod adres https://twoja_domena:

Po zalogowaniu kliknij Configuration, a następnie Hosts w lewym pasku nawigacyjnym. Następnie kliknij przycisk Create host w prawym górnym rogu ekranu. Spowoduje to otwarcie strony konfiguracji hosta.

Dostosuj Host nameIP address, aby odzwierciedlały nazwę hosta i adres IP drugiego serwera Ubuntu, a następnie dodaj hosta do grupy. Możesz wybrać istniejącą grupę, na przykład Linux servers, lub utwórz własną grupę. Host może należeć do wielu grup. W tym celu wpisz nazwę istniejącej lub nowej grupy w polu Groups i wybierz żądaną wartość z proponowanej listy.

Przed dodaniem grupy kliknij kartę Templates.

Wpisz Template OS Linux by Zabbix agent w polu Search, a następnie wybierz go z listy, aby dodać ten szablon do hosta.

Następnie przejdź do zakładki Encryption. Wybierz PSK dla obu połączeń do hostapołączeń z hosta. Następnie ustaw PSK identity na PSK 001, która jest wartością ustawienia TLSPSKIdentity agenta Zabbix, który skonfigurowałeś wcześniej. Następnie ustaw wartość PSK na klucz, który wygenerowałeś dla agenta Zabbix. Jest to ten przechowywany w pliku /etc/zabbix/zabbix_agentd.psk na komputerze agenta.

Kliknij przycisk Add na dole formularza, aby utworzyć hosta.

Zobaczysz nowego hosta na liście. Poczekaj chwilę i ponownie załaduj stronę, aby zobaczyć zielone etykiety wskazujące, że wszystko działa poprawnie, a połączenie jest zaszyfrowane.

Jeśli masz dodatkowe serwery, które musisz monitorować, zaloguj się do każdego hosta, zainstaluj agenta Zabbix, wygeneruj PSK, skonfiguruj agenta i dodaj hosta do interfejsu sieciowego, wykonując te same kroki, które wykonałeś, aby dodać swój pierwszy host.

Serwer Zabbix monitoruje teraz twój drugi serwer Ubuntu. Teraz skonfiguruj powiadomienia e-mail, aby otrzymywać powiadomienia o problemach.

10. Konfiguracja powiadomień e-mail

Zabbix automatycznie obsługuje wiele typów powiadomień: e-mail, OTRSSlackTelegram, SMS, itp. Możesz zobaczyć pełną listę integracji na stronie internetowej Zabbix.

Aby skonfigurować powiadomienia e-mail kliknij Administration, a następnie Media types na lewym pasku nawigacyjnym. Zobaczysz listę wszystkich typów mediów. Istnieją dwie wstępnie skonfigurowane opcje dla wiadomości e-mail: dla powiadomień w postaci zwykłego tekstu i dla powiadomień HTML. W tym samouczku będziesz używać powiadomień w postaci zwykłego tekstu. Kliknij Email.

Dostosuj opcje SMTP zgodnie z ustawieniami dostarczonymi przez usługę poczty e-mail. Ten poradnik wykorzystuje SMTP Gmaila do konfigurowania powiadomień e-mail.

Uwaga: Jeśli używasz weryfikacji dwuetapowej z Gmailem, musisz wygenerować hasło do aplikacji dla Zabbix. Podczas konfiguracji wystarczy wprowadzić hasło do aplikacji tylko raz. Instrukcje, jak wygenerować to hasło, znajdziesz w Centrum pomocy Google.

Jeśli korzystasz z Gmaila, wpisz smtp.gmail.com w polu SMTP Server, 465 w polu SMTP server port, gmail.com w SMTP helo i Twój adres e-mail w SMTP email. Następnie wybierz SSL/TLS dla Connection Security oraz Username and password dla Authentication. Wprowadź swój adres Gmail jako Username, a hasło do aplikacji wygenerowane z konta Google jako Password.

W zakładce Message templates możesz zobaczyć listę predefiniowanych wiadomości dla różnych typów powiadomień. Na koniec kliknij przycisk Update na dole formularza, aby zaktualizować parametry wiadomości e-mail.

Teraz możesz przetestować wysyłanie powiadomień. Aby to zrobić, kliknij łącze Test podkreślone w odpowiednim wierszu.

Zobaczysz wyskakujące okienko. Wpisz swój adres e-mail w polu Send to i kliknij przycisk Test. Zobaczysz komunikat o pomyślnym wysłaniu i otrzymasz wiadomość testową.

Zamknij wyskakujące okienko, klikając przycisk Cancel.

Teraz utwórz nowego użytkownika. Kliknij Administration, a następnie Users na lewym pasku nawigacyjnym. Zobaczysz listę użytkowników. Następnie kliknij przycisk Create user w prawym górnym rogu ekranu. Spowoduje to otwarcie strony konfiguracji użytkownika:

Wprowadź nową nazwę użytkownika w polu Alias i ustaw nowe hasło. Następnie dodaj użytkownika do grupy administratora. Wpisz Zabbix administrators w polu Grupy i wybierz go z proponowanej listy.

Po dodaniu grupy kliknij kartę Media i kliknij podkreślony link Add (nie przycisk Add pod nim). Zobaczysz wyskakujące okienko.\’

Wybierz opcję Email z listy rozwijanej Type. Wpisz swój adres e-mail w polu Send to. Pozostałe opcje możesz pozostawić na wartościach domyślnych. Kliknij przycisk Add na dole.

Teraz przejdź do zakładki Permissions. Wybierz Zabbix Super Admin z rozwijanego menu User type.

Kliknij przycisk Add na dole formularza, aby utworzyć użytkownika.

Uwaga: Używanie domyślnego hasła nie jest bezpieczne. Aby zmienić hasło wbudowanego użytkownika Admin kliknij na alias na liście użytkowników. Następnie kliknij Change password, wprowadź nowe hasło i potwierdź zmiany, klikając przycisk Update.

Teraz musisz włączyć powiadomienia. Kliknij kartę Configuration, a następnie Actions  na lewym pasku nawigacyjnym. Zobaczysz wstępnie skonfigurowaną akcję, która jest odpowiedzialna za wysyłanie powiadomień do wszystkich administratorów Zabbix. Możesz przejrzeć i zmienić ustawienia, klikając nazwę. Na potrzeby tego poradnika użyj parametrów domyślnych. Aby włączyć akcję, kliknij czerwony link Disabled w kolumnie Status.

Teraz jesteś gotowy na otrzymywanie alertów. W następnym kroku wygenerujesz jeden, aby przetestować konfigurację powiadomień.

11. Generowanie testowego alertu

W tym kroku wygenerujesz alert testowy, aby upewnić się, że wszystko jest połączone. Domyślnie Zabbix śledzi ilość wolnego miejsca na dysku na twoim serwerze. Automatycznie wykrywa wszystkie zamontowane dyski i dodaje odpowiednie kontrole. Ta kontrola wykonywana jest co godzinę, więc musisz chwilę poczekać na wyzwolenie powiadomienia.

Utwórz plik tymczasowy, który jest wystarczająco duży, aby wywołać alert użycia systemu plików Zabbix. Aby to zrobić, zaloguj się na swój drugi serwer Ubuntu.

Następnie określ ilość wolnego miejsca na serwerze. Możesz użyć polecenia df, aby dowiedzieć się:

df -h

Polecenie df zgłosi wykorzystanie miejsca na dysku w systemie plików, a -h sprawi, że dane wyjściowe będą czytelne dla człowieka. Zobaczysz dane wyjściowe podobne do następujących:

Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        78G  1.4G   77G    2% /

W tym przypadku wolne miejsce to 77G. Twoje wolne miejsce może się różnić.

Użyj polecenia fallocate, które umożliwia wstępne przydzielenie lub cofnięcie alokacji miejsca na plik, aby utworzyć plik, który zajmuje ponad 80% dostępnego miejsca na dysku. To wystarczy, aby wywołać alert:

fallocate -l 70G /tmp/temp.img

Po około godzinie Zabbix uruchomi alert o ilości wolnego miejsca na dysku i uruchomi skonfigurowaną akcję, wysyłając powiadomienie. Możesz sprawdzić swoją skrzynkę odbiorczą w poszukiwaniu wiadomości z serwera Zabbix. Zobaczysz taki komunikat:

Problem started at 09:49:08 on 2021.10.12
Problem name: /: Disk space is low (used > 80%)
Host: Drugi Serwer Ubuntu
Severity: Warning
Operational data: Space used: 71.34 GB of 77.36 GB (92.23 %)
Original problem ID: 106

Możesz także przejść do zakładki Monitoring, a następnie Dashboard, aby zobaczyć powiadomienie i jego szczegóły.

Teraz, gdy wiesz, że alerty działają, usuń utworzony plik tymczasowy, aby odzyskać miejsce na dysku:

rm -f /tmp/temp.img

Po chwili Zabbix wyśle wiadomość, a alert zniknie z głównego pulpitu.