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

发现ConsulAgent

discovery.consulagent 允许您从 Consul的Agent API 获取抓取目标。仅会监视在同一主机上运行的本地代理注册的服务。这对于使用目录API会太慢或资源密集型的非常大的Consul集群来说很合适。

用法

合金
discovery.consulagent "LABEL" {
  server = CONSUL_SERVER
}

参数

以下参数受支持

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

discovery.consulagent定义内部支持以下块

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

tls_config块

名称类型描述默认值必需
ca_pem字符串用于验证服务器的CA PEM编码文本。no
ca_file字符串用于验证服务器的CA证书。no
cert_pem字符串用于客户端身份验证的证书PEM编码文本。no
cert_file字符串用于客户端身份验证的证书文件。no
insecure_skip_verifybool禁用服务器证书的验证。no
key_file字符串客户端身份验证的密钥文件。no
key_pemsecret用于客户端身份验证的密钥PEM编码文本。no
min_version字符串可接受的最低TLS版本。no
server_name字符串ServerName扩展以指示服务器名称。no

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

  • 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)

导出字段

以下字段是导出的,并且可以被其他组件引用

名称类型描述
targets列表(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(计数器):Consul Agent RPC 调用失败次数。
  • discovery_consulagent_rpc_duration_seconds(摘要向量):Consul Agent RPC 调用持续时间(秒)。

示例

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

合金
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导出的内容可以被以下组件消费

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅链接文档。