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

Что внутри этого «комбайна»?
Аббревиатура LGTM в названии — это не только привычное «Looks Good To Me», но и перечисление ключевых компонентов стека Grafana:
- Loki — для работы с логами.
- Grafana — для визуализации всего и вся.
- Tempo — для распределенной трассировки.
- Metrics (Prometheus) — для сбора и хранения метрик.
Но это еще не всё. В образ также включены OpenTelemetry Collector (точка входа для всех ваших данных) и Pyroscope для непрерывного профилирования. По сути, вы получаете готовую лабораторию для исследования поведения вашего приложения.
Зачем это нужно разработчику?
Главная ценность проекта — в мгновенном старте. Это идеальное решение для:
- Локальной разработки: Проверить, правильно ли ваше приложение отправляет трейсы или метрики.
- Демонстраций: Показать возможности мониторинга клиенту или команде без развертывания тяжелой инфраструктуры.
- Обучения: Пощупать 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.
Полезные ссылки:
- Репозиторий проекта
- Примеры приложений на разных языках (Java, Go, Python, .NET, Node.js) — отличный способ быстро проверить всё в деле.