菜单
通用可用性 (GA)

discovery.consulagent

discovery.consulagent 允许您从 Consul 的 Agent API 检索抓取目标。仅监视在同一主机上运行的本地代理注册的服务。这适用于非常大的 Consul 集群,在这些集群中使用 Catalog API 会太慢或资源密集。

用法

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

参数

您可以将以下参数与 discovery.consulagent 一起使用

名称类型描述默认值必需
datacenterstringConsul Agent 配置为运行的数据中心。如果未提供,则从本地 Consul Agent 检索数据中心。
passwordsecret要使用的密码。
refresh_intervalduration刷新容器列表的频率。"30s"
schemestring与 Consul Agent 通信时使用的方案。http
serverstringConsul Agent API 的主机和端口。localhost:8500
serviceslist(string)从中检索目标的服务列表。如果省略,则抓取所有服务。
tag_separatorstringConsul 标签连接到标签标签的字符串。,
tagslist(string)用于筛选给定服务的节点的可选标签列表。服务必须包含列表中的所有标签。
tokensecret用于访问 Consul Agent API 的密钥令牌。
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_namestringServerName 扩展,用于指示服务器的名称。

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

  • 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: 服务的地址。
  • __meta_consulagent_service_id: 服务的 ID。
  • __meta_consulagent_service_metadata_<key>: 目标的每个服务元数据键值。
  • __meta_consulagent_service_port: 服务的端口。
  • __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 具有可由以下组件使用的导出

注意

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