菜单
正式发布 (GA) 开源

discovery.consulagent

discovery.consulagent 允许您从 Consul Agent API 中检索抓取目标。仅监视注册到在同一主机上运行的本地 Agent 的服务。这适用于大型 Consul 集群,因为使用 Catalog API 可能会过于缓慢或资源密集。

用法

alloy
discovery.consulagent "<LABEL>" {
  server = "<CONSUL_SERVER>"
}

参数

您可以在 discovery.consulagent 中使用以下参数

名称类型描述默认值必需
datacenterstringConsul Agent 配置运行的数据中心。如果未提供,则从本地 Consul Agent 检索数据中心。
passwordsecret要使用的密码。
refresh_intervalduration刷新容器列表的频率。"30s"
schemestring与 Consul Agent 通信时使用的 scheme。http
serverstringConsul Agent API 的主机和端口。localhost:8500
serviceslist(string)要检索目标的服务的列表。如果省略,则抓取所有服务。
tag_separatorstring用于将 Consul 标签连接成标签的字符串。,
tagslist(string)用于过滤给定服务的节点的可选标签列表。服务必须包含列表中的所有标签。
tokensecret用于访问 Consul Agent API 的 Secret Token。
usernamestring要使用的用户名。

您可以在 discovery.consulagent 中使用以下块

描述必需
tls_config配置连接到端点的 TLS 设置。

tls_config

tls_config 块配置连接到端点的 TLS 设置。

名称类型描述默认值必需
ca_pemstring用于验证服务器的 CA PEM 编码文本。
ca_filestring用于验证服务器的 CA 证书文件。
cert_pemstring用于客户端身份验证的证书 PEM 编码文本。
cert_filestring用于客户端身份验证的证书文件。
insecure_skip_verifybool禁用服务器证书验证。
key_filestring用于客户端身份验证的密钥文件。
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。
min_versionstring最低可接受的 TLS 版本。
server_namestring指示服务器名称的 ServerName 扩展。

以下参数对互斥,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

配置客户端身份验证时,必须同时提供客户端证书(使用 cert_pemcert_file)和客户端密钥(使用 key_pemkey_file)。

如果未提供 min_version,则最低可接受的 TLS 版本继承自 Go 的默认最低版本 TLS 1.2。如果提供了 min_version,则必须设置为以下字符串之一

  • "TLS10" (TLS 1.0)
  • "TLS11" (TLS 1.1)
  • "TLS12" (TLS 1.2)
  • "TLS13" (TLS 1.3)

导出的字段

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

名称类型描述
targetslist(map(string))从 Consul Agent API 发现的目标集合。

每个目标包含以下标签

  • __meta_consulagent_address: 目标的地址。
  • __meta_consulagent_dc: 目标的数据中心名称。
  • __meta_consulagent_health: 服务的健康状态。
  • __meta_consulagent_metadata_<key>: 目标的每个节点元数据键值对。
  • __meta_consulagent_node: 为目标定义的节点名称。
  • __meta_consulagent_service_address: 目标的 Service 地址。
  • __meta_consulagent_service_id: 目标的 Service ID。
  • __meta_consulagent_service_metadata_<key>: 目标的每个 Service 元数据键值对。
  • __meta_consulagent_service_port: 目标的 Service 端口。
  • __meta_consulagent_service: 目标所属的服务名称。
  • __meta_consulagent_tagged_address_<key>: 目标的每个节点带标签的地址键值对。
  • __meta_consulagent_tags: 通过标签分隔符连接的目标标签列表。

组件健康状态

discovery.consulagent 仅在给定无效配置时报告为不健康。在这些情况下,导出的字段保留其上次健康的数值。

调试信息

discovery.consulagent 不会暴露任何组件特定的调试信息。

调试指标

  • discovery_consulagent_rpc_duration_seconds (SummaryVec): Consul Agent RPC 调用持续时间(秒)。
  • discovery_consulagent_rpc_failures_total (Counter): Consul Agent RPC 调用失败次数。

示例

此示例发现指定服务列表的 Consul Agent 目标

alloy
discovery.consulagent "example" {
  server = "localhost:8500"
  services = [
    "service1",
    "service2",
  ]
}

prometheus.scrape "demo" {
  targets    = discovery.consul.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 身份验证的密码。

兼容的组件

discovery.consulagent 导出的字段可以被以下组件使用

注意

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