Как написать запрос Prometheus, который возвращает результат для каждого значения метки?

#prometheus #promql

#prometheus #promql

Вопрос:

У меня есть набор показателей

 session_duration_seconds{server="S.01",device_token="d0e025d0-ea09-4e7c-8ab1-6216d762a03f"} 2
session_duration_seconds{server="S.01",device_token="806c8c59-0f3c-4ec4-9538-f256408d4d74"} 8
session_duration_seconds{server="S.02",device_token="389c8c59-1336-2224-4538-8956404d4790"} 1
...many of them...
 

Вообще говоря, для каждого сервера S.XX предоставляет кучу метрик session_duration_seconds с уникальным значением метки device_token.

Эти серверы поступают из автообнаружения. Таким образом, их имена могут различаться. Они могут появляться и исчезать.

Чего мне нужно достичь:

  1. Мне нужно вычислить квантили для каждой метрики с одной и той же меткой сервера. (В идеале, я добавлю это в правило перекодирования для автоматического пересчета.) Но как написать такой запрос PromQL, когда необходимо получить метки из подзапроса?
  2. Создайте предупреждение для ситуации, когда сервер перестает предоставлять метрику session_duration_seconds. Например, absent_over_time для каждой метки сервера. Но список серверов (целевых) постоянно меняется.