И так, снова про метрики. Что вы знаете о Trickster?
Но начну с проблем, которые мы решали.
У нас в observability команде Prometheus начал задыхаться под нагрузкой:
- Grafana-дашборды открывались по 30-40 секунд
- Одни и те же запросы выполнялись десятки раз
- PromQL-запросы с большими временными диапазонами убивали память
- Кардинальность метрик росла, а железо - нет
Встал вопрос, как это решать, и неожиданно нашёлся Trickster.
Trickster - это умный HTTP reverse proxy, который сидит между Grafana и Prometheus. Он кэширует результаты запросов и умеет делать несколько крутых вещей:
Delta Proxy Cache - запрашивает только новые данные, а старые берёт из кэша. Например, если у вас запрос за последние 6 часов, а в кэше уже есть данные за 5 часов 50 минут - Trickster догрузит только последние 10 минут.
Time Series Merging - склеивает закэшированные данные с новыми так, что Prometheus даже не догадается.
Query Rewriting - оптимизирует тяжёлые запросы на лету.
Результаты после внедрения:
- Нагрузка на Prometheus упала на 60-70%
- Дашборды открываются в 3-5 раз быстрее (не всегда :D)
- Hit rate кэша стабильно держится на уровне 75-80%
- Можно спокойно масштабировать дашборды без страха положить Prometheus (нет)
Альтернатив особо нет. Есть Promxy, Cortex, Thanos - но они решают другие задачи (федерация, долгосрочное хранение). Именно для кэширования запросов на уровне HTTP с умным delta-подходом Trickster практически уникален.
Что важно знать:
- Работает с Prometheus, InfluxDB, ClickHouse, IronDB
- Поддерживает Redis и Filesystem как бэкенд для кэша
- Можно настроить TTL отдельно для каждого типа запросов
- Метрики самого Trickster экспортируются в Prometheus (очень meta)
Если у вас Prometheus начинает тормозить, а дашбордов становится всё больше - внедрение Trickster займёт пару часов, но сэкономит месяцы оптимизаций.
PS: ах, да, особо не смотрите на последний релиз Trickster-a, форкните репо себе и соберите image. Ребята что-то забросили сборки обновлять :(
Post #86
249