Здесь необходимо задать вопрос: как вообще сравнить два вектора?
Скаляры сопоставимы, но векторы в целом - нет. Если вы хотите сравнить их, вы должны определить математические показатели, с помощью которых они могут быть измерены.
Нужен массив сопоставимых элементов, чтобы определить среди них минимум. Поэтому функция min
в Prometheus имеет не более одного аргумента. Этот единственный аргумент на самом деле представляет собой список сопоставимых элементов.
Например, вы можете попробовать это:
- сначала выполните что-нибудь это:
(count(up{squad=~"XYZ"}) by(env))
Для меня набор результатов выглядит так (и, что более важно, они сопоставимы):
{env="dev"} 61
{env="preprod"} 39
{env="prod"} 39
А затем, когда я выполню это:
max((count(up{squad=~"XYZ"}) by(env)))
Получаю результат:
{} 61
Чего и следовало ожидать.
Вышеупомянутое вернет среду, в которой есть наиболее доступные экземпляры - потому что до максимума мы выполнили агрегирование (функция подсчета), которая вернула скалярное значение, которое сопоставимо с другими скалярными значениями, которые представляют количество экземпляров в других средах.
person
trinity
schedule
19.05.2021
min(a, b)
. Я не уверен, возможно ли это с помощью PromQL. - person valyala   schedule 27.05.2021