Перейти к содержанию
Обсудить задачу →
Статьи и инструкции

Настройка Zabbix с нуля: сервер, агенты и первые проверки

Развёртываем новую систему мониторинга: от репозитория и БД до защищённого агента, свежих метрик и принятого уведомления.
Концептуальная реалистичная иллюстрация: подготовка сервера и сетевого подключения

Установка Zabbix заканчивается не появлением страницы входа, а получением свежих метрик и проверенным уведомлением. Пройдём путь от новой ОС до первого наблюдаемого Linux-узла, сохраняя понятные границы доступа и возможность разобраться в ошибке.

Пример рассчитан на новую Ubuntu Server 24.04 amd64, Zabbix 7.0 LTS, PostgreSQL 16 и Nginx с PHP-FPM. Это отдельный сервер мониторинга и один Linux-агент. Действующую установку, другую ОС, контейнеры и HA по этим командам не обновляют. Документация проверена 8 ноября 2026 года. Команды подготовлены по источникам и не выполнялись на стенде при написании; приведён ожидаемый результат, а не выдуманный протокол установки.

Что получится и что подготовить заранее

Схема установки: браузер через SSH-туннель, Nginx и PHP, локальная PostgreSQL и активный агент с TLS
Учебная схема одного сервера. IP-адреса и имена условные. Для production отдельно проектируют доступ, ёмкость, резервирование и мониторинг самого Zabbix.
  • Согласованная новая ВМ или сервер, административная консоль и возможность возврата.
  • DNS, синхронизация времени, доступ к официальным репозиториям и свободное место.
  • Политика сети: SSH только от администратора, TCP 10051 к серверу только от нужных агентов/proxy; PostgreSQL не публикуется наружу.
  • Защищённое хранилище паролей и отдельный секрет TLS для каждого пилотного агента.
  • Пилотные имена: сервер 192.0.2.10, агент linux-app-01. Документационные адреса замените своими.

Для небольшого пилота можно начать с 2 vCPU и 8 ГБ RAM, но это не гарантия на число серверов. Ёмкость зависит от числа элементов, интервала, истории и логов. Сверяйте требования выбранного maintenance-релиза; совместимость меняется внутри ветки.

Шаг 1. Проверьте ОС, время и доступ к серверу

cat /etc/os-release
dpkg --print-architecture
hostnamectl
timedatectl status
df -h
sudo ss -ltnp

Ожидаются Ubuntu 24.04 и amd64, корректное время, место под БД и отсутствие конфликтующего приложения. Если PostgreSQL, Nginx или Zabbix уже установлены, остановитесь и составьте отдельный план: дальнейшие шаги рассчитаны на новую систему.

До установки ограничьте входящие соединения штатным firewall/сетевой политикой. Не включайте новый firewall вслепую в единственном SSH-сеансе: сначала обеспечьте административный доступ и консоль. Не требуется публиковать 5432 или 10050 в интернет.

Шаг 2. Подключите официальный репозиторий нужной ветки

Используйте пакет репозитория именно для вашей ОС. Каталог Zabbix содержит latest-пакет ветки 7.0 для Ubuntu 24.04. Перед выполнением сверяйте официальный выбор компонентов, а не копируйте пакет от Debian или другой Ubuntu.

sudo apt update
sudo apt install wget ca-certificates
mkdir -p ~/zabbix-install
cd ~/zabbix-install
wget -O zabbix-release.deb https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
dpkg-deb -I zabbix-release.deb
sudo dpkg -i ./zabbix-release.deb
sudo apt update
apt-cache policy zabbix-server-pgsql zabbix-agent2

Проверьте происхождение и кандидатную версию 7.0.x. Ошибка подписи, DNS или сертификата требует исправления причины. Не добавляйте trusted=yes и не отключайте проверку TLS ради продолжения. Если политика требует контрольных сумм и фиксированных версий, сохраните выбранный артефакт и версии в паспорте развёртывания.

Шаг 3. Установите компоненты сервера

sudo apt install postgresql-16 postgresql-client-16 \
  zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql \
  zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
dpkg-query -W 'zabbix*' 'postgresql*' 'php8.3*'
pg_lsclusters
php -v

Это сочетание пакетов для заданного примера, а не универсальная команда для любой ОС. Смотрите план установки apt до подтверждения; Nginx и PHP-FPM также должны быть установлены зависимостями либо явно в вашей сборке. Проверьте фактическую службу FPM и конфигурацию.

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

