Замена метки над вектором диапазона в Prometheus - PullRequest
0 голосов
/ 21 марта 2020

Я хочу найти общее количество предупреждений для всех модулей, начинающихся с "sendms" за 10 минут.

Я могу использовать label_replace () , чтобы сделать это на мгновенный вектор. Но когда я хочу сделать это для данных более 10 минут, он не может работать, так как label_replace работает только для мгновенного вектора.

Объяснение проблемы на примере:

ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed"} 10
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-ebed"} 20
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-fbed"} 30
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-gbed"} 60
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-hbed"} 70
ALERTS{alertname="CPUThrottlingHigh",pod="sendmail-ibed"} 80

Использование заменить метку Я могу добавить новую метку с помощью REGEX, а затем я могу сгруппировать ее и получить результаты.

label_replace(ALERTS{alertname="CPUThrottlingHigh", "podname", "$1", "pod", "([a-z-A-Z]+)-.*")

ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed", podname="sendsms"} 10
ALERTS{alertname="CPUThrottlingHigh",pod="sendsms-dbed", podname="sendsms"} 10

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

Я хочу получить такой результат, как этот за последние 10 минут

ALERTS{alertname="CPUThrottlingHigh",podname="sendsms"} 60
ALERTS{alertname="CPUThrottlingHigh",podname="sendmail"} 210

Цель : найдите блоки, которые создают максимальное количество предупреждений за последнюю 1 неделю.

1 Ответ

1 голос
/ 21 марта 2020

Я смог решить эту проблему, выполнив label_replace после выполнения суммы

Запрос

sort_desc(sum by (pod_set) (label_replace(sort_desc(sum by (namespace, pod) (avg_over_time(ALERTS{alertname=~"(KubeDeploymentReplicasMismatch|KubePodNotReady|KubePodCrashLooping|KubeJobFailed)", alertstate="firing"}[1w]))), "pod_set", "$1", "pod", "([a-z-A-Z]+)-.*" )))

Результат

{pod_set="sendsms"} 62
{pod_set="emailspreprocessor"}  32
{pod_set="sendmail"}    21
...