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 查询和区分大小写的主要内容,如果未能解决你的问题,请参考以下文章

Oracle查询语句区分大小写吗?

sql语法有没有区分大小写?

Oracle 访问数据库字段和表名有大小写区分吗

NHibernate、SQLite 和 Cyrillic 字符:区分大小写和回退查询

Oracle 如可控制查询不区分大小写?

Oracle 访问数据库字段和表名有大小写区分吗?