Установка Zabbix 7.0 LTS на Ubuntu 24.04
Пошаговое руководство по установке Zabbix 7.0 LTS на Ubuntu 24.04. Разбор настройки MariaDB, конфигурации nginx и устранение ошибок при импорте схемы базы данных сервера.
Что вы создаете
Один 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, он не выбирает конкретный минорный релиз: apt затем устанавливает те пакеты 7.0.x, которые есть в репозитории, что гарантирует использование самой свежей версии. На странице также могут быть перечислены пронумерованные пакеты релиза 7.0-N, но этот номер относится к версии настройки репозитория, а не к сборке Zabbix. Все остальные команды здесь стабильны для всей линейки 7.0.
Размер ресурсов, порты и предварительные требования
Предполагается использование чистой VPS на базе Ubuntu 24.04 KVM с доступом root или sudo. Будьте реалистичны в оценке ресурсов: 2 ГБ ОЗУ и два vCPU — это минимально допустимый уровень для сервера, базы данных, Nginx и PHP на одной машине при мониторинге нескольких узлов. Система с 1 ГБ ОЗУ загрузится, но по мере накопления истории базе данных будет не хватать памяти. Планируйте 4 ГБ при мониторинге нескольких десятков узлов, а при превышении сотни выносите базу данных на отдельный сервер. Объем дискового пространства зависит от количества собираемых элементов и срока хранения истории; для начала выделите несколько гигабайт, а встроенный механизм очистки (housekeeper) будет удалять старые данные согласно заданным вами периодам хранения.
Порты: 80 и 443 для фронтенда, доступные публично или ограниченные вашим IP-адресом. Сервер ожидает входящие данные от активных агентов на порту TCP 10051, а каждый агент слушает порт TCP 10050 для опроса со стороны сервера. Открывайте только те порты, которые вы планируете использовать, если перед сервером установлен межсетевой экран. Рекомендуется создать DNS A-запись для фронтенда, так как вам потребуется полноценный сертификат. 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, установка сервера, фронтенда и агента
Установите сервер, собранный с поддержкой MySQL, PHP-фронтенд, конфигурацию nginx, файлы SQL-схемы и 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 mariadbШаг 3, создание базы данных с правильной кодировкой
Zabbix требователен к параметрам сортировки (collation): он поддерживает только utf8mb4 с utf8mb4_bin или более старую utf8 (она же utf8mb3) с utf8_bin. Документация настоятельно рекомендует 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, импорт схемы (шаг, который часто пропускают)
Это самая частая причина, по которой свежеустановленный фронтенд не загружается: созданная вами база данных пуста. Загрузите в неё схему, поставляемую в 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 для фронтенда
Пакет 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 еще не настроен. Учтите два нюанса. Стандартная страница приветствия 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 запускает свой интерфейс под управлением того же мастера. Убедитесь, что сервер запущен и продолжает работу:
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. Пройдите следующие этапы:
- Welcome (Приветствие), выберите язык.
- Check of pre-requisites (Проверка предварительных требований), каждая строка должна иметь статус OK; пакетный пул
/etc/zabbix/php-fpm.confуже содержит необходимые для Zabbix лимиты PHP. - Configure DB connection (Настройка подключения к БД), тип базы данных MySQL, хост
localhost, порт0(означает порт или сокет по умолчанию), имя базы данныхzabbix, пользовательzabbixи пароль из шага 3. Неверные учетные данные или отсутствие схемы проявятся именно на этом этапе. - Settings (Настройки), оставьте хост сервера Zabbix
localhost, порт10051и укажите имя установки. - 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.
Шаг 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 использует активную отправку данных агентом). Сохраните изменения.
В течение минуты в строке хоста появится зелёный индикатор ZBX, а метрики начнут поступать в раздел Monitoring → Latest data. Красный индикатор ZBX означает, что сервер не может связаться с агентом. Это режим сбоя, который рассматривается ниже, а не ошибка выполнения данного шага.
Шаг 10, полезный триггер и уведомление по электронной почте
Шаблон Linux by Zabbix agent уже содержит триггеры для высокой нагрузки на CPU, нехватки памяти и переполнения дисков, поэтому уведомления появятся сразу после подключения шаблона. Чтобы понять, как они устроены, добавьте свой: откройте хост, перейдите в Триггеры → Создать триггер, назовите его Root filesystem over 90% full on {HOST.NAME}, установите важность Высокая и используйте следующее выражение:
last(/zabbix-server/vfs.fs.dependent.size[/,pused])>90vfs.fs.dependent.size[/,pused] — это элемент данных для процентного использования, который создается при обнаружении файловых систем шаблоном (Linux-шаблон версии 7.0 собирает vfs.fs.get один раз и вычисляет зависимые элементы для каждой точки монтирования), поэтому триггер сработает без дополнительного сбора данных. Сохраните его.
Триггер лишь меняет цвет строки на панели мониторинга, пока действие (action) не уведомит кого-либо. В разделе Оповещения → Способы оповещения → Email укажите SMTP-сервер, порт, адрес отправителя, тип защиты соединения (обычно STARTTLS) и учетные данные для релея, затем используйте Тест. Ошибка на этом этапе означает, что путь к SMTP настроен неверно, еще до того, как от него зависят реальные оповещения. Укажите адрес для пользователя Admin в разделе Пользователи → Пользователи → Admin → Оповещения → Добавить и выберите уровни важности для уведомлений. Затем настройте связь в Оповещения → Действия → Действия с триггерами → Создать действие: добавьте условие, например Trigger severity >= Warning, а в разделе Операции выберите отправку пользователю Admin через Email. Сохраните и активируйте действие. Предпочитаете чаты? Zabbix 7.0 поставляется с готовыми типами оповещений через вебхуки для Slack, Discord и Telegram, но для каждого требуется настройка сервиса вместо SMTP. Например, для Telegram нужно создать бота через BotFather, вставить его токен в параметр api_token способа оповещения, а ID чата получателя указать в поле Отправить на в настройках пользователя. Следуйте README интеграции, активируйте способ оповещения, назначьте его пользователю и используйте в действии так же, как 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, который совпадает с именем хоста, создаваемым в веб-интерфейсе:
Server=10.0.0.10
ServerActive=10.0.0.10
Hostname=web-01Выполните sudo systemctl restart zabbix-agent2 и откройте TCP-порт 10050 на этом узле для доступа с сервера Zabbix. Перезапуск важен: пакет запустил агент сразу после установки с настройками из стандартного Server=127.0.0.1, а агент считывает файл конфигурации только при старте. enable --now обнаружит, что процесс уже запущен, и ничего не изменит, поэтому агент продолжит отклонять запросы от вашего сервера Zabbix. Автозапуск при загрузке уже настроен, так как пакет автоматически включил соответствующий юнит. Вернувшись в веб-интерфейс, создайте хост, чей интерфейс Agent указывает на IP-адрес этой машины, привяжите шаблон Linux, и данные начнут поступать в течение минуты.
Типичные сбои и сообщения об ошибках
В интерфейсе отображается Error connecting to database или ошибка базы данных. На этапе настройки БД в мастере установки сообщение Access denied for user 'zabbix'@'localhost' (using password: YES) означает, что пароль не совпадает с указанным на шаге 3 или скрипт GRANT не был выполнен. Если соединение с базой установлено, но интерфейс сообщает об ошибке 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. Интерфейс работает, но не может связаться с сервером. Существует три причины, перечисленные в порядке убывания вероятности. Сервис остановлен: проверьте systemctl status zabbix-server и запустите его. Сервис запущен, но не может подключиться к базе данных; в логе отображается [Z3001] connection to database 'zabbix' failed: [1045] Access denied, что указывает на неверный или пустой DBPassword. Либо интерфейс настроен на неверный сервер, адрес которого указан как хост localhost и порт 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» означает, что сетевой экран блокирует порт 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 для прослушивания порта 443 и перенаправления с 80. Поскольку вы защищаете сервер, который используется для мониторинга всех остальных ваших систем, ограничьте доступ к его SSH с помощью fail2ban для блокировки попыток подбора пароля по SSH. Учетные данные для мониторинга не должны передаваться в открытом виде, а вход в систему не должен быть доступен для автоматического подбора паролей.
FAQ
Нужно ли устанавливать Zabbix agent, или можно обойтись без него?
Возможны оба варианта. Агент (agent2) предоставляет подробные метрики хоста: CPU, память, диски, процессы, службы, файлы журналов, и является стандартным выбором для серверов, которыми вы управляете. Мониторинг без агента подходит для устройств, на которые нельзя установить ПО: 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 позволяет секционировать таблицы истории и значительно упрощает процедуру очистки данных (housekeeping), поэтому крупные площадки предпочитают именно этот вариант. Выберите одну СУБД и придерживайтесь её: миграция в будущем потребует полного экспорта и импорта данных, а не простого изменения конфигурации.
Сколько оперативной памяти нужно для сервера Zabbix «всё в одном»?
Для мониторинга нескольких хостов на одном сервере 2 GB — это реалистичный минимум, а 4 GB обеспечат комфортную работу при мониторинге нескольких десятков хостов. Память в основном расходуется на кэш базы данных и процессы-поллеры сервера. VPS с 1 GB памяти будет работать, но по мере накопления истории базе данных начнет не хватать ресурсов. При мониторинге более сотни хостов вынесите базу данных на отдельный сервер и настройте её buffer pool, вместо того чтобы просто увеличивать объем RAM на одной машине.
Не является ли Zabbix избыточным для пары серверов?
Возможно. Если вам нужно только знать, «работает ли сервер», и иметь страницу для общего доступа, более легкий инструмент, такой как Uptime Kuma для мониторинга доступности и статуса, разворачивается быстрее и нагляднее. Выбирайте Zabbix, если вам нужны пороговые значения для отдельных метрик, исторические графики, шаблоны для хостов и правила эскалации — то, чего не может дать простой пингер при работе с парком серверов.