Назад к статьям

Установка Zabbix 8.0 LTS на Ubuntu Server 26 (Nginx + PostgreSQL)

AdminGuide ·
Установка Zabbix 8.0 LTS на Ubuntu Server 26 (Nginx + PostgreSQL)

Установка Zabbix 8 начинается с выбора одного из множества доступных вариантов. Можно ставить на deb-based или rpm-based linux, можно с использованием фронта на apache или nginx. Можно с использованием СУБД PostgreSQL или каких-нибудь других. При любом раскладе результат должен быть один, правильный и долгосрочный. В данной статье будет рассматриваться установка Zabbix 8.0 LTS + Nginx + PostgreSQL на Ubuntu Server 26.

Почему Ubuntu? Потому что Ubuntu - это мейнстрим, для неё куча статей в интернете, 99% проблем разобраны на атомарном уровне. Она легко ставится, у неё большое комьюнити. Она является стандартом современных линуксов. Тот же WSL в Windows - это безбожно оскаплённая, но всё же Ubuntu (мы не рассматриваем Windows в этой статье и тем более WSL, это лишь пример). Всё вышеперечисленное делает Ubuntu идеальным кандидатом для обучения. Поэтому рассматривать установку Zabbix мы будем исключительно на базе актуальной версии Ubuntu.

Установка Zabbix 8, с чего начать?
Установка Zabbix 8, с чего начать?
Zabbix 8, что выбрать? Как ставить?
Zabbix 8, что выбрать? Как ставить?

Почему Nginx? Потому что, как ни крути, он тоже является стандартом. Если развиваться дальше, в различные готовые решения типа разношёрстных образов Docker, они в большинстве своём так же базируются вокруг Nginx. Развиваясь дальше в девопса(псиню), вы доберётесь до Kubernetes, там, в зависимости от того, насколько старый кластер, вы наткнётесь на Nginx Ingress или же, если новый, то Nginx Gateway. Да, возможно, там будет и какая-то экзотика типа k3s+traefik, но в общем и целом Nginx такой же индустриальный стандарт.

Почему PostgreSQL? PostgreSQL лучше держит нагрузку, подобную той, что даёт Zabbix на больших объёмах. Поддерживает TimescaleDB, параллельные запросы. PostgreSQL идеальный выбор для Zabbix, несмотря на то что Zabbix поддерживает ряд других СУБД.

Почему пакеты, а не Docker? Потому что наша цель изучить процесс установки заббикса, а не Docker. И не поиск готового compose или написание своего и это вот всё. Плюс заббикс работающий очень требователен к ресурсам и любой оверхед, хоть и не значительно, но отъедающий ресурсы, если вы планируете высоконагруженную систему мониторинга, не очень желателен. Хотя мы, конечно же, рассмотрим развёртывание заббикса в Docker в будущем

Полезные ссылки

Что такое Zabbix?

Краткое описание Zabbix и его возможностей

Читать

Что нового в Zabbix 8?

Обзор возможностей грядущих в Zabbix 8

Читать

Подготовка и требования

На данный момент процесс описывается на основе PRE-RELEASE, если после релиза что-то в процессе установки изменится, статья будет актуализирована.

Используемые параметры ВМ:

  • 4 vCPU

  • 4GB RAM

  • 10GB SSD

Для тестов этих параметров хватит за глаза, для маленького начального прода на 10-100 хостов мониторящихся шаблоном Linux by Zabbix Agent 2, я бы накинул оперативы +4GB и диска в зависимости от того сколько планируется хранить данные.

Скачиваем пакет Zabbix Release

Переходим в /tmp и скачиваем пакет, который добавит нам в систему репозитории Zabbix 8й версии, и проверяем, что он скачался:

cd /tmp
wget https://repo.zabbix.com/zabbix/8.0/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_8.0+ubuntu26.04_all.deb
Скачиваем Zabbix 8 Release
Скачиваем Zabbix 8 Release

Пакет Zabbix Release

Этот пакет не устанавливает сам Zabbix, единственная его цель добавить нам в папку /etc/apt/sources.list.d/ репозитории Zabbix выбранной нами версии.

Устанавливаем скачанный пакет

sudo apt install ./zabbix-release_latest_8.0+ubuntu26.04_all.deb

Для того чтобы APT понял, что мы хотим установить не какой-то пакет из репозитория, а именно скачанный локально пакет, перед названием файла обязательно указываем ./ . В противном случае APT полезет искать в репозиториях пакет, 1в1 называющийся как имя файла, которое мы ему передаём.

Конструкция ./ означает "здесь и сейчас, в той папке, в которой я нахожусь, использовать файл zabbix-release_latest_8.0+ubuntu26.04_all.deb". Консоль конструкцию ./ интерпретирует аналогично результату команды pwd, которая возвращает полный путь до папки, в которой в момент её применения находится текущая сессия.

