PromQL 多连接
Posted
技术标签:
【中文标题】PromQL 多连接【英文标题】:PromQL multi join 【发布时间】:2020-08-12 08:28:50 【问题描述】:好的,这不是我想要运行的简单 PromQL 查询。这是我的输入数据:
accessPoint_numClientsmac="00:11:22:33:44:55" 11
accessPoint_numClientsmac="00:11:22:33:44:AA" 12
accessPoint_numClientsmac="00:11:22:33:44:BB" 5
accessPointsmac="00:11:22:33:44:55", groupId="1" 1
accessPointsmac="00:11:22:33:44:AA", groupId="1" 1
accessPointsmac="00:11:22:33:44:BB", groupId="2" 1
controller_zone_groupsgroupId="1", groupName="Foo" 1
controller_zone_groupsgroupId="2", groupName="Bar" 1
controller_zone_groupsgroupId="3", groupName="Baz" 1
所以,我想生成一个 grafana 图,按组对客户计数进行分组,并打印出相关的 groupNames。
这是我目前的尝试,但这与有效的查询相去甚远:
sum by (groupId) (accessPoint_numClients * on (mac) group_left(groupId) accessPoints * on (groupId) group_left(groupName) controller_zone_groups)
有没有机会让它工作?
谢谢,沃尔克...
================更新===============
好的,也许是一些带有响应的示例查询:
sum by (apGroupId) ((smartzone_accessPoint_numClients * on (mac) group_left(apGroupId) smartzone_accessPoints) or (groupId) group_left(groupName) smartzone_controller_zone_groups)
==> "在 char 125 处解析错误:聚合中出现意外,预期为 \")\""
sum by (apGroupId) (smartzone_accessPoint_numClients * on (mac) group_left(apGroupId) smartzone_accessPoints) * on (apGroupId) group_left(groupName) smartzone_controller_zone_groups
==> "不允许多对多匹配:匹配的标签在一侧必须是唯一的"
sum by (groupName) (smartzone_accessPoint_numClients * on (mac) group_left(apGroupId) smartzone_accessPoints) * on (apGroupId) group_left(groupName) smartzone_controller_zone_groups
==> "不允许多对多匹配:匹配的标签在一侧必须是唯一的"
【问题讨论】:
【参考方案1】:尝试使用以下内容:
sum by (groupName) (
sum by (groupId) (
accessPoint_numClients * on(mac) group_right(groupId) accessPoints
) * on(groupId) group_right(groupName) controller_zone_groups
)
【讨论】:
【参考方案2】:您的问题有点不清楚,但我认为您要问的是为什么 groupName
不在输出中。答案是sum
将其聚合起来,将groupName
添加到by
即可解决。
【讨论】:
以上是关于PromQL 多连接的主要内容,如果未能解决你的问题,请参考以下文章