菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow prometheusbreadcrumb arrow prometheus.exporter.blackbox
开源

prometheus导出器:Blackbox

prometheus.exporter.blackbox组件包含blackbox_exporterblackbox_exporter允许您收集黑盒指标(探测)并将它们作为Prometheus指标公开。

用法

alloy
prometheus.exporter.blackbox "LABEL" {
  target {
    name    = "example"
    address = "EXAMPLE_ADDRESS"
  }
}

或者

alloy
prometheus.exporter.blackbox "LABEL" {
  targets = TARGET_LIST
}

参数

以下参数可以用来配置导出器的行为。省略的字段将使用默认值。

名称类型描述默认必填
config_file字符串blackbox_exporter配置文件路径。
config字符串秘密blackbox_exporter的配置作为内联字符串。
probe_timeout_offset持续时间在探测目标时从超时时间中减去的秒数偏移量。"0.5s"
targets列表(映射字符串)黑盒目标。

必须指定config_fileconfig参数。该config_file参数指向一个YAML文件,定义要使用哪些blackbox_exporter模块。该config参数必须是一个YAML文档字符串,定义要使用哪些blackbox_exporter模块。config通常通过使用另一个组件的导出来加载。例如,

  • local.file.LABEL.content
  • remote.http.LABEL.content
  • remote.s3.LABEL.content

在相同的配置文件中,不能同时使用targets参数和在target块中的targets参数。当黑盒目标不能以目标块的形式传递,因为另一个组件提供它们时,必须使用targets参数。

可以为目标设置以下标签

  • name:要探测的目标名称(必需)。
  • address:要探测的目标地址(必需)。
  • module:用于探测的黑盒模块。

该组件将任何额外的标签传递给导出的目标。

有关生成配置文件的更多信息,请参阅blackbox_exporter

以下块在prometheus.exporter.blackbox定义内受支持,用于配置特定收集器的选项

层次结构名称描述必填
targettarget配置黑盒目标。

目标块

target 块定义了一个单独的黑盒目标。可以通过指定多次 target 块来定义多个目标。name 属性是必须的,它将在目标的 job 标签中使用。

名称类型描述默认必填
name字符串要检测的目标的名称。yes
address字符串要检测的目标的地址。yes
module字符串用于检测的黑盒模块。""
labelsmap(string)要添加到目标中的标签。

指定的 labels 参数中的标签不会覆盖由 blackbox_exporter 设置的标签。

导出字段

以下字段可以导出,并可由其他组件引用。

名称类型描述
targets列表(映射字符串)可用于收集导出度量值的标记。

例如,targets 可以传递给 discovery.relabel 组件以重写目标的标签集,或者传递给收集暴露度量的 prometheus.scrape 组件。

导出的目标使用由 运行命令 指定的配置好的 内存中流量 地址。

组件健康

prometheus.exporter.blackbox 只有在给定无效配置时才会报告为不健康。在这种情况下,导出字段将保留其最后健康值。

调试信息

prometheus.exporter.blackbox 暴露没有组件特定的调试信息。

调试度量

prometheus.exporter.blackbox 暴露没有组件特定的调试度量。

示例

使用黑盒导出配置文件收集指标

此示例使用 prometheus.scrape 组件prometheus.exporter.blackbox 收集指标。向由 grafana 目标产生的指标中添加额外的标签 env="dev"。`example 目标没有任何添加的标签。

使用 config_file 参数定义要使用哪个 blackbox_exporter 模块。你可以使用 blackbox 示例配置文件

alloy
prometheus.exporter.blackbox "example" {
  config_file = "blackbox_modules.yml"

  target {
    name    = "example"
    address = "https://example.com"
    module  = "http_2xx"
  }

  target {
    name    = "grafana"
    address = "https://grafana.org.cn"
    module  = "http_2xx"
    labels = {
      "env" = "dev",
    }
  }
}

// Configure a prometheus.scrape component to collect blackbox metrics.
prometheus.scrape "demo" {
  targets    = prometheus.exporter.blackbox.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:将指标发送到的 Prometheus 兼容 remote_write 服务器 URL。
  • USERNAME:用于对远程 write API 进行身份验证的用户名。
  • PASSWORD:用于对远程 write API 进行身份验证的密码。

使用嵌入配置收集指标

此示例使用嵌入配置

alloy
prometheus.exporter.blackbox "example" {
  config = "{ modules: { http_2xx: { prober: http, timeout: 5s } } }"

  target {
    name    = "example"
    address = "https://example.com"
    module  = "http_2xx"
  }

  target {
    name    = "grafana"
    address = "https://grafana.org.cn"
    module  = "http_2xx"
    labels = {
      "env" = "dev",
    }
  }
}

// Configure a prometheus.scrape component to collect blackbox metrics.
prometheus.scrape "demo" {
  targets    = prometheus.exporter.blackbox.example.targets
  forward_to = [prometheus.remote_write.demo.receiver]
}

prometheus.remote_write "demo" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

从动态目标集中收集指标

此示例与上述示例相同,但黑盒目标是通过对 discovery.file 组件 进行发现并将它们发送到 prometheus.exporter.blackbox 进行检测的。

alloy
discovery.file "example" {
  files = ["targets.yml"]
}

prometheus.exporter.blackbox "example" {
  config = "{ modules: { http_2xx: { prober: http, timeout: 5s } } }"
  targets = discovery.file.example.targets
}

prometheus.scrape "example" {
  targets    = prometheus.exporter.blackbox.example.targets
  forward_to = [prometheus.remote_write.example.receiver]
}

prometheus.remote_write "example" {
  endpoint {
    url = PROMETHEUS_REMOTE_WRITE_URL

    basic_auth {
      username = USERNAME
      password = PASSWORD
    }
  }
}

此示例中的 YAML 文件如下所示

yaml
- targets:
  - localhost:9009
  labels:
    name: t1
    module: http_2xx
    other_label: example
- targets:
  - localhost:9009
  labels:
    name: t2
    module: http_2xx

替换以下内容

  • PROMETHEUS_REMOTE_WRITE_URL:将指标发送到的 Prometheus 兼容 remote_write 服务器 URL。
  • USERNAME:用于对远程 write API 进行身份验证的用户名。
  • PASSWORD:用于对远程 write API 进行身份验证的密码。

兼容组件

prometheus.exporter.blackbox 的导出可以被以下组件消费

注意

连接某些组件可能不合理,或者可能需要进一步配置才能使连接正常工作。有关详细信息,请参阅相关文档。