Zabbix: мониторинг IT-инфраструктуры с нуля до production
Zabbix — это промышленная платформа мониторинга с открытым исходным кодом. Серверы, сетевое железо, приложения, облако — всё под контролем в одном месте. В отличие от htop или iotop, которые показывают картину «прямо сейчас», Zabbix копит метрики, строит графики, хранит историю месяцами, сам отправляет уведомления и может автоматически реагировать на инциденты. И при этом — полностью бесплатен.
Зачем нужен Zabbix и какие задачи он решает?
За 15 лет работы с разными системами мониторинга я не видел инструмента, который закрывал бы такой же широкий спектр задач, как Zabbix:
- Серверы: CPU, RAM, диски, сеть, процессы, температура
- Сетевое оборудование: SNMP-мониторинг коммутаторов, маршрутизаторов, точек доступа
- Приложения: веб-сайты, базы данных, очереди сообщений, Docker
- Облако: AWS, Azure, VMware, Proxmox
- Безопасность: мониторинг изменений файлов, открытых портов, SSL-сертификатов
Главное, чем Zabbix отличается от «просто мониторинга» — он проактивный. Вы узнаёте о проблеме раньше пользователей, а не из их звонка. Диск забит на 85%? Алерт придёт заранее. SSL-сертификат сгорает через 14 дней? Получите уведомление с запасом. Сервер не отвечает три минуты? Zabbix сам перезапустит сервис. На практике это экономит часы разбора инцидентов.
Какую архитектуру выбрать для развёртывания Zabbix?
Архитектура Zabbix состоит из нескольких компонентов — важно понимать, что делает каждый:
- Zabbix Server — центральный процесс, обрабатывает данные, вычисляет триггеры
- Database — хранилище метрик и конфигурации (PostgreSQL, MySQL, Oracle)
- Web Frontend — веб-интерфейс на PHP (Apache/Nginx)
- Zabbix Agent — устанавливается на каждый контролируемый хост
- Zabbix Proxy — для мониторинга удалённых площадок через NAT
Как установить Zabbix Server на Debian/Ubuntu?
Разворачиваем Zabbix 7.0 LTS на Debian 12 с PostgreSQL:
# Добавляем репозиторий Zabbix
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb
dpkg -i zabbix-release_latest+debian12_all.deb
apt update
# Устанавливаем компоненты
apt install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql \
zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2
# Устанавливаем PostgreSQL
apt install -y postgresql postgresql-contrib
# Создаём базу данных
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
# Импортируем схему
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | \
sudo -u zabbix psql zabbix
Прописываем подключение к БД в /etc/zabbix/zabbix_server.conf:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=YOUR_SECURE_PASSWORD
# Производительность
StartPollers=10
StartPingers=5
CacheSize=256M
HistoryCacheSize=64M
ValueCacheSize=128M
# Запускаем службы
systemctl enable --now zabbix-server zabbix-agent2 nginx php8.2-fpm
systemctl restart zabbix-server
Веб-интерфейс откроется по адресу http://IP/. Логин по умолчанию: Admin / zabbix.
Как установить и настроить Zabbix Agent на хостах?
На каждый контролируемый хост ставим Zabbix Agent 2 — это актуальная версия, её и рекомендую:
# Debian/Ubuntu
apt install -y zabbix-agent2
# CentOS/RHEL
dnf install -y zabbix-agent2
# Windows
# Скачайте MSI с https://www.zabbix.com/download_agents
Правим конфигурацию /etc/zabbix/zabbix_agent2.conf:
Server=192.168.1.10 # IP Zabbix Server
ServerActive=192.168.1.10 # Для активных проверок
Hostname=web-server-01 # Имя хоста (должно совпадать в Zabbix)
ListenPort=10050
# Расширенный мониторинг
Plugins.SystemRun.LogRemoteCommands=1
AllowKey=system.run[*]
Как настроить шаблоны мониторинга для типовых задач?
Из коробки Zabbix идёт с сотнями готовых шаблонов — в большинстве случаев писать ничего самому не придётся. Чаще всего используем:
- Linux by Zabbix agent — CPU, память, диски, сеть, процессы
- Windows by Zabbix agent — аналогично для Windows + Event Log
- PostgreSQL by Zabbix agent 2 — мониторинг БД
- Docker by Zabbix agent 2 — контейнеры и образы
- SNMP Generic — сетевое оборудование
- Website certificate by Zabbix agent 2 — SSL-сертификаты
Привязываем шаблон к хосту через: Configuration → Hosts → выбрать хост → Templates → Link new templates.
Как настроить триггеры и уведомления о проблемах?
Триггеры — это условия, при которых Zabbix поднимает алерт. Вот несколько рабочих примеров из нашей практики:
# Диск заполнен более чем на 90%
{host:vfs.fs.size[/,pused].last()}>90
# CPU загружен более 95% в течение 5 минут
{host:system.cpu.util.avg(5m)}>95
# Сервис не работает
{host:net.tcp.service[http,,80].last()}=0
# SSL-сертификат истекает менее чем через 14 дней
{host:web.certificate.info[example.ru,443].json_parse("$.not_after_timestamp")}-{host:time.now.last()}<1209600
Куда слать уведомления — настраивается через Media Types. Вариантов достаточно:
- Email — классика, просто прописываем SMTP-настройки
- Telegram — через Bot API, алерты прилетают мгновенно
- Slack/Teams — webhook-интеграция
- SMS — через внешние шлюзы
- Custom scripts — любая автоматизация, которую придумаете
Как мониторить сетевое оборудование через SNMP?
Для мониторинга коммутаторов, маршрутизаторов и прочего сетевого железа — SNMP. Настройка выглядит так:
# Добавляем хост с SNMP-интерфейсом в Zabbix:
# Configuration → Hosts → Create host
# Interfaces: SNMP, IP: 192.168.1.1, Port: 161
# SNMP community: public (или ваш community string)
# Привязываем шаблон:
# Templates → Cisco IOS SNMP / Generic SNMP / etc.
Дальше Zabbix сам разберётся: через LLD (Low Level Discovery) автоматически обнаружит сетевые интерфейсы и начнёт собирать трафик, ошибки, статус портов. Руками прописывать каждый интерфейс не придётся.
Как настроить мониторинг удалённых площадок через Zabbix Proxy?
Серверы за NAT или в удалённом офисе? Ставим Zabbix Proxy:
# На удалённой площадке
apt install -y zabbix-proxy-pgsql
# /etc/zabbix/zabbix_proxy.conf
Server=ZABBIX_SERVER_IP
Hostname=proxy-office-2
DBName=zabbix_proxy
ProxyMode=0 # Active mode
Proxy собирает данные локально и пакетами отправляет на центральный сервер. WAN-канал не перегружается, а при временном обрыве связи данные не теряются — накапливаются и досылаются, когда соединение восстановится.
Как построить дашборды и отчёты в Zabbix?
Дашборды дают живую картину состояния инфраструктуры — именно их мы обычно выводим на мониторы в серверной:
- Monitoring → Dashboard → Create dashboard
- Добавьте виджеты: Graph, Problem hosts, System information, Map
- Задайте период отображения и интервал автообновления
Для регулярной отчётности есть несколько инструментов:
- Scheduled reports — PDF-отчёт автоматически уходит по расписанию
- Grafana + Zabbix plugin — если нужна продвинутая визуализация
- Zabbix API — для интеграции с внешними системами
Как масштабировать Zabbix для крупной инфраструктуры?
Несколько вещей, которые реально ускоряют работу Zabbix на больших объёмах данных:
- TimescaleDB: включите для ускорения работы с историческими данными
- Partitioning: обязательно настройте партиционирование таблиц history и trends — без этого база данных через полгода превратится в тормоза
- Housekeeper: 30 дней для history и 365 для trends — рабочие цифры для большинства инсталляций; больше хранить смысла нет, только место занимает
- Active agents: переведите агенты в активный режим — сервер перестаёт сам ходить к каждому хосту, и нагрузка падает ощутимо, особенно при 200+ узлах
- Прокси: если площадок несколько или канал до филиала нестабильный — прокси спасает; центральный сервер общается только с прокси, а не с сотней агентов напрямую
# Включение TimescaleDB
# В postgresql.conf:
shared_preload_libraries = 'timescaledb'
# В Zabbix:
# Administration → General → Housekeeping
# Enable TimescaleDB compression
Какие типичные проблемы возникают при работе с Zabbix?
Вот что чаще всего спрашивают на практике:
- Конфликт портов Apache и Nginx: Zabbix по умолчанию тянет за собой Apache. Хотите Nginx — установите
zabbix-nginx-confи снесите Apache, иначе они будут делить 80-й порт и ничего не заработает. - Миграция с CentOS на Debian: конфигурацию вытаскивайте через API или XML-экспорт, базу переносите через pg_dump/pg_restore — схема рабочая, проверяли не раз.
- Мониторинг камер за NAT: классика. Поднимите Zabbix Proxy прямо на удалённой площадке или переведите агент в активный режим — и никакого NAT-ада.
- Мониторинг дисков Windows: шаблон «Windows by Zabbix agent» сам найдёт все диски через LLD, руками прописывать ничего не нужно.
Заключение: Zabbix как единая система мониторинга
Zabbix — это про спокойный сон. Серьёзно. Когда мы внедряли мониторинг клиентам, первая же неделя работы системы стабильно выявляла проблемы, о которых никто не подозревал: диск забит на 95%, сервис упал ночью и сам поднялся, канал периодически деградирует. Начните с малого — возьмите 5–10 ключевых хостов, настройте уведомления в Telegram, соберите первый дашборд. Дальше охват растёт сам собой, по мере того как команда начинает доверять данным. Если хочется пройти этот путь быстро и без граблей — команда АйТи Фреш развернула Zabbix уже для десятков компаний, поможем и вам.
Документация: Zabbix 7.0 Documentation
Часто задаваемые вопросы
Какую базу данных лучше использовать для Zabbix — MySQL или PostgreSQL?
Рекомендуется PostgreSQL + TimescaleDB. Это оптимальное решение по производительности, особенно для крупных инсталляций. TimescaleDB ускоряет запросы к историческим данным и позволяет эффективно сжимать старые метрики.
Совместимы ли агенты Zabbix разных версий с сервером?
Да, агенты Zabbix обратно совместимы. Agent 5.0 или 6.0 будет работать с Server 7.0. Однако для использования новых функций (например, плагины Agent 2) рекомендуется обновлять агенты до версии сервера.
Как мониторить устройства за NAT без белого IP?
Используйте Zabbix Proxy в активном режиме на удалённой площадке. Proxy собирает данные от агентов локально и пересылает на центральный сервер. Альтернатива — переведите агенты в активный режим (ServerActive), тогда агент сам инициирует соединение с сервером.
Сколько ресурсов нужно серверу Zabbix для мониторинга 100 хостов?
Для 100 хостов со стандартными шаблонами: 4 ядра CPU, 8 ГБ RAM, 100 ГБ SSD для БД. При 1000+ NVPS (new values per second) увеличьте CacheSize до 512M и HistoryCacheSize до 128M в конфигурации сервера.
Как отправлять уведомления из Zabbix в Telegram?
Administration → Media Types → Telegram. Создайте бота через @BotFather, получите токен. Укажите токен в настройках Media Type. Затем в профиле пользователя добавьте Telegram media с chat_id. Настройте Action для отправки при срабатывании триггера.
Можно ли использовать Zabbix вместе с Grafana?
Да. Установите плагин Zabbix для Grafana (alexanderzobnin-zabbix-app). Grafana подключается к Zabbix через API и позволяет строить продвинутые дашборды с данными из Zabbix. Это популярная связка для красивой визуализации.
ООО «АйТи Фреш» возьмёт это на себя
Не хватает времени или своих специалистов — мы настроим, оптимизируем и возьмём вашу IT-инфраструктуру на постоянное сопровождение. Работаем с юридическими лицами в Москве и регионах. Собственный дата-центр, команда из 8 серверов Dell Xeon Platinum 8280 на базе МТС.