Установка Zabbix на Ubuntu Server: сервер, PostgreSQL, веб-интерфейс и агент
Разворачиваем систему мониторинга Zabbix на Ubuntu Server 24.04: официальный репозиторий, база PostgreSQL, фронтенд на nginx, первый вход и подключение агентов. Отдельно — почему zabbix-server не стартует после установки и как читать его лог, когда мониторинг сам требует диагностики.
Zabbix — система мониторинга, которая собирает метрики с серверов, сетевого оборудования и приложений, строит графики и шлёт оповещения. Устанавливается из официального репозитория и состоит из четырёх частей: сервер, база, веб-интерфейс и агенты на наблюдаемых машинах. Разбираем развёртывание на Ubuntu Server 24.04 LTS.
Что и куда ставится
| Компонент | Роль |
|---|---|
zabbix-server-pgsql |
Сервер: собирает и обрабатывает метрики |
| PostgreSQL | Хранит конфигурацию и историю метрик |
zabbix-frontend-php + nginx |
Веб-интерфейс |
zabbix-agent2 |
Агент на наблюдаемой машине, включая сам сервер |
Для стенда всё ставится на одну машину. Для продакшена базу выносят на отдельный сервер: история метрик растёт быстро и создаёт заметную дисковую нагрузку.
Ориентир по ресурсам: для мониторинга до 100 узлов достаточно 2 ядер и 4 ГБ памяти, но место под базу закладывайте с запасом — при частом опросе история за год легко занимает десятки гигабайт.
Подключаем репозиторий Zabbix
В архиве Ubuntu есть свой пакет zabbix, но он отстаёт на версии. Официальный репозиторий даёт актуальный LTS-релиз Zabbix и обновляется вместе с системой.
sudo apt update
sudo apt install -y wget
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb
sudo apt update
Номер версии в имени файла меняется — актуальную ссылку берут на zabbix.com/download, выбрав в конструкторе свою версию Ubuntu, базу и веб-сервер. Если ссылка отдаёт 404, значит имя пакета обновилось.
Ставим компоненты:
sudo apt install -y zabbix-server-pgsql zabbix-frontend-php \
php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
Пакет zabbix-sql-scripts содержит схему базы — она понадобится на следующем шаге.
Создаём базу
sudo -u postgres psql
CREATE ROLE zabbix WITH LOGIN PASSWORD 'СильныйПароль';
CREATE DATABASE zabbix OWNER zabbix;
\q
Импортируем схему и начальные данные. Файл поставляется сжатым, поэтому распаковка идёт на лету:
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
Импорт занимает от нескольких секунд до пары минут. Если команда падает с Peer authentication failed, значит нужно правило в pg_hba.conf — механика разобрана в статье про PostgreSQL.
Проверяем, что таблицы создались:
sudo -u zabbix psql zabbix -c "\dt" | head -20
Настраиваем сервер
Правим /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=СильныйПароль
Файл содержит пароль в открытом виде, поэтому права на него должны быть закрытыми:
sudo chmod 640 /etc/zabbix/zabbix_server.conf
sudo chown root:zabbix /etc/zabbix/zabbix_server.conf
Параметры, которые стоит подстроить сразу под размер инсталляции:
StartPollers=10 # число процессов опроса
CacheSize=64M # кэш конфигурации
HistoryStorageDateIndex=1
Timeout=10 # таймаут опроса, секунд
LogSlowQueries=3000 # логировать запросы дольше 3 секунд
Запускаем сервер и агент:
sudo systemctl restart zabbix-server zabbix-agent2
sudo systemctl enable zabbix-server zabbix-agent2
systemctl is-active zabbix-server
Если сервер не поднялся — это штатная ситуация на первом запуске, причина почти всегда в базе. Смотрим лог:
sudo tail -50 /var/log/zabbix/zabbix_server.log
Типичные строки и что они означают:
database is down: reconnecting— неверный пароль или БД не принимает подключение;cannot open database— база не создана или имя не совпадает;the database does not match Zabbix database schema— не импортирована схема изzabbix-sql-scripts.
Настраиваем веб-интерфейс
Пакет zabbix-nginx-conf кладёт готовый конфиг в /etc/zabbix/nginx.conf. Раскомментируем в нём порт и имя сервера:
listen 8080;
server_name zabbix.example.com;
Порт 8080 удобен, если на 80-м уже работает другой сайт. Если Zabbix — единственный сервис, ставьте 80.
sudo systemctl restart nginx php8.3-fpm
sudo systemctl enable nginx php8.3-fpm
Открываем порт в фаерволе, ограничив доступ доверенной сетью:
sudo ufw allow from 192.168.1.0/24 to any port 8080 proto tcp
Веб-интерфейс мониторинга не стоит выставлять в открытый интернет: он показывает всю топологию инфраструктуры. Если доступ снаружи всё же нужен, поставьте перед ним nginx как reverse proxy с TLS от Let's Encrypt и ограничьте доступ по IP или базовой авторизацией. Про правила фаервола — в статье про UFW.
Первый вход
Открываем http://адрес-сервера:8080 — запустится мастер настройки. В нём указываем параметры подключения к базе (те же, что в конфиге сервера), часовой пояс и название инсталляции.
Учётные данные по умолчанию:
Пользователь: Admin
Пароль: zabbix
Смените пароль сразу — эта пара известна всем и является первой, которую пробуют при сканировании. Меняется в «Users → Users → Admin».
Мастер сохраняет конфигурацию в /etc/zabbix/web/zabbix.conf.php. Если что-то указали неверно, файл можно отредактировать руками или удалить и пройти мастер заново.
Ставим агент на наблюдаемые машины
Агент собирает метрики и передаёт их серверу. На самом сервере Zabbix он уже установлен, на остальных машинах ставится отдельно — репозиторий подключается так же, как выше:
sudo apt install -y zabbix-agent2
Правим /etc/zabbix/zabbix_agent2.conf:
Server=192.168.1.10
ServerActive=192.168.1.10
Hostname=web-01
Server — адрес, с которого разрешены пассивные проверки, ServerActive — куда агент сам отправляет данные, Hostname должен совпадать с именем узла, заведённым в интерфейсе.
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
На наблюдаемой машине открываем порт агента только для сервера мониторинга:
sudo ufw allow from 192.168.1.10 to any port 10050 proto tcp
Проверить связь с сервера мониторинга:
sudo apt install -y zabbix-get
zabbix_get -s 192.168.1.20 -k agent.ping
Ответ 1 означает, что агент доступен и отвечает. Ошибка соединения — смотрите фаервол и параметр Server в конфиге агента.
Дальше узел добавляют в веб-интерфейсе: «Data collection → Hosts → Create host», указывают адрес и подключают шаблон Linux by Zabbix agent — он сразу даёт метрики по процессору, памяти, дискам и сетевым интерфейсам.
Обслуживание
Данные Zabbix растут быстрее, чем ожидаешь. Смотреть размер базы:
sudo -u postgres psql -c "SELECT pg_size_pretty(pg_database_size('zabbix'));"
Глубину хранения задают в настройках элементов данных: история (history) и динамика изменений (trends). Уменьшение истории с 90 до 7 дней при сохранении трендов на год радикально сокращает объём почти без потери пользы — детальные значения месячной давности редко кому нужны.
Логи компонентов:
sudo tail -f /var/log/zabbix/zabbix_server.log
sudo tail -f /var/log/zabbix/zabbix_agent2.log
sudo journalctl -u zabbix-server -f
Разбор журнала systemd — в шпаргалке по journalctl.
Бэкап — база плюс конфиги:
sudo -u postgres pg_dump -Fc zabbix > /backup/zabbix-$(date +%F).dump
sudo tar czf /backup/zabbix-etc-$(date +%F).tar.gz /etc/zabbix
Регулярность обеспечивает cron, вывоз копий — rsync.
Частые вопросы
Почему zabbix-server не запускается после установки?
Почти всегда причина в базе. Смотрите /var/log/zabbix/zabbix_server.log: database is down означает неверный пароль или недоступную БД, а does not match Zabbix database schema — что схема не импортирована.
Схему импортируют командой zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix из пакета zabbix-sql-scripts.
Какие логин и пароль у Zabbix по умолчанию?
Admin и zabbix, с заглавной буквы в имени пользователя. Эта пара одинакова во всех инсталляциях, поэтому её меняют сразу после первого входа в разделе «Users».
Веб-интерфейс при этом не стоит открывать в интернет: он раскрывает состав и топологию инфраструктуры.
PostgreSQL или MySQL для Zabbix?
Обе базы поддерживаются официально. PostgreSQL предпочтительнее на больших инсталляциях, особенно в связке с TimescaleDB — она заметно ускоряет работу с историей метрик.
Для небольшого мониторинга разницы почти нет, берите ту базу, которую лучше знаете и уже умеете бэкапить.
Как проверить, что агент доступен серверу?
С сервера мониторинга выполните zabbix_get -s адрес_агента -k agent.ping из пакета zabbix-get. Ответ 1 означает, что агент отвечает.
Если соединения нет, проверьте, что порт 10050 открыт для адреса сервера и что в zabbix_agent2.conf параметр Server содержит этот адрес.
Сколько места занимает база Zabbix?
Зависит от числа метрик и частоты опроса. Ориентир: сотня узлов со стандартным шаблоном и опросом раз в минуту даёт порядка нескольких десятков гигабайт в год.
Основной объём приходится на детальную историю. Сократите её хранение до 7–14 дней, оставив тренды на год, — размер базы упадёт в разы.
Что запомнить
- Ставьте из официального репозитория Zabbix: в архиве Ubuntu версия отстаёт.
- Схему базы нужно импортировать вручную из
zabbix-sql-scripts— без этого сервер не стартует. - Пароль базы лежит в
zabbix_server.confоткрытым текстом: права на файл должны быть 640, владелецroot:zabbix. - Пара
Admin/zabbixменяется сразу после первого входа, а сам интерфейс не выставляется в интернет. - Глубина хранения истории — главный фактор размера базы; 7–14 дней истории плюс годовые тренды покрывают большинство задач.