Перейти к содержанию

🟢 Статус: Conceptually stable · v0.1

Концепция устойчива, проверена опытом, литературой и практикой.

Этот раздел - каркас, на котором держится остальное. Что считать объектом мониторинга (сервис, не хост), что означает severity, как теги делают событие осмысленным, чем LLD отличается от ручного зоопарка метрик, и как четыре измерения слоёв собираются в проектный язык. Если эти пять глав пропустить, остальная книга читается как набор частных приёмов — потому что у них нет общего основания.

01. Сервис, а не хост

Главный принцип

«Сервер 1С пингуется» ≠ «1С работает».

«CPU на сервере Exchange в норме» ≠ «почта отправляется».

«Все агенты Zabbix зелёные» ≠ «у пользователей всё хорошо».

Между состоянием инфраструктурных компонентов и состоянием бизнес-сервиса всегда есть зазор. Мониторинг, который игнорирует этот зазор, обречён на классическую драму:

  • Зам.директора звонит начальнику ИТ: «1С не работает, бухгалтерия стоит!»
  • Начальник ИТ открывает Zabbix: «У нас всё зелёное».
  • Через 40 минут выясняется, что исчерпались доступные лицензии 1С/HASP, веб-публикация падает, но сам сервер пингуется отлично.

Дашборд врёт. Не потому, что Zabbix плохой — а потому, что мониторили не то.

Шесть слоёв того, что нужно мониторить

Снизу вверх:

Слой Что Чем
Hardware iLO/iDRAC, ИБП, температура, диски RAID SNMP, IPMI
Network Cisco/Eltex/UserGate — порты, CPU, BGP, тоннели SNMP, SNMP-traps
OS Win/Linux — CPU, RAM, диски, сервисы Zabbix-agent (active)
Middleware MSSQL, PostgreSQL, Exchange DAG, IIS, веб-публикации 1С SQL-чеки, native templates
Application 1С — очереди, фоновые, лицензии RPHost; SCADA — связь API, log-monitoring
Business «Зарплата начислится сегодня?», «Документ выпускается?» синтетика, e2e-чеки

Большинство Zabbix-инсталляций закрывают слои 1–3, плохо закрывают 4, почти не закрывают 5, и редко закрывают системно 6.

А пользователю важен только слой 6.

Что значит «мониторить сервис»

Возьмём 1С как пример. «1С работает» — это:

  1. rmngr (менеджер кластера) запущен
  2. rphost (хотя бы один рабочий процесс) запущен
  3. RAS/rac endpoint отвечает (порт зависит от конфигурации кластера 1С, по умолчанию 1545)
  4. MSSQL для 1С — отвечает на запросы, нет deadlock'ов выше порога
  5. Веб-публикация отдаёт страницу логина за разумное время
  6. HASP лицензии не исчерпаны
  7. Вчерашний бэкап прошёл успешно
  8. Синтетический тест: "тестовый пользователь" логинится и проводит «пустой» документ за N секунд

Любое из 1–7 может быть зелёным, а сервис при этом не работать. Только пункт 8 — это «1С работает с точки зрения пользователя». Остальное — компоненты, которые тушат алерты по очереди, пока проблема нарастает.

Иерархия алертов «сервис → компонент → ресурс»

Когда у вас есть синтетика и компонентные проверки одновременно — нужно их правильно связать, иначе на одно реальное падение прилетит двадцать алертов одновременно.

ALERT: 1С-ERP сервис недоступен (Disaster)
   └ детали: синтетика "логин test_user" падает 3 раза подряд
        └ дочерние алерты (подавлены через trigger dependencies):
              ├ rphost.count = 0 (High)
              ├ MSSQL deadlocks > 100 (High)
              ├ HASP free < 2 (High)
              └ RAC port 1545 not responding (High)

Дежурный видит один Disaster и сразу под ним — список причин. А не «20 алертов прилетели за 30 секунд, разбирайся сам».

Технически это можно реализовать через trigger dependencies в Zabbix, но с важной оговоркой: dependency в первую очередь удерживает actions/notifications для зависимых триггеров, а не строит иерархию "сервис → причины" визуально. Сервисная синтетика — это верхнеуровневый симптом, а не первопричина. Если зависимость настроена неаккуратно, можно потерять диагностические component-алерты именно тогда, когда они нужны.

Для построения полноценной картины "сервис → компоненты → проблемы" правильнее использовать Zabbix Services + problem tags: сервис в Services видит связанные проблемы по тегам, а дашборд и root cause view (элемент интерфейса Zabbix) собирают нужный контекст без подавления компонентных алертов.

Trigger dependencies — рабочий инструмент там, где есть понятная причинно-следственная связь (например: сеть → downstream сервисы, core-свитч → все хосты площадки). Для сервисной иерархии они слабее, чем Services + tags.

Откуда берутся синтетические проверки

Это самая «дорогая» часть мониторинга — она требует прикладной экспертизы, не только сетевой/системной.

Примеры синтетики:

Сервис Синтетика
Тестовый пользователь логинится в веб-публикацию, проводит пустой документ в тестовой базе, выходит. Засекается время каждого шага. ⚠ Только в согласованной тестовой ИБ/организации — не в производственной базе напрямую.
Exchange Скрипт раз в 5 мин отправляет письмо mon-out@<domain>mon-in@<domain> через OWA/SMTP. Триггер на отсутствие письма за N мин
AD LDAP bind тестовым пользователем со всех площадок к локальному DC
DFS / файловые шары Test-Path \\dfs-root\common\test.txt с разных хостов
Печать Печать тестового PDF на референсный принтер раз в час
VPN TCP-handshake до публичного хоста через VPN-туннель

Поднимать синтетику нужно постепенно: один сервис в месяц, не больше. Иначе утонете в её поддержке (учётные записи тестовых пользователей устаревают, сертификаты, captcha, ротация паролей и т.п.).

Когда сервисная модель не нужна

Не делайте сервисную модель «на всякий случай». Это работа, и она имеет смысл только если:

  • У вас есть дежурная смена, и она реагирует
  • У вас обсуждается SLA (внутренний или внешний)
  • У вас более 5 бизнес-сервисов с разными владельцами
  • Руководство периодически спрашивает «а где у нас проблемы по сервисам, не по железкам»

Если ничего из этого — компонентного мониторинга достаточно. Сервисный слой добавите, когда подоспеет потребность.

Резюме

Что Где обсуждается
Как реализовать сервисную модель технически Глава 6 — Архитектура, Глава 13 — Шаблоны
Как связать с SLA Глава 10 — SLA
Как теги участвуют в сервисной модели Глава 3 — Теги
Какие синтетические проверки имеют смысл Часть IV (Шаблоны)

Главное — держать в голове: на дашборде CIO должны висеть бизнес-сервисы, а не количество доступных хостов. Если у вас на дашборде CIO висит «доступность хостов 99.8%» — у вас проблема не с Zabbix, а с моделью.