Блог·2026-02-01

Почему 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. Преимущества:

  1. Знакомый — большинство инженеров уже знают
  2. Стандартизированный — Prometheus / VictoriaMetrics / Thanos / Mimir все его говорят
  3. Совместимый — Grafana дашборды копируются без изменений

Где компромисс

Anomaly правила не поддерживают arbitrary PromQL — только bare metric names. Обоснование в phases.