Обновляем APT кеш

sudo apt update

Устанавливаем пакеты

sudo apt install postgresql zabbix-server-pgsql zabbix-frontend-php php8.5-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
Zabbix 8 - Устанавливаем пакеты
Zabbix 8 - Устанавливаем пакеты

Создаём пользователя

sudo -u postgres createuser --pwprompt zabbix

Данная команда с помощью sudo -u postgres от имени пользователя postgres создаст в PostgreSQL пользователя с логином zabbix и попросит интерактивно ввести пароль для него. Ввиду частых ошибок на данном этапе стоит отметить, что это не пользователь zabbix, с помощью которого вы будете авторизовываться в веб-интерфейсе. Это пользователь PostgreSQL, с помощью которого zabbix-server и zabbix-frontend будут авторизовываться в PostgreSQL.

Zabbix 8 - Создаём пользователя в PostgreSQL
Zabbix 8 - Создаём пользователя в PostgreSQL

Создаём базу данных

sudo -u postgres createdb -O zabbix zabbix

Данная команда, аналогично вышеуказанной, от пользователя postgres выполнит createdb -O zabbix zabbix, тем самым создав базу данных с именем zabbix, владельцем которой будет пользователь с именем zabbix

Импортируем начальную схему Zabbix в PostgreSQL

zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Когда мы устанавливаем пакет zabbix-sql-scripts, он не ставит и не запускает нам какой-либо сервис, цель этого пакета скачать в папку /usr/share/zabbix/ набор различных SQL скриптов. Один из этих SQL скриптов мы как раз и используем, чтобы импортировать в PostgreSQL первичные данные, необходимые для работы Zabbix.

Множество записей INSERT, CREATE, ALTER и в конце мы ожидаем COMMIT

Zabbix 8 - Результат успешного импорта схемы
Zabbix 8 - Результат успешного импорта схемы

Настраиваем подключение Zabbix Server к PostgreSQL

Указываем в файле /etc/zabbix/zabbix_server.conf пароль от пользователя PostgreSQL, созданного ранее

nano /etc/zabbix/zabbix_server.conf
Zabbix Server 8 - Настройка подключения к БД
Zabbix Server 8 - Настройка подключения к БД

Находим строку DBPassword= . Можно воспользоваться комбинацией клавиш Ctrl+W.

Перезапускаем все сервисы

systemctl restart zabbix-server zabbix-agent2 nginx php8.5-fpm
Zabbix Server здорового человека
Zabbix Server здорового человека

Именно так выглядит работающий демон Zabbix Server, вы должны увидеть кучу различных алертеров, синкеров, воркеров и прочего. Если пишет просто статус active (running), но нет кучи подпроцессов, значит, где-то допущена ошибка и нужно смотреть логи в /var/log/zabbix/zabbix_server.log

Включаем для них же автозапуск

bash
systemctl enable zabbix-server zabbix-agent2 nginx php8.5-fpm
Zabbix 8 - Включаем автозапуск сервисов
Zabbix 8 - Включаем автозапуск сервисов

Настраиваем доступ в веб-интерфейс

Настройки веб сервера можно отредактировать через симлинк в /etc/zabbix/nginx.conf

bash
nano /etc/zabbix/nginx.conf
Zabbix 8 - Дефолтный конфиг Nginx
Zabbix 8 - Дефолтный конфиг Nginx

Для самого минимального варианта нам достаточно раскомментировать первые 2 строки и заменить example.com в server_name на default (мы же предполагаем, что ничего, кроме Zabbix, на этом хосте не крутится).

default в конфиге nginx определяют server как стандартный для всех запросов, для которых не задан отдельный server с уникальным именем.

Настройка Nginx через default
Настройка Nginx через default

После внесения правок в файл сохраняем его через Ctrl+O и закрываем через Ctrl+X.

Применяем правки:

bash
sudo nginx -t # проверяем, что не допустили каких-то явных опечаток
sudo systemctl restart nginx # перезапускаем nginx
systemctl status nginx # проверяем, что nginx запустился
Перезапускаем Nginx
Перезапускаем Nginx

В описанном варианте с 8080 и default, при ip сервера 192.168.23.94, фронт заббикса будет доступен по адресу http://192.168.23.94:8080

Подключаемся к Zabbix Frontend на IP и порт в случае с default
Подключаемся к Zabbix Frontend на IP и порт в случае с default

Если же у вас есть DNS сервер, где вы можете настроить A запись, то вместо default можно указать DNS имя, которое вам нужно, и порт заменить на 80.

Настройка Nginx через DNS запись
Настройка Nginx через DNS запись

В моём случае DNS А-запись zabbix.adminguide.tlp будет указывать на IP 192.168.23.94

