SSD Nodes Learn Hosting plans →
Посібники Matt ConnorВід Matt Connor · Оновлено 2026-08-01

Як встановити Zabbix 7.0 LTS на Ubuntu 24.04

Покроково встановіть Zabbix 7.0 LTS на Ubuntu 24.04: репозиторій, схема MariaDB/MySQL, nginx frontend і agent2, а також виправлення типових помилок.

Що ви налаштовуєте

Один VPS на Ubuntu 24.04 із повним стеком Zabbix 7.0 LTS: демон zabbix-server, який опитує вузли та надсилає сповіщення, база даних MariaDB/MySQL, у якій зберігаються всі метрики, frontend на PHP, що обслуговується nginx, і zabbix-agent2, який збирає метрики із самого сервера. Після запуску ви вказуєте другий сервер, підключаєте шаблон і отримуєте електронний лист, щойно заповнюється диск або зупиняється служба.

Zabbix складніший за інструмент для сторінки стану. Це повноцінна система часових рядів із шаблонами, тригерами, ескалацією та зберіганням історії. Майже всі проблеми виникають через пропуск 3 кроків: імпорту схеми бази даних, установлення пароля бази даних, який фактично читає сервер, і розкоментування 2 рядків у конфігурації nginx. Якщо виконати їх правильно, далі потрібно лише пройти майстер налаштування. Якщо вам потрібні лише перевірки доступності та спільна сторінка стану, полегшений монітор стану Uptime Kuma виконує це в одному контейнері. Zabbix виправдовує свої ресурси, коли потрібні порогові значення для окремих метрик і ескалація для багатьох вузлів.

Використовуйте гілку 7.0 LTS. Версії її server, frontend, agent2 і схеми узгоджені між собою, а оновлення безпеки випускаються протягом багатьох років. Перед копіюванням наведеного нижче імені файлу репозиторію перегляньте офіційну сторінку завантаження Zabbix. Пакет випуску latest завжди вказує на найновіший точковий випуск 7.0, але якщо ви хочете зафіксувати точну збірку 7.0-N, на цій сторінці також наведено відповідне ім’я файлу. Усі інші команди тут стабільні для всієї гілки 7.0.

Розмір, порти та передумови

Використовуйте новий Ubuntu 24.04 KVM VPS із root або sudo. Реалістичний мінімум ресурсів для server, database, nginx і PHP на одному сервері, який моніторить кілька хостів, — 2 GB RAM і два vCPU. Сервер із 1 GB RAM запускається, але зі зростанням історії йому бракує пам’яті для database. Для кількох десятків хостів плануйте 4 GB RAM, а якщо хостів понад сто, винесіть database на окремий сервер. Обсяг диска залежить від кількості зібраних елементів і тривалості зберігання історії. На початку заплануйте кілька GB. housekeeper видаляє старі дані відповідно до встановлених періодів зберігання.

Порти: 80 і 443 для frontend — відкриті для загального доступу або обмежені вашою IP-адресою. Сервер прослуховує TCP 10051 для отримання даних від active agents, а кожен agent прослуховує TCP 10050 для опитування server. Якщо перед сервером встановлено firewall, відкривайте лише порти, які ви фактично надаєте назовні. Для frontend варто створити DNS A record, оскільки для нього знадобиться справжній сертифікат. Zabbix контролює кожен інший сервіс, який ви запускаєте, тому він належить до ширшого self-hosting стека, який варто розгорнути у 2026, а не має додаватися в останню чергу.

Крок 1. Додайте офіційний репозиторій Zabbix 7.0

Пакет zabbix-release виконує одну дію: додає до системи список джерел apt і ключ підпису. Установіть його, а потім оновіть індекс.

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

Якщо wget повертає 404 Not Found, ім’я файлу змінилося. Відкрийте сторінку завантаження Zabbix, виберіть Ubuntu 24.04 і скопіюйте точну URL-адресу zabbix-release, яку вона показує. Чистий результат apt update містить рядок repo.zabbix.com і не містить попередження про ключ. The following signatures couldn't be verified because the public key is not available означає, що пакет випуску не встановив свій ключ, тому повторно виконайте dpkg -i і знову оновіть індекс.

Крок 2. Встановлення сервера, frontend і агента

Однією командою встановіть сервер, зібраний для MySQL, PHP frontend, конфігурацію nginx, файли SQL-схеми та agent2.

sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

