Раздел описывает способы получения информации о внутреннем состоянии программных систем, обнаружения отклонений и последовательного поиска причин неисправностей.
Материалы раздела рассматривают логи, метрики, трассировки, профилирование, проверки состояния, оповещения и методы диагностики на уровнях приложения, операционной системы, сети, хранилищ и инфраструктуры.
Основные направления
- Основы наблюдаемости и диагностики — сигналы, симптомы, ошибки, отказы, деградация, первопричины, базовые линии и формирование проверяемых гипотез.
- Логи и события — структурированное журналирование, контекст, correlation ID, централизованный сбор, хранение, поиск и защита чувствительных данных.
- Метрики и мониторинг — типы метрик, временные ряды, golden signals, RED, USE, кардинальность, dashboards и контроль состояния ресурсов и сервисов.
- Распределённая трассировка — traces, spans, propagation контекста, анализ критического пути и поиск задержек между компонентами.
- Профилирование и анализ производительности — CPU, память, I/O, блокировки, flame graphs, нагрузочное тестирование и поиск узких мест.
- Проверки состояния и внешнее наблюдение — health checks, synthetic monitoring, real user monitoring, black-box и white-box проверки.
- Оповещения и управление сигналами — условия срабатывания, пороги, anomaly detection, дедупликация, маршрутизация, эскалация и снижение alert fatigue.
- Troubleshooting и поиск первопричин — временные шкалы, карты зависимостей, метод исключения, сравнение с исправным состоянием и диагностика по уровням системы.
- Эксплуатация средств наблюдаемости — сборщики и агенты, хранение телеметрии, retention, стоимость, доступность диагностических систем и OpenTelemetry.
Основные вопросы раздела
Материалы раздела должны помогать отвечать на следующие вопросы:
- Какие сигналы позволяют определить состояние системы и пользовательского сценария?
- Чем наблюдаемость отличается от мониторинга и диагностики?
- Какие события следует записывать в логи и какой контекст к ним добавлять?
- Какие метрики характеризуют нагрузку, ошибки, задержки и насыщение ресурсов?
- Как связать запросы между несколькими сервисами с помощью трассировки?
- Когда требуется профилирование CPU, памяти, ввода-вывода или блокировок?
- Чем внутренние проверки отличаются от наблюдения системы снаружи?
- Как построить оповещение, которое требует действия и не создаёт лишнего шума?
- Как сформировать и проверить гипотезу о причине неисправности?
- Как определить границу проблемы между приложением, сетью, хранилищем и инфраструктурой?
- Как восстановить последовательность событий, предшествовавших отказу?
- Как управлять объёмом, сроком хранения и стоимостью телеметрии?
Границы раздела
Раздел посвящён сбору и анализу диагностических данных, мониторингу состояния и поиску причин технических проблем.
Механизмы конкретных операционных систем рассматриваются в разделе операционных систем. Сетевая диагностика опирается на раздел сетей и протоколов, а диагностика баз данных — на раздел данных и хранилищ. Реагирование на инциденты и восстановление сервиса относятся к разделу доставки и эксплуатации. Надёжность и поведение системы при частичных отказах рассматриваются в разделе распределённых систем и надёжности.