菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow 发现breadcrumb arrow discovery.consulagent
开源

发现.consulagent

discovery.consulagent 允许您从Consul的Agent API中检索抓取目标。只监控同一主机上运行的本地Agent注册的服务。这适用于非常庞大的Consul集群,在这些集群中使用目录API将太慢或资源消耗过大。

用法

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

参数

以下参数被支持

名称类型描述默认值必需
server字符串Consul Agent API的主机和端口。localhost:8500
token密钥用于访问Consul Agent API的密钥。
datacenter字符串Consul Agent配置运行的数据中心。如果没有提供,则从本地Consul Agent检索数据中心。
tag_separator字符串通过该字符串将Consul标签连接到标签标签。,
scheme字符串与Consul Agent通信时使用的方案。http
username字符串要使用的用户名。
password密钥要使用的密码。
services列表(字符串)要检索目标的服务的列表。如果省略,则抓取所有服务。
tags列表(字符串)用于筛选给定服务的节点的可选标签列表。服务必须包含列表中的所有标签。
refresh_interval持续时间刷新容器列表的频率。"30s"

以下块在 discovery.consulagent 的定义中受支持

层次结构描述必需
tls_configtls_config配置连接到端点的TLS设置。

tls_config 块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的CA PEM编码文本。
ca_file字符串验证服务器的CA证书。
cert_pem字符串用于客户端认证的客户端认证PEM编码文本。
cert_file字符串客户端认证的证书文件。
insecure_skip_verify布尔型禁用服务器证书的有效性验证。
key_file字符串客户端认证的关键文件。
key_pem密钥客户端认证的关键 PEM 编码文本。
min_version字符串最低可接受的 TLS 版本。
server_name字符串用于表示服务器名称的 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:目标所属服务的名称。
  • __meta_consulagent_service_address:目标的服务地址。
  • __meta_consulagent_service_id:目标的服务 ID。
  • __meta_consulagent_service_metadata_<key>:目标的每个服务元数据键值。
  • __meta_consulagent_service_port:目标的服务端口。
  • __meta_consulagent_tagged_address_<key>:目标节点的每个标记地址键值。
  • __meta_consulagent_tags:目标标签的列表,由标签分隔符连接。

组件健康

discovery.consulagent 只有在给定无效配置时才报告为不健康。在这些情况下,导出字段将保留其最后的健康值。

调试信息

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

调试度量

  • discovery_consulagent_rpc_failures_total (Counter):Consul Agent RPC 调用失败的次数。
  • discovery_consulagent_rpc_duration_seconds (SummaryVec):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 服务器兼容的远程写入 URL。
  • <USERNAME>:用于访问远程写入 API 的用户名。
  • <PASSWORD>:用于访问远程写入 API 的密码。

兼容组件

discovery.consulagent 的导出内容可以被以下组件消费

注意

连接某些组件可能不合理,或者组件可能需要额外的配置才能正确连接。有关更多详细信息,请参阅相关文档。