普罗米修斯黑盒导出器每个作业引用多个模块

问题描述 投票:0回答:2

对于在

job
下引用多个模块的 Prometheus 黑盒导出器,
params.module
的语义是什么?

我猜这意味着所有模块都已尝试,并且只有所有模块都成功时探测才会成功。我遇到的所有示例都仅使用单个模块(通常是

module: [http_2xx]
),并且到目前为止我还没有配置示例,也没有在源代码中查找它。也许这里有人已经/肯定从直接经验中知道了。

prometheus prometheus-blackbox-exporter
2个回答
5
投票

根据

blackbox_exporter
源代码,似乎每个探测器只执行一个测试/模块。您可以在请求中提供模块名称(如文档中建议),或者默认为
http_2xx

执行多个模块的唯一方法似乎是定义一个单独的 Prometheus 作业,并使用不同的

module
参数值。

Prometheus 的

params
是一个数组而不是单个值的唯一原因是它不限于
blackbox_exporter
,它是一种将 HTTP 参数发送到目标的通用方法(例如,可以使用
/metrics?module=foo&module=bar
之类的东西来指示目标仅返回模块
foo
bar
)的指标。

我刚刚在浏览器中进行了测试,如果您使用多个

blackbox_exporter
参数值查询
module
会发生什么情况,
blackbox_exporter
将忽略除第一个值之外的所有内容。


0
投票

您可以在一项作业中配置多个 Blackbox Exporter 模块:

忘记为

module
定义单个
job
参数(尽管无论如何都会有一个默认的 http_2xx)。 相反,请向每个不同的
__param_module
列表添加
static_config
标签。

示例来自论坛帖子

static_configs:
  - targets: [ url1, url2, url3 ]
    labels:  { __param_module: http_2xx }

  - targets: [ 8.8.8.8, 8.8.4.4 ]
    labels:  { __param_module: icmp }

另一个改进可能是使用标签

module
而不是
__param_module
。 这样,
module
就会在 Prometheus 指标中显示为标签。 当然,在这种情况下你必须延长 平常
relabel_configs
有了新的:

relabel_configs:
  - source_labels:  [__address__]
    target_label:   instance
  - source_labels:  [__address__]
    target_label:   __param_target

  - source_labels:  [module]
    target_label:   __param_module

  - target_label:   __address__
    replacement:    localhost:9115
© www.soinside.com 2019 - 2024. All rights reserved.