Подключаемся к Zabbix Frontend через DNS имя в случае с DNS именем и 80м портом
Подключаемся к Zabbix Frontend через DNS имя в случае с DNS именем и 80м портом

Настраиваем фронт Zabbix

Выбор языка

Дефолтный язык выбираем English, нажимаем Next

Другие локали мы даже не будем рассматривать, потому что, если вы будете задавать инженерам мониторинга вопросы, опираясь на терминологию русского языка, в лучшем случае они не поймут, о чём вообще идёт речь.

Проверяем соответствие требованиям

Zabbix 8 Frontend - Check of pre-requisites
Zabbix 8 Frontend - Check of pre-requisites

Если вы ставите фронт Zabbix не на какой-то самый дешёвый\бесплатный вэбхостинг, а хотябы на захудалую вмку, у вас все пункты будут OK. Если же у вас что-то не ОК, вам придётся разбираться, как это привести в норму и возможно ли это вообще.

Затем настраиваем подключение фронта к БД

Важно отметить, что этот этап настраивает исключительно подключение вэб интерфейса Zabbix к PostgreSQL. Это никак не влияет и не имеет отношения к подключению Zabbix Server к PostgreSQL.

Так как мы в самом начале установили и все пакеты Zabbix и PostgreSQL на один хост, мы оставляем Database host со значением по умолчанию (localhost). Если бы PostgreSQL был установлен где-то на соседней вмке, нам необходимо было бы указать IP адрес той вмки вместо localhost

Database port оставляем 0. В данном конкретном случае 0 - означает "использовать порт по умолчанию". PostgreSQL по умолчанию использует порт 5432, его фронт и будет использовать, если мы оставим 0.

  1. Database name - если до этого этапа вы дошли по инструкции этой или официальной, у вас база так и называется zabbix

  2. Database user - аналогично zabbix

  3. Database password - указываем тот же, что мы указывали при создании пользователя. Его же мы ранее указывали в zabbix_server.conf

И нажимаем Next step

Если что-то было указано неправильно, появится сообщение Cannot connect to database . Если же всё ок, нас перекинет на следующий экран настройки

Zabbix 8 Frontend - Configure DB connection
Zabbix 8 Frontend - Configure DB connection

Задаём имя сервера, часовой пояс, тему

Всё это можно изменить в будущем

Zabbix 8 Frontend - Settings
Zabbix 8 Frontend - Settings

Далее проверяем саммари

И нажимаем Next step

Zabbix 8 Frontend - Pre-installation summary
Zabbix 8 Frontend - Pre-installation summary

Настройка фронта завершена

Нажимаем Finish

Zabbix 8 Frontend - Install
Zabbix 8 Frontend - Install

Авторизуемся

Логин пароль по умолчанию: Admin \ zabbix . В связи с тем, что это важный момент при первом знакомстве с Zabbix, отдельно отмечу, что Admin именно с большой буквы, zabbix именно с маленькой

Zabbix 8 Frontend - логин Admin , пароль zabbix
Zabbix 8 Frontend - логин Admin , пароль zabbix

Итак, добро пожаловать в святая святых - админку Zabbix 8.0

Добро пожаловать в дивный новый мир мониторинга!
Добро пожаловать в дивный новый мир мониторинга!

Все настройки фронта можно найти в файле /etc/zabbix/web/zabbix.conf.php

Шпаргалка: установка Zabbix 8.0 LTS одним списком

Все команды из статьи по порядку. Пригодится, если ставите заббикс уже во второй раз и подробности не нужны. Обратите внимание, что на шагах 8 и 9 придётся отвлечься на редактирование конфигов, вслепую весь блок целиком не выполнится.

bash
# 1. Скачиваем пакет, который добавит в систему репозитории Zabbix 8.0
cd /tmp
wget https://repo.zabbix.com/zabbix/8.0/release/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_8.0+ubuntu26.04_all.deb

# 2. Устанавливаем скачанный пакет, ./ перед именем файла обязательно
sudo apt install ./zabbix-release_latest_8.0+ubuntu26.04_all.deb

# 3. Обновляем кеш APT, чтобы он увидел новые репозитории
sudo apt update

# 4. Ставим PostgreSQL, Zabbix Server, фронт, конфиг для Nginx и агент
sudo apt install postgresql zabbix-server-pgsql zabbix-frontend-php php8.5-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2

# 5. Создаём пользователя PostgreSQL, пароль запросит интерактивно
sudo -u postgres createuser --pwprompt zabbix

# 6. Создаём базу данных zabbix, владелец - пользователь zabbix
sudo -u postgres createdb -O zabbix zabbix

# 7. Импортируем начальную схему, в конце ожидаем COMMIT
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

