Три столпа observability: логи, метрики, трейсы
↑ 7.2 Observability: логи, метрики, трейсинг, OpenTelemetry · → Следующая
Зачем это на собесе
«Как вы понимаете, что происходит в проде?» — стартовый вопрос по эксплуатации.
Объяснение
Мониторинг отвечает на заранее известные вопросы («жив ли сервис»). Observability позволяет исследовать неизвестные проблемы по данным, которые система отдаёт.
| Столп | Что | Плюс | Минус |
|---|---|---|---|
| Логи | события с контекстом | детали конкретного случая | объём, дорого искать без структуры |
| Метрики | числовые ряды во времени | дёшевы, агрегируются, алерты | нет деталей отдельного запроса |
| Трейсы | путь одного запроса через сервисы | видно, где потеряно время | нужны инструментация и выборка |
| Профили (4-й столп) | где тратятся CPU/память | причина на уровне кода | отдельная инфраструктура |
Как они работают вместе: алерт по метрике (рост ошибок) → трейс проблемного запроса (какой сервис медленный) → логи этого запроса по trace_id → профиль (какой метод).
flowchart LR A[Метрика: ошибки 5xx растут] --> B[Трейс: медленный вызов в billing] B --> C[Лог: timeout при обращении к БД] C --> D[Профиль/дамп: пул соединений]
Ключ ко всему — корреляция: единый trace_id в логах, метриках (exemplars) и трейсах.
Нюансы и подводные камни
- Высокая кардинальность меток (
userIdв метке метрики) убивает хранилище метрик. - Логи без структуры нельзя агрегировать.
- Трейсы всех запросов стоят дорого: применяйте выборку (sampling).
- Данные наблюдаемости — тоже данные: не пишите в них секреты и персональную информацию.
- Инструмент не заменяет процесс: алерты должны быть о симптомах для пользователя.
Практика
- Пройдите путь «алерт → метрика → трейс → лог» на тестовой поломке.
- Добавьте
trace_idво все логи. - Найдите метрику с высокой кардинальностью и исправьте.
Вопросы с ответами
Чем observability отличается от мониторинга?
Мониторинг проверяет известные состояния; observability позволяет исследовать произвольные вопросы по телеметрии.
Зачем trace_id в логах?
Чтобы связать все логи одного запроса между сервисами и с трейсом.