我正在使用Prometheus alerts,我想基于正则表达式模式动态地将“团队”标签添加到我的所有alerts中。我有一个示例alert:
expr: label_replace(label_replace(increase(kube_pod_container_status_restarts_total{job="kube-state-metrics",namespace=~".*",pod!~"app-test-.*"}[30m]) > 2, "team", "data", "container", ".*test.*"), "team", "data", "pod", ".*test.*")
此警报示例为与“container”和“pod”标签中的正则表达式模式“.test.”匹配的指标添加值为“data”的“team”标签。
但是,我想将此逻辑应用于我的所有警报,而不仅仅是这个特定的警报。有没有一种方法可以在Prometheus或Alertmanager中动态地做到这一点?任何指导都将不胜感激。
我尝试在警报的表达式中使用label_replace函数,对于上面提到的特定警报,它可以正常工作。我希望找到一种方法,将此标签添加应用于所有警报,而无需单独修改每个警报表达式。
有没有办法做到这一点?任何帮助或指导将不胜感激。
1条答案
按热度按时间1sbrub3j1#
此外,如果不重写所有规则,则无法根据条件向警报添加标签。
针对您的确切问题的最佳解决方案是为所有环境/团队/条件创建单独的警报,只需添加静态标签。
沿着于
但这需要将警报数量乘以团队数量。
我认为更简单的解决方案是使用alertmanager的路由功能(或PagerDuty,如果它提供类似的功能)。这样,您可以在alertmanager配置中编写条件,其中警报与哪些标签应该路由到哪些团队,并且它独立于警报创建部分。