🟢 Статус: Conceptually stable · v0.1
Концепция устойчива, проверена опытом, литературой и практикой.
Что происходит после того, как Zabbix настроен и шаблоны разложены. Runbook для реальной ночной смены, а не для аудита. SLA, которые опираются на накопленные данные, а не на обещания. Дашборды под конкретную аудиторию, а не «все графики на одном экране». Операционная модель, делающая мониторинг функцией, а не разовым проектом. Эта часть отвечает на вопрос «и что теперь?».
09. Runbook¶
Что такое runbook — одна строчка¶
Runbook — инструкция «что делать дежурному, когда сработал этот конкретный алерт». Не общее описание системы, не архитектурный документ — именно пошаговый ответ на конкретную ситуацию.
Разница: - Wiki-статья «как работает Exchange DAG» — это документация - «Что делать если Exchange DAG split-brain в 3 ночи» — это runbook
Как runbook привязывается к триггеру в Zabbix¶
Ссылка на runbook хранится в поле Menu entry URL триггера (в старых версиях — просто URL). В шаблоне нотификации ссылка выводится через макрос {TRIGGER.URL}. Алерт в Telegram/email/Mattermost — там сразу кликабельная ссылка. Дежурный не ищет в голове «что делать».
Настройка: Data collection → Templates → открыть шаблон → Triggers → открыть триггер → поле «Menu entry URL». Название и расположение поля зависят от версии интерфейса.
Структура хорошего runbook¶
Минималистичная версия, которая реально работает:
# RUNBOOK: <Название алерта>
**Ответственный:** <команда/роль, не имя сотрудника>
**Последняя проверка:** <дата>
**Следующая проверка:** <дата, рекомендуется раз в квартал>
**Проверено на:** <версия ПО / окружение>
**Применимо к:** <сервис, хост-группа, шаблон>
**Триггер Zabbix:** <название триггера + ссылка>
**Требуемые доступы:** <что нужно: SSH, Zabbix admin, AD, 1С-RAS>
## Коротко (для тех, кто читает в 3 ночи)
Скорее всего: <причина 1> — выполни <X>
Если не помогло: эскалируй на <имя, телефон>
## Severity и SLA
P1 / реакция 15 мин / восстановление 4 часа
## Влияние на бизнес
Одна строчка — что не работает для пользователей.
## Диагностика (шаги по порядку)
1. Проверь <что> командой/ссылкой
2. Проверь <что ещё>
3. ...
## Типовые причины и решения
| Причина | Признак | Решение |
|---------|---------|---------|
| ... | ... | ... |
## Эскалация
- 15 мин не восстановилось → дежурный L2 <роль/дежурная группа, не имя конкретного человека>
- 30 мин → CIO + DR-план
- Контакты — через дежурную ротацию/матрицу эскалации (отдельный документ, не в runbook)
## Связанные runbook
## Постмортем
<ссылка на последний>
Главный раздел — Коротко. Если человек сонный и в панике — он прочитает первые три строчки. Они должны закрывать 80% случаев.
Чего runbook не должен содержать¶
- ❌ Команды без условий проверки (
rm -rf,DROP TABLE,iisresetбез проверки, что сервис действительно перестал отвечать) - ❌ Пароли, API-токены, секреты — только ссылки на хранилище секретов или роль
- ❌ Failover, перезапуск сервисов в промышленной среде, откат — без явного согласования и плана отката
- ❌ «Сделай X, потом Y» без указания что делать если X не сработало
- ❌ Безусловные деструктивные операции (удаление данных, сброс конфигурации)
Runbook должен вести к решению или эскалации — не к новым проблемам.
Критерии качества runbook¶
Runbook «покрыт» — это не «файл создан». Чек-лист качества:
- Ссылка из поля Menu entry URL триггера Zabbix работает и ведёт на актуальный документ
- Ответственный назначен (роль/команда, не имя уволившегося сотрудника)
- Команды проверены на актуальной версии ПО
- Требуемые права доступа указаны и дежурный ими обладает
- Путь эскалации ведёт на живых людей (дежурная ротация, не личный телефон)
- План отката описан для деструктивных операций
- Дата последней проверки не старше квартала для P1/P2 сервисов
Готовые runbook — где брать¶
Готовые репозитории¶
PagerDuty Incident Response https://response.pagerduty.com/ Лучший открытый источник. Не столько готовые runbook под конкретный стек, сколько фреймворк и шаблоны — как писать, структура, процессы. Читать обязательно.
SRE Book от Google https://sre.google/sre-book/being-on-call/ Не runbook, но философия — как думать про дежурство и документирование инцидентов. Стоит прочесть главу.
Prometheus Operator Runbooks https://runbooks.prometheus-operator.dev/ Живой пример технических runbook: алерт → возможные причины → шаги диагностики. Полезно как образец структуры даже вне Kubernetes.
Готовые runbook под конкретные стеки¶
Это то, что реально полезно: поиск под конкретный инструмент.
| Стек | Где искать |
|---|---|
| PostgreSQL | pghero — скорее диагностический дашборд, не библиотека runbook; для runbook искать postgresql runbook + материалы Microsoft Learn по диагностике Azure PostgreSQL как структурный образец |
| Windows / AD | материалы Microsoft Learn по диагностике Windows Server — не называются runbook, но по сути они |
| Exchange | Microsoft Exchange Troubleshoot Analyzer + docs, раздел High Availability |
| Zabbix | Готовых нет, но в шаблонах сообщества часто есть описание со шагами |
| Linux/системное | https://github.com/danluu/post-mortems — постмортемы крупных компаний, из них вытекают runbook |
| Kubernetes | https://runbooks.prometheus-operator.dev/ — примеры runbook для правил алертов Kubernetes/Prometheus |
| Сеть (Cisco) | Cisco Troubleshooting Guides — официальная документация, структура как у runbook |
Коммерческие/SaaS-источники¶
Atlassian https://www.atlassian.com/incident-management Хорошая база по управлению инцидентами: роли, процессы, постмортем и операционные практики. Структуру можно адаптировать под runbook.
Datadog https://docs.datadoghq.com/notebooks/ Notebooks часто используют как живые документы для диагностики: графики, запросы, текстовые шаги и ссылки в одном месте. Идея хорошо переносится на runbook.
Blameless / Incident.io / FireHydrant
Это SaaS-платформы для управления инцидентами, у всех есть блоги с примерами runbook реальных компаний. Ищите по запросу [название] runbook examples.
Где хранить¶
| Инструмент | Подходит ли | Заметки |
|---|---|---|
| Bookstack | ✅ хорошо | Иерархия книг, поиск, Markdown |
| Confluence | ✅ хорошо | Если уже есть, использовать |
| Git (Markdown) | ✅ отлично | Версионирование, ссылки из Zabbix |
| Wiki в Zabbix | ❌ нет такого | Только описание триггера, не полноценно |
| Notion/SharePoint | ⚠️ можно | Хуже с поиском и версионированием |
| Word-файлы в папке | ❌ нет | Умирают, теряются, не ищутся |
Главное правило хранения: runbook должен быть найден за 30 секунд. Если человек в 3 ночи не может найти — runbook не существует.
Сколько их нужно¶
Не нужно сразу 200 штук. Реалистичный подход:
- Месяц 1: 5–7 runbook для самых частых и критичных алертов
- Месяц 3: 20–30 (все Disaster + часть High)
- Год 1: 50–70 (всё что важно)
Остальное — по мере инцидентов. Постмортем → runbook. Это органический рост.
Автогенерация — есть ли смысл¶
Тема популярная сейчас. Несколько инструментов пытаются генерировать runbook из описаний алертов через LLM.
Честно: для базовой структуры — помогает. Для конкретных команд под вашу инфраструктуру — нужна ручная правка. Воспринимайте как «заготовку черновика», не готовый продукт.
Попробовать: скопируйте описание триггера в любой LLM и попросите «напиши runbook для этого алерта». Получите 70% готового — остаётся адаптировать под ваш стек, команды, контакты.
⚠️ Дисклеймер. LLM может придумать несуществующие команды, неверные пути к файлам, устаревшие флаги, опасные операции без контекста («просто удали и пересоздай»). Каждый сгенерированный runbook обязан пройти проверку ответственным инженером и быть проверен в тестовой среде до использования в промышленной среде. Особенно опасно: команды для MSSQL, 1С, Exchange, процедуры failover.
Вот и всё по runbook. Там нет ничего сложного — сложность в том, чтобы реально писать их после каждого инцидента, а не «потом». Это дисциплина, не технология.
Связь с остальными главами¶
- Глава 2 — Severity = действие: каждый Disaster и 80% High обязаны иметь runbook
- Глава 7 — Roadmap: когда писать первые 5–7 runbook
- Глава 12 — Эксплуатационная модель мониторинга: постмортем → runbook — органический рост базы