将 MIB 变量标签连接到 Prometheus 中其他两个 MIB 变量的另一个查询结果
Posted
技术标签:
【中文标题】将 MIB 变量标签连接到 Prometheus 中其他两个 MIB 变量的另一个查询结果【英文标题】:Concatenate MIB variable label to another query result from other two MIB variables in Prometheus 【发布时间】:2019-10-21 20:29:14 【问题描述】:我们有一种情况,我想将 MIB 变量标签添加到另一个查询。这另一个查询为我提供了我想要的值结果,但我需要从第一个变量中添加标签,然后按我想要的方式对它们进行排序(例如,就像我们使用 instance 标签)。
例如
variable1alert,env, index, instance, ..., labelneeded
variable2alert,env, index, instance
例如,我想获取两者的索引并以某种方式添加所需的标签 我尝试了以下查询,但在他们给我两个变量及其标签但没有连接在一起之后它们没有工作,所以我的问题是是否有可能将它们连接在一起?
查询示例:
max by index, instance (variable2 * 5) or max(variable2) by (labelneeded, index, instance)
提前谢谢你:)。
【问题讨论】:
【参考方案1】:为了解释如何从两个指标中合并标签标签,我将举一个常见的案例:
一个值指标valueinstance="foo",a_label="bar" 42
一个信息指标infoinstance="foo",version="1.2.3",another="bar" 1
信息指标(例如版本、编译器等)的值为 1,以便您可以在指标之间应用运算符:
value * on(instance) group_left(version) info
结果
instance="foo",a_label="bar",version="1.2.3" 42
on()
keyword 的参数指定匹配信息的条件,group_left()
operator 的参数指定要拉取的标签。
您要从中提取的指标可能没有值 1。在这种情况下,您可以使用 bool
modifier 与始终进行比较以获得 1:
other_metricinstance="foo",baz="void" 0.5555
value * on(instance) group_left(baz) other_metric != bool NaN
结果
instance="foo",a_label="bar",baz="void" 42
【讨论】:
以上是关于将 MIB 变量标签连接到 Prometheus 中其他两个 MIB 变量的另一个查询结果的主要内容,如果未能解决你的问题,请参考以下文章
Prometheus:帮助编辑/配置 Cisco MIB 的 snmp_exporter 的 generator.yml 文件