如何编写汇总Prometheus指标network_overall_status_dut并返回整体状态
生成Prometheus汇总指标network_overall_status_dut的解决方案
你可以通过两种方式实现需求,以下是具体的PromQL和配置方法:
方法一:布尔逻辑运算
直接利用布尔表达式结合bool修饰符将结果转换为0/1值:
network_overall_status_dut = bool (network_status_up_dut == 1 and network_status_down_dut == 1)
说明:只有当network_status_up_dut和network_status_down_dut同时为1时,表达式返回1;任意一个指标为0时,返回0,完全匹配你的需求。
方法二:聚合函数min()
如果两个指标的标签集完全一致,也可以使用min()聚合函数:
network_overall_status_dut = min by () (network_status_up_dut, network_status_down_dut)
说明:min()会取两个指标值中的最小值,当两者都为1时结果为1,只要有一个是0结果就为0,同样满足要求。如果指标带有共有的标签,需要将by ()替换为by (label1, label2)(列出所有共同标签),确保聚合逻辑正确。
持久化汇总指标(可选)
如果需要长期保存这个汇总指标,可以在Prometheus的配置文件中添加记录规则:
groups: - name: network_status_rules rules: - record: network_overall_status_dut expr: bool (network_status_up_dut == 1 and network_status_down_dut == 1) # 若使用min方法,替换为对应的expr即可
内容的提问来源于stack exchange,提问作者ramesh k
相关产品推荐
相关产品推荐