# 8. Прописываем в DBPassword= пароль от пользователя PostgreSQL из шага 5
sudo nano /etc/zabbix/zabbix_server.conf

# 9. Раскомментируем первые 2 строки, меняем example.com на default, проверяем синтаксис
sudo nano /etc/zabbix/nginx.conf
sudo nginx -t

# 10. Перезапускаем сервисы и ставим их в автозапуск
sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.5-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.5-fpm
sudo systemctl status zabbix-server nginx

Дальше идём в браузер на IP сервера с портом 8080, проходим визард настройки фронта и логинимся под Admin / zabbix.

Полезные пути и значения по умолчанию

Конфиг Zabbix Server /etc/zabbix/zabbix_server.conf
Конфиг Nginx для Zabbix /etc/zabbix/nginx.conf
Настройки веб-интерфейса, заданные визардом /etc/zabbix/web/zabbix.conf.php
Лог Zabbix Server /var/log/zabbix/zabbix_server.log
SQL-скрипты Zabbix /usr/share/zabbix/sql-scripts/
Порт PostgreSQL 5432
Логин и пароль веб-интерфейса Admin / zabbix

Конфигуратор для установки Zabbix из пакетов под огромное количество ситуаций можно найти по этой ссылке

FAQ по установке Zabbix 8.0

Zabbix Server в статусе active (running), но мониторинг не работает

У живого заббикс сервера в systemctl status видно кучу подпроцессов: алертеры, синкеры, поллеры, воркеры и прочее. Если статус active (running), а подпроцессов нет, значит, сервер стартовал и сразу упёрся в ошибку. Смотрим /var/log/zabbix/zabbix_server.log, в большинстве случаев там будет проблема с подключением к базе: не тот пароль в DBPassword или не импортированная схема.

Какой логин и пароль у Zabbix 8 по умолчанию

Admin / zabbix. Admin именно с большой буквы, zabbix именно с маленькой. Пароль стоит сменить сразу после первого входа, в настройках пользователя.

На каком порту открывается веб-интерфейс Zabbix

Зависит от того, что вы раскомментировали в /etc/zabbix/nginx.conf. В варианте из статьи это listen 8080 и server_name default, то есть фронт доступен по http://IP-сервера:8080. Если есть DNS сервер, меняем listen на 80, а в server_name пишем своё DNS имя, и заббикс открывается по заданному имени, например http://zabbix.mydev.lan.

Чем пользователь zabbix в PostgreSQL отличается от Admin в веб-интерфейсе

Это две никак не связанные сущности, и путают их чаще всего остального. Пользователь zabbix - это учётка внутри PostgreSQL, которой zabbix-server и фронт подключаются к базе данных. Её пароль лежит в zabbix_server.conf и в zabbix.conf.php, руками её нигде вводить не нужно. Admin - это учётка внутри самого Zabbix, ей вы логинитесь в браузере, и к PostgreSQL она отношения не имеет.

При настройке фронта появляется Cannot connect to database

Фронт не смог подключиться к PostgreSQL с теми данными, которые вы ввели. Проверяем по порядку: Database name - zabbix, Database user - zabbix, Database password - тот же, что задавали в createuser --pwprompt и прописывали в zabbix_server.conf. Database host - localhost, Database port - 0, что означает порт по умолчанию, то есть 5432.

Обязательно ли ставить PostgreSQL на тот же сервер, что и Zabbix

Нет. В статье всё поставлено на один хост, поэтому Database host остаётся localhost. Если база живёт на отдельной вмке, её IP нужно указать в двух местах: в визарде фронта и в параметре DBHost в zabbix_server.conf. Сам PostgreSQL при этом должен слушать не только localhost и пускать к себе заббикс по сети.

Можно ли поставить Zabbix 8 на MySQL или MariaDB

Можно, Zabbix поддерживает несколько СУБД, но набор пакетов и SQL-скрипт для импорта схемы будут другими: вместо zabbix-server-pgsql ставится zabbix-server-mysql, вместо php8.5-pgsql - php8.5-mysql. Для мониторинга под нагрузкой мы всё же выбираем PostgreSQL, он лучше держит профиль нагрузки, который даёт Zabbix, и умеет TimescaleDB.

Зачем перед именем файла нужно ./ в apt install

Конструкция ./ говорит APT, что установить нужно файл из текущей папки. Без неё APT пойдёт искать в подключённых репозиториях пакет с именем zabbix-release_latest_8.0+ubuntu26.04_all.deb, не найдёт его и вернёт ошибку.

Ошибся в визарде настройки фронта, как пройти его заново

Все параметры, которые вы задали в визарде, складываются в файл /etc/zabbix/web/zabbix.conf.php. Его можно поправить руками, а можно просто удалить, и тогда при следующем открытии веб-интерфейса визард запустится с самого начала.