Шаг 4. Создайте отдельную роль и пустую БД

Убедитесь, что имена zabbix ещё не заняты. Роль не должна быть суперпользователем PostgreSQL.

Пароли генерируем, а не придумываем. Создайте отдельные случайные пароли для роли БД и администратора Zabbix в корпоративном менеджере паролей. Для генерации в доверенном локальном терминале можно использовать openssl rand -hex 24: это 24 случайных байта, представленных 48 шестнадцатеричными символами. Каждый запуск создаёт новое значение; не используйте один результат для разных учётных записей. Принцип работы команды описан в документации OpenSSL.

  • Сохраните результат в защищённом хранилище с ограниченным доступом до настройки сервиса.
  • Команда выводит секрет на экран: не запускайте её в записываемом сеансе или общем журнале. При записи терминала используйте генератор менеджера паролей.
  • Пароль роли вставьте в приглашение createuser --pwprompt; тот же пароль далее нужен в DBPassword и мастере frontend. Не передавайте его аргументом shell.
  • Для администратора создайте другой пароль. Если включённая политика требует определённые классы символов, настройте генератор менеджера под эту политику: hex содержит только цифры и a–f.
sudo -u postgres psql -c '\du'
sudo -u postgres psql -c '\l'
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix -E UTF8 -T template0 zabbix
psql -h 127.0.0.1 -U zabbix -d zabbix -W \
  -c 'SELECT current_user, current_database();'

Ожидаются нужная роль и БД при TCP-подключении к loopback. Если peer/password authentication не совпадает с ожидаемой, проверьте конкретный кластер PostgreSQL и его pg_hba.conf. Не переводите все подключения в trust. Создание и требования БД описаны в руководстве.

Шаг 5. Импортируйте схему один раз и проверьте результат

Найдите SQL-файл установленного пакета. Если путь отличается, используйте вывод dpkg -L, а не случайный скрипт другой версии.

dpkg -L zabbix-sql-scripts | grep 'postgresql/server.sql'
psql -h 127.0.0.1 -U zabbix -d zabbix -W -c '\dt'
set -o pipefail
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | \
  psql -h 127.0.0.1 -U zabbix -d zabbix -W -v ON_ERROR_STOP=1
psql -h 127.0.0.1 -U zabbix -d zabbix -W \
  -c 'SELECT mandatory, optional FROM dbversion;'

До импорта прикладных таблиц быть не должно. После — ожидается строка версии схемы и отсутствие SQL-ошибок. ON_ERROR_STOP останавливает psql на ошибке, pipefail позволяет заметить сбой первой команды конвейера в Bash. Ввод пароля идёт через терминал; SQL поступает по stdin.

Если импорт прервался, не повторяйте его поверх частично созданной БД. Сохраните ошибку и разберите состояние; для подтверждённой пустой новой установки можно пересоздать именно её по согласованному плану. Удалять неизвестную базу или существующую историю ради повторного шага нельзя. TimescaleDB здесь не подключается.

Шаг 6. Настройте соединение Zabbix server с PostgreSQL

Сохраните копию файла и отредактируйте действующие параметры, не добавляя дубли в конце конфигурации:

sudo cp -a /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.before-setup
sudoedit /etc/zabbix/zabbix_server.conf

Для этого примера нужны:

DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=<ПАРОЛЬ_СОЗДАННОЙ_РОЛИ>

Обозначение в угловых скобках заменяют своим секретом. Файл содержит пароль: ограничьте доступ, сохраните владельца/группу пакета и не публикуйте его в заявках. Не выдавайте полный конфигурационный файл командой cat в общий журнал. Успешный psql под postgres ещё не доказывает работу роли zabbix.

Шаг 7. Подготовьте закрытый веб-интерфейс

Сначала проверьте файлы пакетов и путь сокета PHP-FPM:

dpkg -L zabbix-nginx-conf
systemctl status php8.3-fpm --no-pager
sudo ss -lxnp | grep php
sudo cp -a /etc/zabbix/nginx.conf /etc/zabbix/nginx.conf.before-setup
sudoedit /etc/zabbix/nginx.conf

В штатном server-блоке Zabbix задайте локальный listener и имя, сохранив остальные правила PHP пакета:

