Что такое LGTM стек¶
LGTM — это не аббревиатура, это акроним: Loki + Grafana + Tempo + Mimir. Четыре проекта, каждый отвечает за свой тип данных:
- Loki собирает и хранит логи
- Mimir хранит и обслуживает метрики (Prometheus-совместимый)
- Tempo хранит и визуализирует распределённые трейсы
- Grafana объединяет всё в единый интерфейс
Вместе они покрывают три столпа наблюдаемости (observability): метрики, логи, трейсы. И добавляют четвёртый — профили.
Почему это важно¶
До LGTM инженер смотрел метрики в Prometheus, логи в Kibana, трейсы в Jaeger — три разных инструмента, три разных языка запросов, три разных интерфейса. Если в 3 часа ночи падала база данных, инженер открывал три вкладки и пытался сопоставить таймстемпы вручную.
LGTM делает это мгновенным: из метрики Prometheus виден всплеск — один клик, и Grafana открывает логи за тот же промежуток времени. Из логов виден traceID — ещё один клик, Grafana показывает весь трейс. Смотрим flame graph профиля — понимаем, какой метод жрал CPU.
Техническая основа этой магии: единые метки/labels везде. Имена сервисов, инстансов, сред — одни и те же во всех продуктах стека.
Grafana Alloy¶
До недавнего времени каждый продукт требовал своего агента для сбора и отправки телеметрии. Prometheus требовал exporter'ы, Loki — promtail, Tempo — OTel SDK, Pyroscope — собственный агент. Grafana объединила всё это в Grafana Alloy.
Alloy — OpenTelemetry collector, который умеет получать все виды телеметрии и отдавать их в соответствующие бэкенды LGTM:
[Ваше приложение] → [Alloy] → [Loki] логов
→ [Mimir] метрик
→ [Tempo] трейсов
Alloy — это эволюция Grafana Agent в сторону OpenTelemetry.
Correlation в Grafana¶
Имея единые labels (по service, instance, traceID), Grafana/Core автоматически связывает данные:
- метрика → логи (exemplar)
- логи → трейс (извлечение traceID через derived field)
- трейс → метрика (RED metrics изция через Span Metrics)
Это и есть главная ценность LGTM. Не только видеть — но связывать.
Далее: Loki: логи