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

prometheus.exporter.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_filestringblackbox_exporter 配置文件路径。
configstringsecret作为内联字符串的 blackbox_exporter 配置。
probe_timeout_offsetduration探测目标时从超时中减去的秒数偏移量。"0.5s"
targetslist(map(string))Blackbox 目标。

必须指定 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 块。当 blackbox 目标无法作为目标块传递时,必须使用 targets 参数,因为另一个组件提供了它们。

您可以为目标设置以下标签

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

组件将任何其他标签传递给导出的目标。

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

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

层级结构名称描述必需
targettarget配置 Blackbox 目标。

target 块

target 块定义了一个单独的 blackbox 目标。target 块可以多次指定以定义多个目标。name 属性是必需的,将在目标的 job 标签中使用。

名称类型描述默认值必需
namestring要探测的目标的名称。
addressstring要探测的目标的地址。
modulestring用于探测的 Blackbox 模块。""
labelsmap(string)要添加到目标的标签。

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

导出的字段

以下字段已导出,可以被其他组件引用。

名称类型描述
targetslist(map(string))可用于收集导出器指标的目标。

例如,targets 可以传递给 discovery.relabel 组件以重写目标的标签集,或者传递给 prometheus.scrape 组件以收集公开的指标。

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

组件健康状况

仅当 prometheus.exporter.blackbox 获得无效配置时,才报告为不健康。在这些情况下,导出的字段会保留其上次的健康值。

调试信息

prometheus.exporter.blackbox 不会公开任何特定于组件的调试信息。

调试指标

prometheus.exporter.blackbox 不会公开任何特定于组件的调试指标。

示例

使用 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:用于向 remote_write API 进行身份验证的用户名。
  • PASSWORD:用于向 remote_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
    }
  }
}

从动态目标集收集指标

此示例与上面的示例相同,但是 blackbox 目标是通过 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:用于向 remote_write API 进行身份验证的用户名。
  • PASSWORD:用于向 remote_write API 进行身份验证的密码。

将实例标签设置为目标 URL

某些仪表板可能期望 Blackbox 指标上的 instance 标签包含目标 URL 的值。以下示例演示了如何使用 Prometheus 重新标记来实现这一点

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

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

discovery.relabel "example" {
  targets = prometheus.exporter.blackbox.example.targets

  rule {
    source_labels = ["__param_target"]
    target_label = "instance"
  }
}

prometheus.scrape "example" {
  targets = discovery.relabel.example.output
  forward_to = [prometheus.remote_write.metrics_service.receiver]
}

兼容的组件

prometheus.exporter.blackbox 具有可以被以下组件使用的导出

注意

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