SSD Nodes Learn
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-07-24

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

Пошаговое руководство по развертыванию Zabbix 7.0 LTS на Ubuntu 24.04. Настройка MySQL schema, nginx и agent2 без ошибок при импорте базы данных.

Что вы создаете

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

Zabbix сложнее инструментов для статус-страниц: это полноценная система временных рядов с шаблонами, триггерами, эскалацией и хранением истории. Основные трудности возникают на трех этапах, которые часто пропускают: импорт схемы базы данных, установка пароля базы данных, который считывает сервер, и раскомментирование двух строк в конфигурации nginx. Если выполнить эти шаги правильно, настройка пройдет легко. Если вам нужны только проверки доступности (up/down) и страница статуса, легкий монитор статуса Uptime Kuma справляется с этим в одном контейнере; Zabbix необходим, когда требуются пороги значений для каждой метрики и эскалация уведомлений для множества хостов.

Используйте ветку 7.0 LTS: ее сервер, фронтенд, 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 загрузится, но базе данных не хватит ресурсов по мере роста истории. При наличии более нескольких десятков хостов планируйте использовать 4 GB RAM; если хостов более ста, вынесите database на отдельный сервер. Объем диска зависит от количества собираемых объектов и срока хранения истории. Начните с нескольких гигабайт; механизм очистки (housekeeper) будет удалять старые данные согласно установленным вами окнам хранения (retention windows).

Порты: 80 и 443 для frontend (открыты для всех или ограничены вашим IP). Сервер прослушивает TCP 10051 для получения данных от активных агентов. Каждый агент прослушивает TCP 10050 для опроса сервером. Если перед системой установлен firewall, откройте только необходимые порты. Рекомендуется настроить DNS A record для frontend, так как для него потребуется настоящий сертификат. 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 предъявляет строгие требования к сопоставлению (collation): база данных должна иметь utf8mb4 с utf8mb4_bin. В противном случае процесс импорта прервется из-за ошибок внешних ключей (foreign-key errors). Откройте оболочку 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, не может создавать их при включенном бинарном логировании (binary logging). В 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' означает, что пароль или права доступа из Шага 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 server is not running" на более поздних этапах: демон запускается, не может выполнить вход и завершает работу. На экране это не отображается — информация содержится только в логах.

Шаг 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 и назначена сервером по умолчанию. Она будет обрабатывать любые запросы, имя которых не совпадает с настройками вашего домена. Удалите её, иначе будет загружаться неверная страница: 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, это означает, что и стандартный сайт, и блок 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 под управлением этого же мастера. Проверьте, что сервер запустился и работает:

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. Welcome — выберите язык.
  2. Check of pre-requisites — все пункты должны иметь статус OK; установленный пул /etc/zabbix/php-fpm.conf уже содержит необходимые для Zabbix лимиты PHP.
  3. Configure DB connection — тип базы данных MySQL, хост localhost, порт 0 (стандартный порт или сокет), имя базы данных zabbix, пользователь zabbix и пароль из Шага 3. Ошибки в учетных данных или отсутствие схемы базы данных будут обнаружены на этом этапе.
  4. Settings — оставьте хост сервера Zabbix localhost и порт 10051, а также укажите имя установки.
  5. Pre-installation summary, затем Install — мастер создаст файл /etc/zabbix/web/zabbix.conf.php.
  6. Finish — войдите под пользователем Admin (заглавная A) с паролем zabbix и немедленно смените этот пароль в разделе Users.

Если мастер сообщает об ошибке Cannot create the configuration file, это означает, что веб-пользователь не может записать /etc/zabbix/web/. Скачайте предлагаемый файл zabbix.conf.php, поместите его в указанную директорию вручную с помощью sudo и нажмите Finish.

Шаг 9 — Добавьте локальный хост и привяжите шаблон

Zabbix не осуществляет мониторинг самого себя автоматически. Перейдите в Data collection → Hosts → Create host, установите имя хоста 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 означает, что сервер не может связаться с агентом — этот тип ошибки описан ниже и не является ошибкой выполнения данного шага.

Шаг 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] — это элемент данных (item) с процентом использования, который шаблон создает для корневой файловой системы в процессе discovery (шаблон Linux в версии 7.0 собирает vfs.fs.get один раз и создает зависимые элементы для каждой точки монтирования). Таким образом, триггер сработает без дополнительного сбора данных. Сохраните изменения.

Триггер только меняет цвет строки на панели мониторинга (dashboard), пока action не отправит уведомление. Перейдите в Alerts → Media types → Email, настройте SMTP-сервер, порт, адрес отправителя, безопасность соединения (обычно STARTTLS) и учетные данные релея. Нажмите 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-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 сервера — добавьте его и перезапустите агент.

Стандартная страница приветствия 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-версии и оставаться на них.

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

FAQ

Нужен ли мне Zabbix agent или можно обойтись без него?

Доступны оба варианта. Агент (agent2) предоставляет подробные метрики хоста — CPU, память, диски, процессы, службы, лог-файлы — и является стандартным выбором для серверов под вашим управлением. Без агентного мониторинга (agentless) можно отслеживать устройства, на которые нельзя установить ПО: SNMP для коммутаторов и принтеров, ICMP ping для проверки доступности, HTTP-проверки для эндпоинтов, IPMI для контроля состояния оборудования. В реальных проектах обычно используют комбинацию обоих методов.

Почему во фронтенде указано, что Zabbix server не запущен?

Фронтенд работает, но не может связаться с активным процессом 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 будет достаточно для нескольких десятков хостов; память в основном расходуется на кэш базы данных и поллеры сервера. VPS с 1 GB может работать, но базе данных будет не хватать ресурсов по мере роста истории. Если у вас более ста хостов, вынесите базу данных на отдельный сервер и настройте ее buffer pool вместо увеличения объема RAM на одной машине.

Не будет ли Zabbix избыточным для пары серверов?

Возможно. Если вам нужно только проверять статус «up/down» и иметь страницу для совместного доступа, более легкий инструмент, такой как Uptime Kuma для мониторинга доступности и статуса, развернется быстрее и его проще читать. Выбирайте Zabbix, если вам нужны пороги (thresholds) для каждой метрики, исторические графики, шаблоны хостов и правила эскалации — функции, которые простой пингер не может предоставить для парка устройств.