zabbix-server-mysql — це сервер, скомпільований для MySQL/MariaDB. Для PostgreSQL натомість встановіть zabbix-server-pgsql і скоригуйте наведені нижче кроки роботи з базою даних. zabbix-sql-scripts містить схему, яку ви імпортуватимете далі. У версії 7.0 це окремий пакет. Якщо його не встановити, пізніше не буде знайдено шлях для імпорту. Жоден із цих пакетів не встановлює рушій бази даних. Тому зараз встановіть MariaDB, якщо його ще немає на сервері.

sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb

Крок 3. Створіть базу даних із правильним набором символів

Zabbix суворо контролює правила сортування: база даних має бути utf8mb4 із utf8mb4_bin, інакше імпорт зупиниться на півдорозі через помилки зовнішніх ключів. Відкрийте оболонку root за допомогою sudo mysql і виконайте:

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'choose-a-strong-password';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;

Рядок SET GLOBAL захищає процес імпорту. Схема Zabbix створює збережені функції, а обліковий запис без привілею SUPER, наприклад zabbix, не може створювати їх, коли ввімкнено бінарне журналювання. У MySQL 8 бінарне журналювання ввімкнено за замовчуванням. Деякі керовані збірки MariaDB також вмикають його, а стандартна MariaDB — ні. Якщо пропустити цей прапорець на сервері з увімкненим бінарним журналюванням, імпорт зупиниться з помилкою ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Встановлення цього параметра від імені root усуває проблему. Після імпорту вимкніть його. Запишіть пароль точно. Конфігурація сервера має містити такий самий рядок, байт у байт.

Крок 4. Імпортуйте схему (цей крок часто пропускають)

Це найпоширеніша причина, через яку щойно налаштований frontend не завантажується: створена база даних порожня. Завантажте в неї схему з zabbix-sql-scripts.

zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
  mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

