Есть два запроса:
1) sum by (name, class) (rate(drop_bytes{name=~".+", class!=""} )) > 0
2) sum by(name,class) (increase( drop_bytes{name=~".+", class!=""}[:24h]) ) > 0
Задача (примерно) - найти для каких пар (name,class) было ненулевой прирост счётчика drop_bytes.
Не могу понять: почему на выходе они дают разный набор пар (name, class) - второй запрос даёт больше пар.
Второй запрос, скорее всего, неправильный - там двоеточие лишнее перед 24h. В текущем виде он пытается использовать prometheus subquery, который тут вообще не нужен. См.
https://medium.com/@valyala/prometheus-subqueries-in-victoriametrics-9b1492b720b3Если же убрать лишнее двоеточие перед 24h, то этот запрос вернет ряды, значения которых увеличились в течение последних 24 часов. Подразумевается, что ряды drop_bytes могут только расти, но не уменьшаться, т.е. это counter. Если это не так, то increase может возвращать вообще все, что угодно. См. про counter вот тут -
https://prometheus.io/docs/concepts/metric_types/#counter Первый же запрос возвращает ряды, значения которых увеличились в течение последнего шага (параметр step в запросе к /api/v1/query_range или к /api/v1/query - см.
https://prometheus.io/docs/prometheus/latest/querying/api/#expression-queries ). По умолчанию он равен 5 минутам. Очевидно, что количество рядов, значение которых увеличилось за последние 5 минут, будет меньше количества рядов, значение которых увеличилось за последние 24 часа