计算两个指标符合条件的标签
Count labels for which two metrics meet criteria
我有来自 N 个主机的普罗米修斯指标,每个主机有两个不同的 component
作为标签:
my_status{host="H1", component="a"}
my_status{host="H1", component="b"}
my_status{host="H2", component="a"}
my_status{host="H2", component="b"}
...
my_status{host="HN", component="a"}
my_status{host="HN", component="b"}
my_status
是0到2之间的整数。
我想计算有多少 host
的两个组件的 my_status
都是 2。
如何在 Grafana 中执行此操作?
任一组件 'a' 或 'b' 状态 == 2:
count(
count by (host) (my_status{component=~"a|b"} == 2)
)
组件 'a' 和 'b' 状态 == 2:
count(
count by (host) (my_status{component="a"} == 2 and my_status{component="b"} == 2)
)
内层查询统计了my_status
个时间序列的个数,其中值为2
,满足组件条件。结果按 host
分组,所以如果你 运行 它你会看到这样的东西:
{host="A"} 1
{host="B"} 2
{host="D"} 4
外层查询只是统计内层查询返回的值的个数。由于每个主机只有一个值,它会为您提供符合条件的主机数。
我有来自 N 个主机的普罗米修斯指标,每个主机有两个不同的 component
作为标签:
my_status{host="H1", component="a"}
my_status{host="H1", component="b"}
my_status{host="H2", component="a"}
my_status{host="H2", component="b"}
...
my_status{host="HN", component="a"}
my_status{host="HN", component="b"}
my_status
是0到2之间的整数。
我想计算有多少 host
的两个组件的 my_status
都是 2。
如何在 Grafana 中执行此操作?
任一组件 'a' 或 'b' 状态 == 2:
count(
count by (host) (my_status{component=~"a|b"} == 2)
)
组件 'a' 和 'b' 状态 == 2:
count(
count by (host) (my_status{component="a"} == 2 and my_status{component="b"} == 2)
)
内层查询统计了my_status
个时间序列的个数,其中值为2
,满足组件条件。结果按 host
分组,所以如果你 运行 它你会看到这样的东西:
{host="A"} 1
{host="B"} 2
{host="D"} 4
外层查询只是统计内层查询返回的值的个数。由于每个主机只有一个值,它会为您提供符合条件的主机数。