Система запитає пароль zabbix. На невеликому VPS операція триває від тридцяти до шістдесяти секунд. У разі успіху система нічого не виводить — це нормально. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory означає, що пакет zabbix-sql-scripts не встановлено (поверніться до кроку 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' означає, що пароль або grant із кроку 3 неправильні. Після завершення знову вимкніть прапорець безпеки:

sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"

Підтвердьте завантаження за допомогою sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;": числове значення, а не помилка doesn't exist, означає, що схему імпортовано.

Крок 5. Встановіть пароль бази даних у zabbix_server.conf

Сервер отримує облікові дані бази даних із /etc/zabbix/zabbix_server.conf. Потрібно вказати лише пароль: DBName і DBUser вже мають значення за замовчуванням zabbix. Розкоментуйте рядок # DBPassword= і задайте його значення:

DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-password

Пароль має повністю збігатися з паролем із кроку 3. Порожній або неправильний DBPassword — найчастіша причина повідомлення «Сервер Zabbix не запущено», яке з’явиться пізніше: демон запускається, не може виконати вхід і завершує роботу. На екрані це не відображається. Це видно лише в журналі.

Крок 6. Налаштуйте nginx для frontend

Пакет zabbix-nginx-conf встановлює блок сервера в /etc/zabbix/nginx.conf і створює його посилання в nginx з /etc/nginx/conf.d/zabbix.conf, але рядки listen і server_name у ньому закоментовано. Тому nginx не обслуговує Zabbix, доки ви їх не відредагуєте:

server {
    listen          80;
    server_name     zabbix.example.com;
    ...
}

Використайте своє доменне ім’я або публічну IP-адресу сервера, якщо DNS ще не налаштовано. Зверніть увагу на 2 моменти. Стандартний сайт nginx в Ubuntu також прослуховує порт 80 і позначений як сервер за замовчуванням. Тому він обробляє запити, ім’я яких не збігається з налаштованим. Видаліть цей сайт, інакше завантажуватиметься неправильна сторінка: sudo rm -f /etc/nginx/sites-enabled/default. Якщо /etc/nginx/conf.d/zabbix.conf з якоїсь причини відсутній (це відома помилка пакування), створіть посилання вручну за допомогою sudo ln -s /etc/zabbix/nginx.conf /etc/nginx/conf.d/zabbix.conf. Потім перевірте конфігурацію та перезавантажте nginx:

sudo nginx -t
sudo systemctl reload nginx

Команда nginx -t має вивести test is successful. Якщо замість цього вона виводить nginx: [emerg] a duplicate default server for 0.0.0.0:80, стандартний сайт і блок Zabbix заявляють default_server. Видаліть стандартний сайт і повторіть перевірку. Частіше перевірка завершується успішно лише з попередженням conflicting server name, але браузер усе одно показує стандартну сторінку привітання. Це означає, що стандартний сайт обробляє запит із невідповідним ім’ям. Після його видалення проблему буде усунуто.

Крок 7. Запуск і ввімкнення служб

Запустіть сервер, агент, PHP-FPM і nginx та ввімкніть їх, щоб вони автоматично запускалися після перезавантаження.

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable  zabbix-server zabbix-agent2 nginx php8.3-fpm

В Ubuntu 24.04 постачається PHP 8.3, тому службою FPM є php8.3-fpm; пакет zabbix-nginx-conf запускає свій frontend у цьому самому master-процесі. Перевірте, що сервер запустився та продовжує працювати:

sudo systemctl status zabbix-server --no-pager
sudo tail -n 20 /var/log/zabbix/zabbix_server.log

У коректному журналі останні записи містять повідомлення про запуск сервера, а також працюючі процеси housekeeper, poller і trapper. Якщо ви бачите [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost', значення DBPassword із кроку 5 не збігається. Виправте його та перезапустіть службу. Рядок [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist означає, що ви пропустили імпорт схеми на кроці 4, тому серверу нічого читати.

Крок 8. Завершіть роботу майстра вебналаштування

Перейдіть до http://your-domain-or-ip. Відкриється майстер налаштування Zabbix. Виконайте такі кроки:

  1. Вітання — виберіть мову.
  2. Перевірка попередніх вимог — кожен рядок має одразу містити статус OK; пул /etc/zabbix/php-fpm.conf уже збільшує ліміти PHP, потрібні Zabbix.
  3. Налаштування підключення до БД — тип бази даних MySQL, хост localhost, порт 0 (це означає порт або сокет за замовчуванням), назва бази даних zabbix, користувач zabbix і пароль із кроку 3. Неправильні облікові дані або відсутня схема будуть виявлені саме тут.
  4. Налаштування — залиште хост сервера Zabbix localhost і порт 10051, а також укажіть назву інсталяції.
  5. Підсумок перед інсталяцією, потім натисніть Інсталювати. Майстер запише /etc/zabbix/web/zabbix.conf.php.
  6. Завершення — увійдіть як Admin (з великої літери A), використовуючи пароль zabbix, і негайно змініть цей пароль у розділі Користувачі.

Якщо майстер повідомить про Cannot create the configuration file, вебкористувач не може записати /etc/zabbix/web/. Завантажте запропонований zabbix.conf.php, вручну розмістіть його там за допомогою sudo і натисніть Завершити.

Крок 9. Додайте локальний хост і приєднайте шаблон

Zabbix не відстежує себе автоматично. Перейдіть до Збір даних → Хости → Створити хост, задайте ім’я хоста zabbix-server, додайте його до групи Linux servers і додайте інтерфейс Agent з IP-адресою 127.0.0.1 та портом 10050. У розділі Шаблони приєднайте Linux by Zabbix agent (варіант з пасивним опитуванням; Linux by Zabbix agent active натомість використовує надсилання даних агентом). Збережіть зміни.

Протягом хвилини в рядку хоста з’явиться зелена позначка ZBX, а метрики будуть доступні в розділі Моніторинг → Останні дані. Червона позначка ZBX означає, що сервер не може підключитися до агента. Цей випадок описано нижче; це не помилка цього кроку.

Крок 10. Один корисний тригер і сповіщення електронною поштою

Шаблон Linux by Zabbix agent уже містить тригери для високого завантаження CPU, малого обсягу пам’яті та заповнених дисків. Тому сповіщення з’являються одразу після прив’язування шаблону. Щоб побачити, як створюється тригер, додайте власний: відкрийте вузол, перейдіть до Triggers → Create trigger, назвіть його Root filesystem over 90% full on {HOST.NAME}, встановіть серйозність High і використайте такий вираз:

last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90

vfs.fs.dependent.size[/,pused] — це елемент даних із відсотком використаного простору, який виявлення файлових систем у шаблоні створює для кореневої файлової системи. Шаблон Linux у версії 7.0 збирає vfs.fs.get один раз і створює залежні елементи даних для кожної точки монтування. Тому тригер спрацьовує без додаткового збирання даних. Збережіть його.

Тригер лише змінює колір рядка на інформаційній панелі, доки action не надішле сповіщення. У розділі Alerts → Media types → Email вкажіть SMTP-сервер, порт, адресу відправника, захист з’єднання (зазвичай STARTTLS) і облікові дані relay, якщо вони потрібні. Потім натисніть Test. Помилка на цьому етапі означає, що SMTP-шлях налаштовано неправильно, ще до того, як від нього залежатиме реальне сповіщення. Додайте адресу для користувача Admin у розділі Users → Users → Admin → Media → Add і виберіть серйозності, для яких потрібно надсилати сповіщення. Потім налаштуйте дію в розділі Alerts → Actions → Trigger actions → Create action: додайте умову, наприклад Trigger severity >= Warning, а в розділі Operations налаштуйте надсилання користувачу Admin через Email. Збережіть дію та увімкніть її. Потрібен чат? У Zabbix 7.0 є типи webhook-медіа для Slack, Discord і Telegram. Налаштуйте один із них так само, як Email, і призначте його користувачу.

Моніторинг другого сервера за допомогою агента

Щоб контролювати інший сервер, також додайте на ньому репозиторій Zabbix. Ubuntu 24.04 не містить власних пакетів Zabbix. Потім встановіть лише агент:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update
sudo apt install -y zabbix-agent2

Відредагуйте /etc/zabbix/zabbix_agent2.conf. Установіть у Server IP-адресу сервера Zabbix для пасивного опитування. Для активних перевірок також укажіть ServerActive і унікальне значення Hostname, яке відповідає хосту, створеному у frontend:

Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01

Виконайте sudo systemctl enable --now zabbix-agent2 і дозвольте вхідні підключення TCP 10050 від сервера Zabbix до цього сервера. У frontend створіть хост, в інтерфейсі Agent укажіть IP-адресу цієї машини, прив’яжіть шаблон Linux. Дані почнуть надходити протягом хвилини.

Типові причини помилок із повідомленнями, які ви побачите

Frontend показує Error connecting to database або помилку бази даних. На кроці налаштування бази даних у майстрі Access denied for user 'zabbix'@'localhost' (using password: YES) означає, що пароль не збігається з паролем із кроку 3 або команда GRANT не виконувалася. Якщо підключення до бази даних працює, але frontend повідомляє The frontend does not match Zabbix database або Table 'zabbix.users' doesn't exist, імпорт схеми на кроці 4 було пропущено або він завершився помилкою. Повторіть імпорт у щойно створену базу даних.

Помаранчевий банер: Zabbix server is not running: the information displayed may not be current. Frontend працює, але не може зв’язатися з активним сервером. Є три причини, найімовірніша з них наведена першою. Служба зупинена. Перевірте systemctl status zabbix-server і запустіть її. Служба працює, але не може підключитися до бази даних. У журналі відображається [Z3001] connection to database 'zabbix' failed: [1045] Access denied, що означає неправильний або порожній DBPassword. Або frontend звертається не до того сервера. Адресу збережено як host localhost і port 10051 у /etc/zabbix/web/zabbix.conf.php. В Ubuntu SELinux за замовчуванням відсутній, тому причина із сокетом SELinux, яку наводять у посібниках для RHEL, тут не застосовується. Майже завжди проблема полягає в паролі бази даних або зупиненій службі.

Для хоста показано червоний напис ZBX; помилка елемента: Get value from agent failed: cannot connect to [[127.0.0.1]:10050]: [111] Connection refused. Агент не запущений або не прослуховує порт. Перевірте systemctl status zabbix-agent2 і підтвердьте ListenPort=10050. Тайм-аут замість повідомлення "connection refused" означає, що firewall відкидає трафік на port 10050. Пов’язане повідомлення Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. означає, що агент доступний, але його рядок Server= не містить IP-адресу сервера Zabbix. Додайте її та перезапустіть агент.

Стандартна сторінка привітання nginx або 502 Bad Gateway. Сторінка привітання означає, що сайт за замовчуванням досі увімкнено або блок Zabbix не підключено. Видаліть /etc/nginx/sites-enabled/default і переконайтеся, що існує /etc/nginx/conf.d/zabbix.conf, як описано на кроці 6. Повідомлення 502 означає, що nginx звернувся до PHP, але PHP-FPM не працює або прослуховує інший сокет. Запустіть php8.3-fpm і перевірте, що сокет fastcgi_pass у блоці Zabbix відповідає сокету запущеного пулу.

Резервні копії, оновлення та TLS

База даних містить усю історію, тому регулярно створюйте її резервну копію за допомогою mysqldump і зберігайте дамп за межами сервера:

mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gz

Файли конфігурації /etc/zabbix невеликі, тому їх також варто зберігати, але їх можна відновити повторним створенням. Дані відновити таким способом неможливо. Відновлення виконується у зворотному порядку: створіть базу даних, імпортуйте дамп і вкажіть у конфігурації шлях до неї.

Оновлення в межах гілки 7.0 виконуються звичайним запуском apt update && apt upgrade. Під час наступного запуску сервер застосує всі міграції схеми. Оновіть пакети та перезапустіть zabbix-server. Перехід на майбутню основну гілку потребує окремої підготовки: ознайомтеся з примітками щодо оновлення, спочатку створіть дамп бази даних і врахуйте незворотну зміну схеми. Саме тому слід зафіксуватися на гілці LTS і не переходити з неї без потреби.

Не залишайте frontend доступним через звичайний HTTP. Після того як DNS почне вказувати на сервер, встановіть для нього сертифікат за допомогою Certbot і Let's Encrypt у nginx для Ubuntu 24.04. Ця процедура змінить server block так, щоб він прослуховував порт 443 і перенаправляв запити з порту 80. Поки ви посилюєте захист сервера, з якого виконується вхід для моніторингу всіх інших серверів, також захистіть його SSH за допомогою fail2ban для блокування атак перебором на SSH. Облікові дані для моніторингу не повинні передаватися відкритим текстом, а SSH не має залишатися доступним для спроб підбору паролів.

FAQ

Чи потрібен агент Zabbix, чи можна виконувати моніторинг без нього?

Працюють обидва варіанти. Агент (agent2) надає докладні метрики для кожного вузла: процесор, пам’ять, диски, процеси, служби та файли журналів. Це стандартний вибір для серверів, якими ви керуєте. Моніторинг без агента охоплює пристрої, на які не можна встановити програмне забезпечення: SNMP для комутаторів і принтерів, ICMP ping для перевірки доступності, HTTP-перевірки для кінцевих точок і IPMI для контролю стану обладнання. У більшості реальних розгортань використовують обидва підходи.

Чому frontend повідомляє, що сервер Zabbix не запущений?

frontend працює, але не може підключитися до активного процесу zabbix-server. Зазвичай сервер запускається, не може виконати вхід, оскільки DBPassword у zabbix_server.conf вказано неправильно або залишено порожнім, а потім одразу завершує роботу. Виконайте systemctl status zabbix-server і перегляньте /var/log/zabbix/zabbix_server.log. Рядок [Z3001] connection to database ... failed підтверджує цю причину. Виправте пароль і перезапустіть службу. Повідомлення зникне протягом хвилини.

Чи обов’язково використовувати MySQL, чи можна використовувати PostgreSQL?

Підтримуються обидва варіанти: zabbix-server-mysql з MariaDB або MySQL, як описано в цьому посібнику, або zabbix-server-pgsql з PostgreSQL. Для невеликих інсталяцій вибір майже не має значення. Для великих інсталяцій PostgreSQL із розширенням TimescaleDB розподіляє таблиці історії за розділами та значно зменшує витрати на обслуговування. Саме тому великі середовища часто обирають цей варіант. Виберіть один варіант і дотримуйтеся його. Подальша міграція потребує повного експорту та повторного імпорту, а не зміни конфігурації.

Скільки RAM потрібно серверу Zabbix, що працює в одному вузлі?

Для одного сервера, який моніторить кілька вузлів, 2 GB — реалістичний мінімум, а 4 GB достатньо для роботи з кількома десятками вузлів. Пам’ять переважно використовується кешем бази даних і процесами опитування сервера. VPS із 1 GB працює, але зі зростанням історії базі даних бракуватиме пам’яті. Якщо вузлів понад сто, винесіть базу даних на окремий сервер і налаштуйте його буферний пул, замість того щоб додавати RAM до одного комп’ютера.

Чи не є Zabbix надмірним рішенням для кількох серверів?

Може бути. Якщо вам потрібно лише знати, чи працює сервер, і мати сторінку, якою можна поділитися, легший інструмент, як-от Uptime Kuma для моніторингу доступності та стану, швидше розгорнути й простіше переглядати. Обирайте Zabbix, якщо потрібні порогові значення для окремих метрик, графіки історії, шаблонні вузли та правила ескалації. Це можливості, яких простий засіб перевірки доступності не може надати для всього парку вузлів.