Вот смотрите, компания «МикроСерв» работает с 40 микросервисами, написанными на трёх разных языках: Go, Python и Java. А их нынешний стек для мониторинга и отслеживания выглядит вот так:
- Метрики: Prometheus + Grafana
- Логи: ELK (Elasticsearch + Logstash + Kibana)
- Трейсы: Jaeger (только 8 из 40 сервисов инструментированы)
В чём беда:
- Нет корреляции: ошибка в логах → невозможно найти трейс → невозможно понять, какой сервис сломался
- Vendor lock-in: переход с Jaeger на Grafana Tempo потребует переписать инструментацию во всех сервисах
- Разные SDK: Go-сервисы используют один Jaeger SDK, Python — другой, Java — третий
OpenTelemetry (OTel) — единый стандарт от CNCF, который снимает все три проблемы разом: один SDK на все языки, один протокол (OTLP) и один Collector, маршрутизирующий данные в любой бэкенд.
# Архитектура OTel
# App (SDK) → OTLP → Collector → Prometheus (metrics)
# → Tempo/Jaeger (traces)
# → Loki (logs)
#
# Смена бэкенда = изменение конфига Collector, не кода
Комментарии 0