listen 127.0.0.1:8080;
server_name localhost;

Это фрагмент существующей конфигурации, не полный nginx.conf. Убедитесь, что не осталось другого listener этого же frontend на 0.0.0.0/IPv6 и что fastcgi_pass совпадает с фактическим FPM-сокетом. Настройку часового пояса PHP и недостающих модулей проверит мастер. См. особенности Nginx.

Для первого входа используем SSH-туннель: браузер обращается к локальному адресу, а соединение до сервера защищает SSH. Для постоянного доступа позже настройте согласованный HTTPS reverse proxy или VPN, не открывая незавершённую установку наружу.

Шаг 8. Проверьте конфигурацию и запустите службы

sudo nginx -t
sudo systemctl restart zabbix-server php8.3-fpm nginx
sudo systemctl enable zabbix-server php8.3-fpm nginx
systemctl status zabbix-server php8.3-fpm nginx --no-pager
sudo journalctl -u zabbix-server --since '-10 min' --no-pager
sudo tail -n 50 /var/log/zabbix/zabbix_server.log
sudo ss -ltnp

Проверяйте результат каждой команды. Ожидается работа процесса без повторяющейся ошибки подключения/версии БД. Служба PostgreSQL в Ubuntu может быть обёрткой: состояние нужного экземпляра дополнительно смотрят через pg_lsclusters. Listener frontend должен быть на loopback, а 10051 — доступен только согласно вашей политике сети.

Запись active(running) сама по себе не подтверждает готовность приложения. Сопоставьте журнал, подключение к БД и открытие интерфейса. Не игнорируйте ошибки Nginx ради следующего шага.

Шаг 9. Пройдите мастер и измените стандартный доступ

На административном компьютере откройте отдельный терминал и оставьте соединение работающим:

ssh -N -L 18080:127.0.0.1:8080 admin@192.0.2.10

Замените пользователя и адрес. Откройте в локальном браузере http://127.0.0.1:18080/. Мастер должен подтвердить требования PHP. Для БД укажите PostgreSQL, адрес 127.0.0.1, порт 5432, имя/роль zabbix и ранее созданный пароль. Сервер Zabbix расположен на этой же машине; не путайте его порт с портом PostgreSQL.

Если мастер предлагает скачать конфигурацию из-за прав записи, установите файл в путь, показанный мастером, с минимальными правами; не делайте веб-каталог доступным на запись всем. Процедура описана в документации frontend.

В новой стандартной БД начальный вход — Admin / zabbix, регистр важен. Сразу замените его отдельным сгенерированным паролем из защищённого хранилища, создайте персональные учётные записи и роли; проверьте часовой пояс. До этого не публикуйте интерфейс. Наличие панели — только результат установки frontend, а не доказательство сбора метрик.

Шаг 10. Установите Agent 2 на пилотный Linux-узел

На отдельном новом узле Ubuntu 24.04 подключите тот же официальный репозиторий ветки 7.0 из шага 2, но установите только агент. Не выполняйте на агенте создание серверной БД.

sudo apt update
sudo apt install zabbix-agent2 openssl
zabbix_agent2 -V
sudo cp -a /etc/zabbix/zabbix_agent2.conf /etc/zabbix/zabbix_agent2.conf.before-setup

Если установлен старый агент, сначала согласуйте переход: два процесса не должны конкурировать за один порт или создавать дубли. Для Windows используются соответствующий пакет и параметры той платформы; команды apt к ней неприменимы.

Шаг 11. Подготовьте уникальный TLS PSK агента

В примере используются активные проверки с PSK. Значение ключа секретно, PSK identity — его идентификатор, а не пароль. PSK генерируется отдельно от паролей БД и администратора; это ключ TLS, а не пароль входа. Не используйте один ключ для всей компании. Перед созданием убедитесь, что файл не существует:

sudo test ! -e /etc/zabbix/agent.psk || exit 1
sudo install -o zabbix -g zabbix -m 0600 /dev/null /etc/zabbix/agent.psk
sudo -u zabbix openssl rand -hex -out /etc/zabbix/agent.psk 32
sudo stat -c '%U:%G %a %n' /etc/zabbix/agent.psk

Ожидается владелец zabbix и режим 600; секрет не выводится в командную строку. Передайте значение через утверждённый защищённый способ в поле узла Zabbix, не в текст статьи или общую заявку. Требования к PSK и совпадению identity/value приведены в руководстве по шифрованию.

