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 и agent2, исправьте ошибки.

Что вы устанавливаете

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

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

Используйте ветку 7.0 LTS: версии сервера, frontend, agent2 и схемы согласованы между собой, а обновления безопасности выпускаются в течение нескольких лет. Перед копированием приведенного ниже имени файла репозитория откройте официальную страницу загрузки Zabbix. Пакет выпуска latest всегда указывает на новейший выпуск 7.0, но если вы хотите зафиксировать конкретную сборку 7.0-N, на этой странице также указано ее имя файла. Все остальные команды в этом руководстве стабильны для всей ветки 7.0.

Ресурсы, порты и предварительные требования

Используйте свежий Ubuntu 24.04 KVM VPS с доступом root или sudo. Реалистичный минимум для сервера, базы данных, nginx и PHP на одном узле, который мониторит несколько хостов, — 2 GB RAM и два vCPU. Сервер с 1 GB RAM запускается, но по мере роста истории базе данных не хватает памяти. Для нескольких десятков хостов планируйте 4 GB RAM, а при количестве хостов свыше ста перенесите базу данных на отдельный сервер. Размер диска зависит от количества собираемых элементов и срока хранения истории. Для начала выделите несколько гигабайт. Затем housekeeper удаляет старые данные согласно заданным периодам хранения.

Порты: 80 и 443 для frontend — публично или с ограничением по вашему IP-адресу. Сервер принимает данные от active agents по TCP 10051, а каждый agent использует TCP 10050 для опроса сервером. Если перед сервером установлен firewall, откройте только те порты, которые вы предоставляете извне. Для frontend желательно создать DNS A record, поскольку для него потребуется настоящий сертификат. Сервер Zabbix контролирует все остальные запущенные вами сервисы, поэтому он должен быть частью более широкой инфраструктуры самостоятельного размещения, которую стоит запустить в 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' означает, что пароль или разрешение из шага 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 еще не настроен. Учтите два момента. Стандартный сайт приветствия Ubuntu в nginx также прослушивает порт 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 запускает свой интерфейс через тот же главный процесс. Убедитесь, что сервер запустился и продолжает работать:

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) и учетные данные для ретрансляции, если они нужны. Затем нажмите 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 работает, но не может подключиться к работающему серверу. Возможны 3 причины. Сначала проверьте наиболее вероятную. Служба остановлена: проверьте systemctl status zabbix-server и запустите ее. Служба работает, но не может подключиться к своей базе данных. В журнале отображается [Z3001] connection to database 'zabbix' failed: [1045] Access denied, что означает неправильное или пустое значение DBPassword. Либо frontend обращается не к тому серверу: в /etc/zabbix/web/zabbix.conf.php сохранены хост localhost и порт 10051. В 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» возникает тайм-аут, брандмауэр отбрасывает трафик на порт 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. Это изменит блок конфигурации сервера: он начнет принимать соединения на 443 и перенаправлять соединения с 80. Пока вы защищаете сервер, который выполняет вход для мониторинга всех остальных используемых вами серверов, также ограничьте доступ к его SSH с помощью fail2ban для блокировки перебора паролей SSH. Учетные данные для входа мониторинга не должны передаваться в открытом виде, а его внешний интерфейс не должен оставаться доступным для перебора паролей.

FAQ

Нужен ли мне агент Zabbix или можно выполнять мониторинг без него?

Подходят оба варианта. Агент (agent2) предоставляет подробные метрики для каждого узла: загрузку CPU, использование памяти, состояние дисков, процессы, службы и файлы журналов. Это стандартный выбор для серверов под вашим управлением. Мониторинг без агента подходит для устройств, на которые нельзя устанавливать программное обеспечение: 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 запускается, но по мере роста истории базе данных начинает не хватать памяти. При количестве узлов более ста вынесите базу данных на отдельный сервер и настройте её buffer pool вместо простого увеличения объёма RAM на одной машине.

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

В некоторых случаях является. Если вам нужно только знать, работает ли система, и предоставить общедоступную страницу состояния, более лёгкий инструмент, например Uptime Kuma для мониторинга доступности и состояния, быстрее развернуть и проще просматривать. Выбирайте Zabbix, если нужны пороговые значения для отдельных метрик, графики за предыдущие периоды, узлы на основе шаблонов и правила эскалации. Простая система проверки доступности не предоставляет такие возможности для всего парка устройств.