Мониторинг Яндекс.Метрики в Grafana через Docker Compose: Создание кэширующего API-прокси
Практическое руководство по развертыванию инфраструктуры сбора данных с помощью Flask, Infinity Datasource и автоматического провижнинга.
Современная веб-аналитика требует не просто сбора данных, но и их удобной визуализации в единых корпоративных интерфейсах. Популярный сервис Яндекс.Метрика предоставляет мощное API для извлечения сырых данных и агрегированных показателей. Однако прямая интеграция Grafana с API Яндекс.Метрики сопряжена с рядом трудностей: жесткие лимиты на количество запросов (rate limits), задержки сети и необходимость безопасного хранения токенов авторизации.
Решением этой проблемы является создание промежуточного кэширующего прокси-сервера. В данной статье мы подробно разберем готовую архитектуру на базе Docker Compose, которая автоматически разворачивает стек из веб-интерфейса Portainer для управления контейнерами, легковесного прокси на Python (Flask) и преднастроенной Grafana с плагином Infinity.
Архитектура и компоненты системы
Представленный файл конфигурации docker-compose.yml объединяет три изолированных сервиса, взаимодействующих внутри внутренней сети Docker:
- Portainer (portainer/portainer-ce): Графическая панель для управления контейнерами, томами и сетями. Позволяет быстро отслеживать состояние системы без использования CLI.
- Metrika-proxy (python:3.11-slim): Сердце системы. Самостоятельное микроприложение на Flask, которое запрашивает данные у Яндекса, фильтрует их, обрабатывает цели и сохраняет в оперативной памяти на заданное время (TTL).
- Grafana (grafana/grafana-oss): Платформа визуализации, в которую автоматически внедряются настройки источника данных и дашборда при старте контейнера.
Глубокий разбор кэширующего прокси-сервера
Компонент metrika-proxy решает критически важную задачу оптимизации запросов. API Яндекс.Метрики накладывает квоты на количество обращений в сутки и в секунду. Если даш