Шаг 12. Настройте active checks и ограничьте listener

В /etc/zabbix/zabbix_agent2.conf отредактируйте соответствующие параметры, исключив конфликтующие дубли в Include-файлах:

Hostname=linux-app-01
ServerActive=192.0.2.10:10051
Server=127.0.0.1
ListenIP=127.0.0.1
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=linux-app-01-psk
TLSPSKFile=/etc/zabbix/agent.psk

Hostname должен точно совпадать с техническим именем узла в интерфейсе. ServerActive задаёт получателя активных данных. Server и ListenIP в этом примере оставляют пассивный listener только локально; не нужно открывать 10050 от сервера к агенту. TLSAccept применяется к принимаемым соединениям, TLSConnect — к исходящим активным.

Проверьте локальный ключ под пользователем службы, затем перезапустите агент:

sudo -u zabbix zabbix_agent2 -c /etc/zabbix/zabbix_agent2.conf -t 'agent.ping'
sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2
systemctl status zabbix-agent2 --no-pager
sudo journalctl -u zabbix-agent2 --since '-10 min' --no-pager
sudo ss -ltnp

Ожидается успешная локальная проверка и отсутствие ошибок TLS/Hostname после создания узла в следующем шаге. Локальный -t не доказывает передачу серверу. Файловый журнал агента при необходимости проверьте по LogFile действующей конфигурации.

Шаг 13. Создайте узел и привяжите правильный шаблон

  1. Откройте Data collection → Hosts → Create host.
  2. В Host name задайте linux-app-01, добавьте понятную группу; Visible name может отличаться.
  3. Выберите наблюдение непосредственно сервером Zabbix. Если используется proxy, архитектура и получатель active checks меняются.
  4. Подключите Linux by Zabbix agent active соответствующей версии. Для agent-only passive-шаблона этот пример неполон.
  5. В Encryption → Connections from host разрешите PSK; введите linux-app-01-psk и своё значение ключа. Не оставляйте незашифрованное соединение как обход ошибки.
  6. Сохраните включённый узел и дождитесь обновления конфигурации.

Создание узла и шаблоны описаны в руководстве узлов и каталоге шаблонов. Интерфейс агента требуется для соответствующих пассивных элементов; при чисто активном сборе его адрес не задаёт направление отправки. Нужен исходящий доступ агента к серверу по 10051 и одинаковая PSK-пара.

Шаг 14. Проверьте первые значения и discovery

АГЕНТКлюч отвечает локально

Проверены права и параметры; этот этап ещё не подтверждает транспорт.

LATEST DATAЗначения обновляются

Нужный узел, свежие timestamps, ожидаемые единицы и величины.

СОБЫТИЕПравило и доставка проверены

Безопасный тест, реальный получатель и восстановление.

В Monitoring → Latest data выберите узел и посмотрите время последнего значения, CPU, память и файловые системы. Дождитесь выполнения discovery и проверьте исключения. Старый timestamp, unsupported и отсутствие ряда требуют диагностики даже при зелёном статусе другого элемента.

Не путайте успешный agent.ping, ICMP ping и работу бизнес-приложения. Для 1С, DNS, копий и СУБД добавляют осмысленные проверки. Продолжение — метрики, события, расследование и реакция.

Шаг 15. Примите первое оповещение целиком

Настройте media type выбранного канала, персонального получателя с правами на группу и действие для ограниченного тестового события. Токены и пароли храните защищённо. Не рассылайте учебные события всем сотрудникам.

  1. Создайте безопасное условие на пилотном узле, не останавливая производственный сервис и не заполняя рабочий диск.
  2. Проверьте PROBLEM, имя узла, severity и теги.
  3. Подтвердите сообщение у реального получателя и принятие задачи; тест канала сам по себе недостаточен.
  4. Верните нормальное условие, проверьте OK и сообщение восстановления.
  5. Удалите временные правила и сохраните протокол.

Установка считается технически принятой в заявленном объёме после этих проверок. В статье ни реальная отправка, ни приёмка стенда не выполнялись; описана процедура для вашего развёртывания.

Если не работает: где искать причину

