菜单
开源

发现Consul

discovery.consul 允许从 Consul 目录 API 获取抓取目标。

使用方法

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

参数

以下参数被支持

名称类型描述默认值必须
server字符串Consul API 的主机和端口。localhost:8500
tokensecret用于访问Consul API的秘密令牌。
datacenter字符串要查询的数据中心。如果未提供,则使用默认值。
namespace字符串要使用的命名空间。仅支持Consul Enterprise。
partition字符串要使用的管理员分区。仅支持Consul Enterprise。
tag_separator字符串用于将Consul标签连接到标签标签的字符串。,
scheme字符串与Consul通信时要使用的方案。http
username字符串要使用的用户名。已弃用,用basic_auth配置代替。
passwordsecret要使用的密码。已弃用,用basic_auth配置代替。
allow_stale布尔值允许 stale Consul 结果。减少Consul的负载。有关更多信息,请参阅Consul 文档true
services列表(字符串)要获取目标的服务的列表。如果省略,将抓取所有服务。
tags列表(字符串)可选的、用于过滤特定服务的节点的标签列表。服务必须包含列表中的所有标签。
node_meta映射(字符串)用于过滤特定服务的节点的节点元数据键/值对。
refresh_interval持续时间刷新容器列表的频率。"30s"
bearer_token_file字符串包含用于验证的承载令牌的文件。
bearer_tokensecret用于验证的承载令牌。
enable_http2布尔值是否支持 HTTP2 用于请求。true
follow_redirects布尔值是否应跟随由服务器返回的重定向。true
proxy_url字符串通过其发送请求的HTTP代理。
no_proxy字符串逗号分隔的IP地址、CIDR表示法和域名列表,用于排除从代理。
proxy_from_environment布尔值使用由环境变量指示的代理URL。false
proxy_connect_header映射(列表(秘密))指定在连接请求期间发送到代理的头。

最多可提供以下中的一个

no_proxy 可以包含 IP 地址、CIDR 表示法和域名。IP 和域名可以包含端口号。如果配置了 no_proxy,则必须配置 proxy_url

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或它们的小写版本)。请求使用与环境变量匹配的代理,除非被 NO_PROXY 排除。如果配置了 proxy_from_environment,则不必须配置 proxy_urlno_proxy

proxy_connect_header 应仅在配置了 proxy_urlproxy_from_environment 时配置。

以下块可以在 discovery.consul 的定义内部使用。

层次结构描述必须
基本认证基本认证配置用于访问端点的 basic_auth
授权授权为端点配置通用授权。
OAuth2OAuth2配置 OAuth2 以访问端点。
oauth2 > tls_configtls_config配置连接到端点的 TLS 设置。
tls_configtls_config配置连接到端点的 TLS 设置。

> 符号表示更深层次的嵌套。例如,oauth2 > tls_config 指的是在 oauth2 块内定义的 tls_config 块。

基本认证块

名称类型描述默认值必须
password_file字符串包含基本认证密码的文件。
passwordsecret基本认证密码。
username字符串基本认证用户名。

passwordpassword_file 是互斥的,且在 basic_auth 块内只能提供其中一个。

授权块

名称类型描述默认值必须
credentials_file字符串包含密令值的文件。
密令。secret密令值。
类型字符串授权类型,例如,“Bearer”。

credentialcredentials_file 是互斥的,且在 authorization 块内只能提供其中一个。

OAuth2 块

名称类型描述默认值必须
client_id字符串OAuth2 客户端 ID。
client_secret_file字符串包含 OAuth2 客户端机密的文件。
client_secretsecretOAuth2 客户端机密。
endpoint_params映射(字符串)可以附加到令牌 URL 的可选参数。
proxy_url字符串通过其发送请求的HTTP代理。
no_proxy字符串逗号分隔的IP地址、CIDR表示法和域名列表,用于排除从代理。
proxy_from_environment布尔值使用由环境变量指示的代理URL。false
proxy_connect_header映射(列表(秘密))指定在连接请求期间发送到代理的头。
scopes列表(字符串)用于认证的作用域列表。
token_url字符串从其中获取令牌的 URL。

client_secretclient_secret_file 是互斥的,且在 oauth2 块内只能提供其中一个。

oauth2 块还可以包含一个单独的 tls_config 子块。

no_proxy 可以包含 IP 地址、CIDR 表示法和域名。IP 和域名可以包含端口号。如果配置了 no_proxy,则必须配置 proxy_url

proxy_from_environment 使用环境变量 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY(或它们的小写版本)。请求使用与环境变量匹配的代理,除非被 NO_PROXY 排除。如果配置了 proxy_from_environment,则不必须配置 proxy_urlno_proxy

proxy_connect_header 应仅在配置了 proxy_urlproxy_from_environment 时配置。

tls_config 块

名称类型描述默认值必须
ca_pem字符串用于验证服务器的 CA PEM 编码文本。
ca_file字符串用于验证服务器的 CA 证书。
cert_pem字符串用于客户端身份验证的证书 PEM 编码文本。
cert_file字符串用于客户端身份验证的证书文件。
insecure_skip_verify布尔值禁用服务器证书的验证。
key_file字符串用于客户端身份验证的密钥文件。
key_pemsecret用于客户端身份验证的密钥 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 目录 API 发现的靶机集合。

每个靶机包含以下标签

  • __meta_consul_address:目标地址。
  • __meta_consul_partition:服务注册的行政分区名称。
  • __meta_consul_metadata_<key>:目标每个节点元数据键值。
  • __meta_consul_node:为目标准定的节点名称。
  • __meta_consul_service_address:目标服务地址。
  • __meta_consul_service_id:目标服务ID。
  • __meta_consul_service_metadata_<key>:目标每个服务元数据键值。
  • __meta_consul_service_port:目标服务端口。
  • __meta_consul_service:目标所属的服务名称。
  • __meta_consul_tagged_address_<key>:目标每个节点标记地址键值。
  • __meta_consul_tags:目标标签列表,由标签分隔符连接。

组件健康状态

discovery.consul仅在配置无效时报告为不健康。在这种情况下,导出的字段保留其最后健康的值。

调试信息

discovery.consul不公开任何特定组件的调试信息。

调试指标

discovery.consul不公开任何特定组件的调试指标。

示例

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

alloy
discovery.consul "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>:用于认证到remote_write API的用户名。
  • <PASSWORD>:用于认证到remote_write API的密码。

兼容组件

discovery.consul导出可由以下组件消费的值

注意

连接某些组件可能不可取,或者这些组件可能需要进一步配置才能正确建立连接。有关更多详情,请参阅相关文档。