Почему PromQL, а не свой DSL
Стандарт побеждает.
#promql#architecture
Мы могли бы изобрести свой query language. И мы серьёзно это рассматривали.
Что мы пробовали
Прототип №1 — JSON-based selectors. Простой для парсинга, ad-hoc «aggregation» через перечисление операций. Спустя 2 недели поняли: за 5 лет существования мониторинг-индустрия наработала идиомы для каждого use case, и наш DSL начал реизобретать те же конструкции, что есть в PromQL — медленнее и хуже.
Что мы выбрали
Полный PromQL через prometheus/promql/parser. AST-rewrite для multi-tenancy. Преимущества:
- Знакомый — большинство инженеров уже знают
- Стандартизированный — Prometheus / VictoriaMetrics / Thanos / Mimir все его говорят
- Совместимый — Grafana дашборды копируются без изменений
Где компромисс
Anomaly правила не поддерживают arbitrary PromQL — только bare metric names. Обоснование в phases.