СимптомПроверитьНе делать вслепую
Server не подключается к БДРоль, пароль, адрес, pg_hba, журнал, схемаtrust для всех или роль superuser
Frontend: 502FPM, путь сокета, права, журнал Nginxchmod777 веб-каталога
Адрес не открываетсяListener, SSH-туннель, порт и конфликт vhostОткрывать все порты наружу
Нет active checksHostname, включённый узел, active-шаблон, PSK и маршрутОтключать TLS для рабочего узла
Метрики есть, сообщения нетAction, права, media, время, severity, журнал отправкиСчитать график подтверждением доставки

Читая журналы, сохраняйте время и точный текст ошибки, но убирайте секреты из передаваемых материалов. Вносите одно изменение и повторяйте соответствующую проверку. Если импорт схемы завершился ошибкой, исправление frontend её не восстановит.

Перед production: копии, ёмкость, обновления и наблюдение

  • Согласуйте резервирование PostgreSQL, конфигураций Zabbix/Nginx/PHP и безопасное хранение секретов; проверьте восстановление.
  • Задайте сроки истории и trends, контролируйте рост БД, место и очередь обработки.
  • Подготовьте ограниченный постоянный HTTPS/VPN-доступ и персональные роли.
  • Контролируйте сам сервер мониторинга независимым способом в требуемом объёме.
  • Сохраните версии пакетов, репозитории, схему сети и порядок обновления. Перед обновлением делайте копию и сверяйте совместимость.

Снимок ВМ — не замена независимой согласованной копии БД. После обновления ПО возврат только старого бинарника может не соответствовать уже изменённой схеме: нужен согласованный возврат программ, данных и конфигурации.

Если установка не завершилась: сохраните управляемое состояние

На новой системе зафиксируйте последний успешный этап, журнал ошибки, версии и созданные объекты. Не удаляйте базу и каталоги наугад. Если нужна пауза, остановите только создаваемую службу Zabbix, сохранив доступ и диагностические данные.

Откат конфигурации выполняйте из сохранённой копии с проверкой прав. Возврат ВМ/БД возможен только по заранее подготовленному плану и с пониманием, какие данные будут потеряны. При наличии существовавших до работ сервисов восстановите их согласованно; этот материал не даёт основания удалять их.

Паспорт установки и протокол первых проверок

Паспорт развёртывания

Версии, узлы, пути, порты, сбор и хранение секретов без самих паролей.

Скачать паспорт · TXT

Протокол приёмки

БД, backend, интерфейс, TLS-агент, свежие данные, уведомление и возврат.

Скачать протокол · TXT

Развёртывание и сопровождение мониторинга

ИТ-аутсорсинг

  • Подготовка схемы и развёртывание Zabbix.
  • Подключение проверок и согласование реагирования.
  • Сопровождение обновлений, копий и доступов.

Объём внедрения и ответственность определяем под вашу инфраструктуру.

Обсудить внедрение Zabbix

Облачные ресурсы

  • Подбор ВМ и хранения для мониторинга.
  • Согласование сетевых подключений и доступа.
  • Планирование копий и восстановления.

Параметры, поддержка и стоимость фиксируются в конкретном предложении.

Обсудить сервер мониторинга

Частые вопросы

Можно выполнить команды на существующем Zabbix?

Нет. Это создание новой системы. Обновление требует отдельного плана версий, копии БД и процедуры возврата.

Почему выбрана 7.0 LTS, если есть другие версии?

Для воспроизводимого примера в одной ветке. Это не утверждение, что она самая новая; проверяйте поддержку и требования выбранного maintenance-релиза.

Нужно открыть PostgreSQL в интернет?

Нет. В примере БД локальная, соединение идёт через127.0.0.1; внешний доступ5432 не нужен.

Нужен ли10050 для активного агента?

Не для чисто активных проверок. Агент сам подключается к серверу10051; пассивные проверки требуют отдельной схемы.

PSK identity — это секрет?

Нет, это идентификатор. Секретом является значение PSK; обе стороны должны использовать согласованную пару.

Зелёный агент означает, что всё готово?

Нет. Нужно проверить свежесть данных, discovery, событие и доставку фактическому получателю.

Можем просто повторить импортSQL после ошибки?

Не поверх частичной схемы. Сначала сохраните ошибку и определите состояние новой БД; повторное создание возможно только в подтверждённых границах.

Команды уже проверены на реальном стенде?

Нет. Они подготовлены по официальной документации; установка,SQL и отправка сообщений при написании не выполнялись. Графика учебная.