Как развернуть полный стек мониторинга за пять секунд с помощью Docker

22 Jul, 2026
1,947
🔱 207
👥 18

Представьте ситуацию: вы начинаете новый проект или хотите внедрить OpenTelemetry в существующий. Вам нужно где-то хранить метрики, куда-то складывать логи, визуализировать трейсы и, желательно, не тратить два дня на настройку связки из Prometheus, Loki, Tempo и Grafana. Знакомая история? Обычно это превращается в бесконечную правку YAML-конфигов и попытки подружить компоненты между собой.

Команда Grafana Labs решила эту проблему элегантно, выпустив проект docker-otel-lgtm. Это «швейцарский нож» для разработчика, который упаковывает полноценный бэкенд для OpenTelemetry в один-единственный Docker-образ.

Overview of telemetry flow: applications, optionally auto-instrumented with OBI for traces and metrics, send telemetry to the OpenTelemetry Collector, which routes metrics to Prometheus, traces to Tempo, logs to Loki, and profiles to Pyroscope, with all signals visualized in Grafana

Что внутри этого «комбайна»?

Аббревиатура LGTM в названии — это не только привычное «Looks Good To Me», но и перечисление ключевых компонентов стека Grafana:

  • Loki — для работы с логами.
  • Grafana — для визуализации всего и вся.
  • Tempo — для распределенной трассировки.
  • Metrics (Prometheus) — для сбора и хранения метрик.

Но это еще не всё. В образ также включены OpenTelemetry Collector (точка входа для всех ваших данных) и Pyroscope для непрерывного профилирования. По сути, вы получаете готовую лабораторию для исследования поведения вашего приложения.

Зачем это нужно разработчику?

Главная ценность проекта — в мгновенном старте. Это идеальное решение для:

  1. Локальной разработки: Проверить, правильно ли ваше приложение отправляет трейсы или метрики.
  2. Демонстраций: Показать возможности мониторинга клиенту или команде без развертывания тяжелой инфраструктуры.
  3. Обучения: Пощупать OpenTelemetry «руками» и понять, как взаимодействуют разные сигналы обсервабилити.

Кстати, интересно, что проект позиционируется именно как инструмент для разработки и тестов. Для продакшена Grafana Labs ожидаемо советует свои облачные решения, но для локальной машины otel-lgtm — это просто спасение.

Магия eBPF: мониторинг без изменения кода

Одна из самых крутых фишек проекта — поддержка OBI (OpenTelemetry eBPF Instrumentation). Если вы работаете на Linux, вы можете включить авто-инструментацию.

Представьте: у вас есть Java или Python приложение, в котором вообще нет кода для мониторинга. Вы запускаете контейнер с флагом ENABLE_OBI=true, и он начинает «видеть» HTTP/gRPC запросы вашего приложения прямо через ядро системы, автоматически создавая трейсы и метрики.

Например, чтобы следить за всеми Java-процессами в системе, достаточно запустить:

ENABLE_OBI=true OBI_TARGET=java ./run-lgtm.sh

Это выглядит как магия, но это реальность современных технологий обсервабилити.

Как начать работу

Разработчики максимально упростили порог входа. Если у вас установлен Docker, достаточно одной команды:

docker pull grafana/otel-lgtm:latest
./run-lgtm.sh

После запуска по адресу http://localhost:3000 вас встретит привычная Grafana (логин/пароль: admin/admin), где уже настроены все источники данных. Вам остается только направить данные из вашего приложения на стандартные порты OpenTelemetry (4317 для gRPC или 4318 для HTTP).

А если я использую Kubernetes?

Никаких проблем. В репозитории лежат готовые манифесты. Пара команд kubectl apply и port-forward, и ваш локальный кластер обеспечен полным стеком мониторинга.

Практические фишки, которые экономят время

В моей практике часто бывает нужно сохранить данные между перезапусками контейнера. В otel-lgtm это предусмотрено: все данные пишутся в директорию /data. Просто примонтируйте туда volume, и ваши графики не исчезнут после docker stop.

Еще одна полезная деталь — возможность отправлять данные «наружу». Если вы наигрались локально и хотите пробросить эти же данные в Grafana Cloud или другой бэкенд, это настраивается через переменные окружения OTEL_EXPORTER_OTLP_ENDPOINT. Это превращает локальный контейнер в своего рода продвинутый шлюз.

Стоит ли пробовать?

Если вы хоть раз тратили больше часа на настройку Prometheus и Grafana для локальных тестов — однозначно да. Проект docker-otel-lgtm убирает всю рутину. Вы просто запускаете контейнер и фокусируетесь на главном — коде своего приложения и анализе его поведения.

Конечно, это не замена полноценному кластеру мониторинга в продакшене, но как инструмент «первой помощи» для разработчика — это, пожалуй, лучшее, что сейчас есть в экосистеме OpenTelemetry.

Полезные ссылки:

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.