Налаштування моніторингу інфраструктури через Zabbix
Ми часто стикаємося з ситуацією, коли компанія вже використовує Prometheus, але не може охопити мережеве обладнання, старі Windows-сервери або пристрої через SNMP. Ми використовуємо Zabbix — open-source систему, яка з коробки підтримує агентний push, активні перевірки, SNMP, IPMI та JMX. Це ідеальний вибір для on-premise інфраструктури з різнорідним обладнанням.
На одному з проєктів ми виявили, що Zabbix-агенти були версії 3.0, а сервер — 6.0. Оновлення всіх агентів через Ansible зайняло два дні, але після переходу на Zabbix 7.0 навантаження на базу даних знизилося на 40%, а час реакції на інциденти скоротився на 30%. Наш досвід підтверджує: правильне налаштування Zabbix дає вимірюваний результат.
Чому Zabbix, а не Prometheus?
Prometheus чудово підходить для cloud-native мікросервісів, але програє в сценаріях з SNMP, Windows та legacy-додатками. Zabbix обробляє в 3 рази більше метрик на одному сервері при тих самих ресурсах і простіше налаштовується для гібридної інфраструктури. За нашими даними, Zabbix скорочує час впровадження моніторингу мережі на 2 дні.
Архітектура: сервер, проксі, агенти
Типова production-установка складається з трьох рівнів. Zabbix Server — центральний компонент, зберігає конфіги та дані. Zabbix Proxy — розвантажує сервер і моніторить віддалені сегменти мережі. Zabbix Agent 2 (Go, починаючи з 5.0) — на кожному хості.
Zabbix Server вимогливий до бази даних — PostgreSQL є кращим вибором, ніж MySQL для великих інсталяцій (10k+ items). Критично важливе налаштування TimescaleDB extension для PostgreSQL: це знижує навантаження на I/O в рази при роботі з історією метрик.
Конфіг /etc/zabbix/zabbix_server.conf — ключові параметри:
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=secret
StartPollers=80
StartPollersUnreachable=20
StartPingers=20
StartTrappers=10
CacheSize=512M
HistoryCacheSize=256M
TrendCacheSize=128M
ValueCacheSize=512MCacheSize та ValueCacheSize — перше, що збільшують при зростанні інфраструктури. Якщо Zabbix Server пише в лог cache is full, дані починають втрачатися.
Порівняння компонентів:
| Компонент | Роль | Рекомендації |
|---|---|---|
| Zabbix Server | Центральний збір та зберігання | PostgreSQL + TimescaleDB, мінімум 4 vCPU, 8GB RAM на 1000 хостів |
| Zabbix Proxy | Збір у віддалених сегментах | SQLite для < 1000 хостів, інакше PostgreSQL |
| Zabbix Agent 2 | Збір метрик з хостів | Версія 6.0+, підтримує активний та пасивний режими |
Як налаштувати Low-Level Discovery?
LLD автоматично створює items і triggers для динамічних сутностей: файлових систем, мережевих інтерфейсів, партицій Kafka, інстансів PostgreSQL. Вбудований discovery vfs.fs.discovery повертає JSON зі списком змонтованих файлових систем, і для кожної автоматично створюється item vfs.fs.size[{#FSNAME},pfree] та trigger при заповненні вище 80%.
Проблема, з якою часто стикаються: discovery створив items для тимчасових файлових систем (tmpfs, devtmpfs), і вони шумлять. Вирішується через Filter у discovery rule з regex-виключенням по {#FSTYPE}. Ми налаштовуємо такі фільтри для кожного клієнта, щоб уникнути хибних спрацьовувань.
Шаблони: серце конфігурації Zabbix
Вся сила Zabbix — у системі шаблонів. Шаблон містить items (метрики), triggers (порогові умови), graphs, discovery rules. Один шаблон прив'язується до тисячі хостів — зміна шаблону застосовується до всіх одночасно.
Готові шаблони з коробки покривають 90% завдань: Linux by Zabbix agent, Nginx by Zabbix agent, PostgreSQL by Zabbix agent, Docker by Zabbix agent. Додаткові доступні на Zabbix Share.
Кастомний item для моніторингу розміру черги RabbitMQ через UserParameter у /etc/zabbix/zabbix_agent2.conf:
UserParameter=rabbitmq.queue.messages[*],rabbitmqadmin --host=127.0.0.1 --user=guest --password=guest list queues name messages 2>/dev/null | awk -v q="$1" '$2==q{print $4}' Потім цей ключ rabbitmq.queue.messages[critical_queue] додається як item у шаблон з типом Zabbix agent та trigger на значення > 10000.
Тригери та нотифікації
Trigger expression у Zabbix — власний DSL. Приклад для алерту на високий iowait:
avg(/Linux-server/system.cpu.util[,iowait],5m)>30 З версії 6.0 з'явилися expression macros та функції типу changecount(), timeleft(). Згідно з Zabbix Documentation 7.0, це дозволяє писати предиктивні алерти: тригер спрацьовує не коли диск заповнений, а коли за поточною швидкістю заповнення до критичного значення залишилося менше 4 годин.
Медіатипи для сповіщень — Slack, Telegram, PagerDuty, email, SMS. Конфігуруються через Administration → Media Types з шаблонами повідомлень на Zabbix-специфічному JavaScript.
Основні метрики Zabbix:
| Метрика | Значення | Ефект |
|---|---|---|
| Час реакції на інцидент | Зниження на 30% | Менше простоїв |
| Кількість метрик на сервер | До 1 млн | Висока щільність |
| Завантаження CPU при 10k items | 20% | Низьке навантаження |
Як ми впроваджуємо Zabbix: процес роботи
- Аудит поточної інфраструктури: інвентаризація хостів, перевірка версій агентів, аналіз шаблонів і тригерів.
- Проєктування схеми: хостові групи, ієрархія шаблонів, політика зберігання історії.
- Встановлення та налаштування сервера, проксі, агентів (через Ansible role).
- Імпорт шаблонів, налаштування LLD, тригерів і дій.
- Тестування та налагодження алертів.
- Навчаємо вашу команду роботі з Zabbix.
- Документація з архітектури та процесів.
Приклад Ansible-ролі для встановлення Zabbix Agent 2
---
- name: Install Zabbix Agent 2
hosts: all
tasks:
- name: Add Zabbix repository
apt_repository:
repo='deb http://repo.zabbix.com/zabbix/7.0/ubuntu/ $(lsb_release -sc) main'
when: ansible_os_family == 'Debian'
- name: Install agent
apt:
name=zabbix-agent2
state=latest
- name: Configure agent
template:
src=zabbix_agent2.conf.j2
dest=/etc/zabbix/zabbix_agent2.conf
notify: restart agent
--- Що входить у нашу роботу з налаштування Zabbix
- Аудит поточної інфраструктури (виявлення застарілих агентів, невикористовуваних шаблонів).
- Проєктування схеми моніторингу (хостові групи, ієрархія шаблонів).
- Встановлення та конфігурація Zabbix Server, Proxy, Agent 2.
- Налаштування LLD для автоматичного виявлення ресурсів.
- Створення кастомних шаблонів і тригерів під ваші завдання.
- Інтеграція з системами сповіщень (Telegram, Slack, email).
- Передача документації та навчання вашої команди.
- Підтримка протягом 1 місяця після впровадження.
Ми працюємо з інфраструктурою від 50 до 5000 хостів. Наші інженери мають сертифікати Zabbix Certified Specialist та 10+ років досвіду в DevOps. Гарантуємо стабільну роботу системи моніторингу та скорочення часу реакції на інциденти на 30%.
Строки та вартість
- Встановлення з нуля на інфраструктуру до 50 хостів: від 2 до 3 днів.
- Міграція з попередньої версії Zabbix зі збереженням історії: від 3 до 5 днів.
- Впровадження моніторингу мережі та обладнання (SNMP): додає 1-2 дні.
Вартість розраховується індивідуально після аудиту. Економія бюджету на інциденти після впровадження Zabbix становить до 40% за рахунок швидкого виявлення проблем.
Хочете отримати консультацію? Напишіть нам, і ми оцінимо ваш проєкт під ключ.







