Встановлення Zabbix 7.0 LTS на Ubuntu 24.04
Покрокова інструкція встановлення Zabbix 7.0 LTS на Ubuntu 24.04. Налаштування MySQL, nginx та agent2. Виправлення типових помилок імпорту схеми бази даних.
Що ви створюєте
Один VPS на Ubuntu 24.04 з повним стеком Zabbix 7.0 LTS: демон zabbix-server для опитування та сповіщень, база даних MariaDB/MySQL для зберігання метрик, PHP frontend під керуванням nginx та zabbix-agent2 для збору метрик з самого сервера. Після налаштування ви підключаєте другий сервер, призначаєте шаблон і отримуєте email, як тільки заповнюється диск або зупиняється сервіс.
Zabbix складніший за інструменти для статус-сторінок: це повноцінна система часових рядів із шаблонами, тригерами, ескалацією та зберіганням історії. Більшість проблем виникає через три пропущені кроки: імпорт схеми бази даних, встановлення пароля бази даних, який зчитує сервер, та розкоментування двох рядків у конфігурації nginx. Якщо виконати ці кроки правильно, далі все пройде легко. Якщо вам потрібні лише перевірки доступності (up/down) та сторінка статусу, легкий статус-монітор Uptime Kuma виконує це в одному контейнері; Zabbix необхідний, коли потрібні пороги значень для кожної метрики та ескалація сповіщень для багатьох хостів.
Використовуйте лінійку 7.0 LTS: сервер, frontend, agent2 та схема мають спільну версію та отримуватимуть виправлення безпеки протягом багатьох років. Перед копіюванням імені репозиторію нижче перевірте офіційну сторінку завантаження Zabbix — пакет релізу latest завжди вказує на найновіший мінорний реліз 7.0, але якщо вам потрібна конкретна збірка 7.0-N, на сторінці також вказано відповідне ім'я файлу. Всі інші команди в цьому посібнику є стабільними для всієї лінійки 7.0.
Розмір, порти та попередні вимоги
Припускайте, що у вас є чистий Ubuntu 24.04 KVM VPS з правами root або sudo. Реально оцінюйте ресурси: 2 GB RAM та два vCPU — це мінімально необхідні показники для роботи server, database, nginx та PHP на одному вузлі для моніторингу невеликої кількості хостів. Система з 1 GB завантажується, але бази даних бракуватиме пам'яті зі зростанням історії; плануйте 4 GB, коли кількість хостів перевищить кілька десятків. Якщо хостів понад сто, перенесіть database на окремий сервер. Об'єм диска залежить від кількості збираних об'єктів та глибини історії; закладіть кілька гігабайт на старті; housekeeper видалятиме старі дані відповідно до встановлених вікон зберігання.
Порти: 80 та 443 для frontend (публічні або обмежені вашою IP). Сервер прослуховує TCP 10051 для отримання даних від активних agent; кожен agent прослуховує TCP 10050 для опитування сервером. Якщо перед системою стоїть firewall, відкривайте лише необхідні порти. Бажано мати DNS A record для frontend, оскільки для нього знадобиться справжній сертифікат. Zabbix моніторить усі інші ваші сервіси, тому він має бути частиною широкого стека self-hosting, що варто використовувати у 2026, а не додаватися як другорядне рішення.
Step 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 та знову виконайте оновлення.
Step 2 — Встановлення сервера, frontend та agent
Встановіть сервер для MySQL, PHP frontend, конфігурацію nginx, файли SQL schema та agent2 одним пакетом.
sudo apt install -y zabbix-server-mysql zabbix-frontend-php \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2zabbix-server-mysql — це сервер, скомпілований для MySQL/MariaDB; для PostgreSQL замість нього встановіть zabbix-server-pgsql та змініть кроки роботи з базою даних, наведені нижче. zabbix-sql-scripts містить схему, яку потрібно імпортувати далі — у версії 7.0 це окремий пакет, і саме через його відсутність пізніше виникає помилка шляху імпорту. Ці пакети не встановлюють сервер бази даних, тому якщо він ще не встановлений, встановіть MariaDB зараз.
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadbStep 3 — Створення бази даних з відповідним кодуванням
Zabbix вимагає суворого дотримання collation: база даних повинна мати utf8mb4 з utf8mb4_bin, інакше імпорт перерветься через помилки foreign-key. Відкрийте shell з правами 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 створює збережені функції (stored functions), а обліковий запис без SUPER, як-от zabbix, не може їх створити, якщо увімкнено binary logging. У MySQL 8 binary logging увімкнено за замовчуванням; деякі керовані збірки MariaDB також мають його увімкненим (у стандартній MariaDB він вимкнений). Якщо пропустити цей прапор на сервері з увімкненим binary logging, імпорт зупиниться з помилкою ERROR 1419 (HY000): You do not have the SUPER privilege and binary logging is enabled. Виконання команди від імені root вирішує цю проблему; після завершення імпорту параметр можна вимкнути назад. Точно запам'ятайте пароль — конфігурація сервера потребує той самий рядок байт у байт.
Step 4 — Імпорт схеми (етап, який часто пропускають)
Це найпоширеніша причина, через яку новий frontend не завантажується: створена вами база даних порожня. Завантажте схему, що постачається з zabbix-sql-scripts, у неї.
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p zabbixПрограма запитає пароль zabbix, виконуватиметься від 30 до 60 секунд на малопотужному VPS і нічого не виведе у разі успіху — відсутність виводу є правильним результатом. zcat: /usr/share/zabbix-sql-scripts/mysql/server.sql.gz: No such file or directory означає, що пакет zabbix-sql-scripts не встановлено (поверніться до Step 2). ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' означає, що пароль або права доступу з Step 3 є невірними. Після завершення вимкніть прапорець безпеки:
sudo mysql -e "SET GLOBAL log_bin_trust_function_creators = 0;"Підтвердьте імпорт за допомогою sudo mysql -e "SELECT COUNT(*) FROM zabbix.users;" — число, а не помилка doesn't exist, означає, що схема завантажена.
Step 5 — Встановіть пароль бази даних у zabbix_server.conf
Сервер зчитує облікові дані бази даних з /etc/zabbix/zabbix_server.conf. Потрібно встановити лише пароль — DBName та DBUser вже мають значення за замовчуванням zabbix. Розкоментуйте рядок # DBPassword= та встановіть його:
DBName=zabbix
DBUser=zabbix
DBPassword=choose-a-strong-passwordПароль має байт у байт збігатися з паролем із Step 3. Порожній або неправильний DBPassword є основною причиною появи помилки "Zabbix server is not running" на наступних етапах: демон запускається, не може увійти в систему та завершує роботу. На екрані немає жодних повідомлень про це — інформація міститься лише в логах.
Step 6 — Налаштування nginx на роботу з frontend
Пакет zabbix-nginx-conf встановлює server block за шляхом /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 ще не налаштовано. Є два нюанси. Стандартна сторінка привітання nginx в Ubuntu також прослуховує порт 80 і позначена як default server. Через це вона перехоплює всі запити, назва яких не збігається з налаштованими, — видаліть її, щоб уникнути завантаження невірної сторінки: 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. Після цього перевірте конфігурацію та перезавантажте сервіс:
sudo nginx -t
sudo systemctl reload nginxКоманда nginx -t має вивести test is successful. Якщо замість цього виводиться nginx: [emerg] a duplicate default server for 0.0.0.0:80, це означає, що і default site, і блок Zabbix претендують на default_server — видаліть default site і повторіть перевірку. Найчастіше перевірка проходить з попередженням conflicting server name, але браузер все одно відображає стандартну сторінку привітання: це відбувається через те, що default site перехоплює запит через невідповідність імені. Видалення default site вирішує цю проблему.
Step 7 — Запуск та активація служб
Запустіть server, agent, 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 використовує цей же master-процес для роботи frontend. Перевірте, чи сервер запустився і працює стабільно:
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 з Step 5 не збігається — виправте помилку та перезапустіть службу. Рядок [Z3005] query failed: [1146] Table 'zabbix.dbversion' doesn't exist вказує на те, що ви пропустили імпорт схеми в Step 4, тому сервер не може зчитати дані.
Step 8 — Завершення налаштування через веб-майстер
Перейдіть до http://your-domain-or-ip. Відкриється майстер налаштування Zabbix. Виконайте наступні кроки:
- Welcome — виберіть мову.
- Check of pre-requisites — всі пункти мають мати статус OK; встановлений пул
/etc/zabbix/php-fpm.confвже має необхідні ліміти PHP для Zabbix. - Configure DB connection — тип бази даних MySQL, host
localhost, port0(стандартний порт або socket), database namezabbix, userzabbixта пароль із Step 3. Помилкові облікові дані або відсутня схема будуть виявлені на цьому етапі. - Settings — залиште Zabbix server host
localhost, port10051та вкажіть назву інсталяції. - Pre-installation summary, потім Install — майстер створить
/etc/zabbix/web/zabbix.conf.php. - Finish — увійдіть як
Admin(велика літера A) з паролемzabbixта негайно змініть цей пароль у розділі Users.
Якщо майстер видасть помилку Cannot create the configuration file, веб-користувач не може записати /etc/zabbix/web/ — завантажте запропонований zabbix.conf.php, розмістіть його вручну за допомогою sudo та натисніть Finish.
Step 9 — Додайте local host та підключіть шаблон
Zabbix не здійснює моніторинг самого себе автоматично. Перейдіть у Data collection → Hosts → Create host, встановіть host name на zabbix-server, додайте його до групи Linux servers та додайте інтерфейс Agent з IP 127.0.0.1 і портом 10050. У розділі Templates підключіть Linux by Zabbix agent (варіант з пасивним опитуванням; Linux by Zabbix agent active використовує push-модель агента). Натисніть Save.
Протягом однієї хвилини у рядку хоста з'явиться зелений маркер ZBX, а метрики з'являться у розділі Monitoring → Latest data. Червоний маркер ZBX означає, що сервер не може зв'язатися з агентом — це помилка зв'язку, яку розглядається нижче, а не помилка виконання цього кроку.
Step 10 — Один корисний тригер та email-сповіщення
Шаблон 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])>90vfs.fs.dependent.size[/,pused] — це елемент даних (item) відсотка використання, який створюється шаблоном через filesystem discovery для кореневої файлової системи (шаблон 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 media types для 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 або помилку бази даних. На етапі роботи з DB у майстрі помилка 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-socket, вказана в інструкціях для 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" означає, що фаєрвол блокує порт 10050. Помилка Received empty response from Zabbix Agent. Assuming that agent dropped connection because of access permissions. означає, що агент доступний, але в рядку Server= відсутня IP-адреса Zabbix server — додайте її та перезапустіть агент.
Стандартна сторінка привітання 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 збігався з сокетом запущеного пулу.
Backups, upgrades, and TLS
База даних містить усю історію, тому створюйте її резервні копії за розкладом за допомогою mysqldump і зберігайте дамп на іншому пристрої:
mysqldump --single-transaction zabbix | gzip > zabbix-$(date +%F).sql.gzКонфігураційні файли /etc/zabbix мають невеликий розмір і їх також варто зберігати, але їх можна відновити заново; дані — ні. Процес відновлення зворотний: створіть базу даних, імпортуйте дамп і вкажіть шлях до нього в конфігурації.
Оновлення в межах версії 7.0 — це звичайні запуски apt update && apt upgrade; сервер застосовує міграції схеми під час наступного запуску, тому оновіть пакети та перезапустіть zabbix-server. Перехід на наступну мажорну версію є свідомим кроком — прочитайте примітки до оновлення, спочатку зробіть дамп бази даних і враховуйте, що зміни схеми є незворотними. Саме через такі незворотні зміни варто використовувати LTS-версії та залишатися на них.
Не залишайте фронтенд на звичайному HTTP. Як тільки DNS буде спрямовано на сервер, встановіть сертифікат за допомогою Certbot and Let's Encrypt on nginx for Ubuntu 24.04, що оновить server block для прослуховування порту 443 та перенаправлення з 80. Поки ви захищаєте сервер, який використовується для моніторингу інших серверів, обмежте доступ до SSH за допомогою fail2ban banning brute-force SSH attempts. Логін для моніторингу не повинен передаватися у відкритому вигляді, а його вхідні двері не мають бути відкриті для підбору паролів.
FAQ
Чи потрібен мені Zabbix agent, чи можна здійснювати моніторинг без нього?
Обидва варіанти працюють. Agent (agent2) надає розширені метрики для кожного хоста — CPU, memory, disks, processes, services, log files — і є стандартним вибором для серверів під вашим контролем. Agentless monitoring підходить для пристроїв, на які неможливо встановити програмне забезпечення: SNMP для switches та printers, ICMP ping для перевірки доступності, HTTP checks для endpoints, IPMI для перевірки стану hardware. У більшості реальних розгортань ці методи комбінують.
Чому frontend повідомляє, що Zabbix server не запущено?
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 all-in-one сервера?
Для одного вузла, що моніторить кілька хостів, реальним мінімумом є 2 GB, а 4 GB буде достатньо після додавання кількох десятків хостів; пам'ять переважно витрачається на database cache та pollers сервера. VPS з 1 GB працюватиме, але бази даних не вистачатиме ресурсів у міру зростання історії. Якщо у вас понад сто хостів, винесіть базу даних на окремий сервер і налаштуйте її buffer pool замість додавання RAM в одну машину.
Чи не занадто складним є Zabbix для кількох серверів?
Можливо. Якщо вам потрібно лише знати "чи працює пристрій?" і мати сторінку для спільного доступу, легший інструмент на кшталт Uptime Kuma для моніторингу доступності та статусу налаштувати швидше, а дані в ньому легше сприймати. Обирайте Zabbix, якщо вам потрібні пороги (thresholds) для кожної метрики, історичні графіки, шаблони хостів та правила ескалації — функції, які простий pinger не може забезпечити для великої кількості пристроїв.