Фильтрация Прометея при использовании правила записи - PullRequest
0 голосов
/ 17 апреля 2020

У меня установлено следующее правило записи в Prometheus:

- record: web:prod:inbound_request_duration_seconds:by_private_ip:rate1m
  expr: sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web"}[1m])) by (private_ip)

И когда я выполняю запрос, указав имя правила в Grafana (или Prometheus Explorer), правило записи работает просто отлично.

Что я хочу сделать, так это отфильтровать это правило записи по httpStatus, которое я отправляю в гистограмме, настроенной в моем приложении.

Если я запускаю, сделайте что-то вроде этого:

web:prod:inbound_request_duration_seconds:by_private_ip:rate1m{httpStatus="^5..$"}

Я не получаю ошибку, я просто не получаю вывод, тогда как если я беру необработанный запрос и делаю это:

sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web", httpStatus="^5..$"}[1m])) by (private_ip)

Я получаю ожидаемый вывод.

Возможно ли фильтровать по правилу записи? Или мне нужно создать дополнительные правила записи с включенными фильтрами?

1 Ответ

0 голосов
/ 25 апреля 2020

Ваше правило записи объединяет все временные ряды на private_ip, а все остальные метки удаляются. Используйте следующее выражение:

sum(rate(inbound_http_request_duration_seconds_sum{job="prod-web"}[1m])) by (private_ip, httpStatus)

...