Zabbix — instalacja serwera, agenta, szablony, triggery i alerty Discord/Telegram
Opublikowano: 9 kwietnia 2026 · Kategoria: VPS / Monitoring
Nie wiesz że serwer jest przeciążony dopóki nie dostaniesz zgłoszenia od klienta — to najgorszy scenariusz. Zabbix to open-source platforma monitoringu zbierająca setki metryk z serwerów, baz danych i urządzeń sieciowych, wysyłająca alerty zanim problem stanie się przestojem. W tym przewodniku zainstalujemy serwer Zabbix 7.x, skonfigurujemy agentów, szablony i powiadomienia przez Discord i Telegram.
Instalacja serwera Zabbix 7.x na Ubuntu 22.04
Zabbix wymaga serwera bazy danych (MySQL lub PostgreSQL) i serwera WWW (Nginx lub Apache) dla interfejsu webowego. Użyjemy MySQL + Nginx:
# Dodaj repozytorium Zabbix 7.0 LTS wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb sudo apt update # Zainstaluj serwer, frontend i agenta sudo apt install -y zabbix-server-mysql zabbix-frontend-php \ zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 \ mysql-server # Sprawdź wersję zabbix_server --version
Skonfiguruj bazę danych MySQL dla Zabbix:
# Zaloguj się do MySQL jako root sudo mysql -uroot # W MySQL shell: CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'BezpieczneHaslo123!'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; SET GLOBAL log_bin_trust_function_creators = 1; EXIT; # Zaimportuj schemat bazy zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql \ --default-character-set=utf8mb4 -uzabbix -p zabbix # Wyłącz log_bin_trust_function_creators sudo mysql -uroot -e "SET GLOBAL log_bin_trust_function_creators = 0;"
Skonfiguruj serwer Zabbix — podaj hasło do bazy:
# Edytuj /etc/zabbix/zabbix_server.conf sudo nano /etc/zabbix/zabbix_server.conf # Zmień: DBPassword=BezpieczneHaslo123! # Skonfiguruj Nginx dla Zabbix frontend sudo nano /etc/zabbix/nginx.conf # Odkomentuj i ustaw: # listen 80; # server_name zabbix.mojafirma.pl; # Uruchom usługi sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.1-fpm sudo systemctl enable zabbix-server zabbix-agent2 nginx
Otwórz przeglądarkę: http://IP-SERWERA/zabbix — kreator web skonfiguruje połączenie
z bazą. Domyślne dane logowania: Admin / zabbix (zmień natychmiast!).
Instalacja agenta Zabbix na monitorowanym hoście
Na każdym serwerze który chcesz monitorować zainstaluj Zabbix Agent 2 (nowszy, obsługuje goroutines):
# Na monitorowanym hoście (nie serwerze Zabbix) wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-1+ubuntu22.04_all.deb sudo dpkg -i zabbix-release_7.0-1+ubuntu22.04_all.deb sudo apt update sudo apt install -y zabbix-agent2 # Edytuj konfigurację agenta sudo nano /etc/zabbix/zabbix_agent2.conf
# /etc/zabbix/zabbix_agent2.conf — kluczowe ustawienia # IP serwera Zabbix Server=1.2.3.4 ServerActive=1.2.3.4 # Nazwa hosta (musi pasować do nazwy w konfiguracji hosta w UI) Hostname=moj-serwer-produkcyjny # Port (domyślny 10050) ListenPort=10050 # Logi LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=10
sudo systemctl restart zabbix-agent2 sudo systemctl enable zabbix-agent2 # Przetestuj połączenie z serwera Zabbix zabbix_get -s IP-HOSTA -p 10050 -k "system.hostname"
Dodawanie hosta i szablonu w UI
W interfejsie webowym Zabbix: Configuration → Hosts → Create host. Kluczowe pola:
| Pole | Wartość | Uwaga |
|---|---|---|
| Host name | moj-serwer-produkcyjny | Musi pasować do Hostname w agent2.conf |
| Groups | Linux servers | Logiczne grupowanie hostów |
| Interfaces | Agent, IP: 1.2.3.4, Port: 10050 | IP monitorowanego hosta |
| Templates | Linux by Zabbix agent | Gotowy szablon z ~60 metrykami i triggerami |
Szablon Linux by Zabbix agent automatycznie zbiera: CPU (system/user/iowait/steal), RAM, swap, dyski (read/write IOPS, latencja), sieć (in/out bytes), procesy, czas systemowy i wiele innych. Ma też predefiniowane triggery: np. alarm gdy dysk przekroczy 85% pojemności.
Konfiguracja triggerów i akcji alertów
Własny trigger: Configuration → Hosts → [host] → Triggers → Create trigger:
# Wyrażenia triggerów — przykłady
# CPU > 90% przez 5 minut
{moj-serwer-produkcyjny:system.cpu.util.avg(5m)}>90
# RAM wolna < 200 MB
{moj-serwer-produkcyjny:vm.memory.size[available].last()}<209715200
# Dysk /var/log > 90% zajęty
{moj-serwer-produkcyjny:vfs.fs.size[/var/log,pused].last()}>90
# Serwis nginx nie działa
{moj-serwer-produkcyjny:proc.num[nginx].last()}=0
# Restart hosta (uptime < 10 minut)
{moj-serwer-produkcyjny:system.uptime.change()}<0 Integracja z Discord i Telegram
Zabbix obsługuje webhook — idealne dla Discord i Telegram. Idź do Administration → Media types → Create media type:
# Media type: Discord Webhook
# Type: Webhook
# Parameters:
# discord_webhook_url = https://discord.com/api/webhooks/ID/TOKEN
# message = {ALERT.MESSAGE}
# subject = {ALERT.SUBJECT}
# Script (JavaScript w Zabbix):
var params = JSON.parse(value);
var request = new HttpRequest();
request.addHeader('Content-Type: application/json');
var payload = JSON.stringify({
"embeds": [{
"title": params.subject,
"description": params.message,
"color": 15158332
}]
});
var response = request.post(params.discord_webhook_url, payload);
return response; # Telegram Media Type
# Parameters:
# telegram_token = BOT_TOKEN
# chat_id = -1001234567890
# message = {ALERT.SUBJECT}: {ALERT.MESSAGE}
# Script:
var params = JSON.parse(value);
var request = new HttpRequest();
request.addHeader('Content-Type: application/json');
var url = 'https://api.telegram.org/bot' + params.telegram_token + '/sendMessage';
var payload = JSON.stringify({
"chat_id": params.chat_id,
"text": params.message,
"parse_mode": "HTML"
});
var response = request.post(url, payload);
return response; Po skonfigurowaniu Media type: Configuration → Actions → Trigger actions → Create action — dodaj warunek (np. Trigger severity >= High) i operację (wyślij wiadomość przez Discord/Telegram do grupy użytkowników).