Prometheus 查询和区分大小写
Posted
技术标签:
【中文标题】Prometheus 查询和区分大小写【英文标题】:Prometheus query and case sensitivity 【发布时间】:2019-04-18 02:47:24 【问题描述】:我有一个查询,我试图在一个标签上加入两个指标。 K_Status_Value == 5 和 ON(macAddr) state_detailslive="True"
标签 macAddr 出现在两个指标中。标签的值有时以大写 (78:32:5A:29:2F:0D) 出现在“K_Status_Value”中,有时以小写 (78:72:5d:39:2f:0a) 出现,但始终以大写形式出现“state_details”的情况。有什么方法可以让标签 macAddr 值在查询中不区分大小写,这样我就不会错过大小写不匹配的情况?
【问题讨论】:
【参考方案1】:我能想到两个选择
使用正则表达式“i”匹配修饰符:
引用 Prometheus 用户 mailing list 的 Ben Kochie 的话:
Prometheus 中的正则表达式匹配基于RE2 我认为您可以使用
(?i(matchstring))
在比赛中设置标志
确实有效:这个指标upinstance="localhost:9090",job="prometheus"
与这个表达式匹配:
upjob=~"(?i:(ProMeTHeUs))"
此提示在上述情况下无济于事。加入on (xx)
或group_left
都无济于事。
使用记录规则:
我最初希望在摄取时使用recording rule 来小写(在prometheus.yml
中)。不过这个功能目前还没有实现 (issue 1548)
【讨论】:
以上是关于Prometheus 查询和区分大小写的主要内容,如果未能解决你的问题,请参考以下文章