我想查找所有以“ sendsms”开头的豆荚超过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分钟内对ALERTS进行此操作并计算总和?
我想要过去10分钟这样的结果
ALERTS{alertname="CPUThrottlingHigh",podname="sendsms"} 60
ALERTS{alertname="CPUThrottlingHigh",podname="sendmail"} 210
目标:查找在过去1周内创建警报数量最多的广告连播。
答案 0 :(得分:4)
求和后,我可以通过执行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