发现Consul
discovery.consul
允许从 Consul 目录 API 获取抓取目标。
使用方法
discovery.consul "LABEL" {
server = CONSUL_SERVER
}
参数
以下参数被支持
名称 | 类型 | 描述 | 默认值 | 必须 |
---|---|---|---|---|
server | 字符串 | Consul API 的主机和端口。 | localhost:8500 | 否 |
token | secret | 用于访问Consul API的秘密令牌。 | 否 | |
datacenter | 字符串 | 要查询的数据中心。如果未提供,则使用默认值。 | 否 | |
namespace | 字符串 | 要使用的命名空间。仅支持Consul Enterprise。 | 否 | |
partition | 字符串 | 要使用的管理员分区。仅支持Consul Enterprise。 | 否 | |
tag_separator | 字符串 | 用于将Consul标签连接到标签标签的字符串。 | , | 否 |
scheme | 字符串 | 与Consul通信时要使用的方案。 | http | 否 |
username | 字符串 | 要使用的用户名。已弃用,用basic_auth 配置代替。 | 否 | |
password | secret | 要使用的密码。已弃用,用basic_auth 配置代替。 | 否 | |
allow_stale | 布尔值 | 允许 stale Consul 结果。减少Consul的负载。有关更多信息,请参阅Consul 文档。 | true | 否 |
services | 列表(字符串) | 要获取目标的服务的列表。如果省略,将抓取所有服务。 | 否 | |
tags | 列表(字符串) | 可选的、用于过滤特定服务的节点的标签列表。服务必须包含列表中的所有标签。 | 否 | |
node_meta | 映射(字符串) | 用于过滤特定服务的节点的节点元数据键/值对。 | 否 | |
refresh_interval | 持续时间 | 刷新容器列表的频率。 | "30s" | 否 |
bearer_token_file | 字符串 | 包含用于验证的承载令牌的文件。 | 否 | |
bearer_token | secret | 用于验证的承载令牌。 | 否 | |
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_url
和 no_proxy
。
proxy_connect_header
应仅在配置了 proxy_url
或 proxy_from_environment
时配置。
块
以下块可以在 discovery.consul
的定义内部使用。
层次结构 | 块 | 描述 | 必须 |
---|---|---|---|
基本认证 | 基本认证 | 配置用于访问端点的 basic_auth 。 | 否 |
授权 | 授权 | 为端点配置通用授权。 | 否 |
OAuth2 | OAuth2 | 配置 OAuth2 以访问端点。 | 否 |
oauth2 > tls_config | tls_config | 配置连接到端点的 TLS 设置。 | 否 |
tls_config | tls_config | 配置连接到端点的 TLS 设置。 | 否 |
>
符号表示更深层次的嵌套。例如,oauth2 > tls_config
指的是在 oauth2
块内定义的 tls_config
块。
基本认证块
名称 | 类型 | 描述 | 默认值 | 必须 |
---|---|---|---|---|
password_file | 字符串 | 包含基本认证密码的文件。 | 否 | |
password | secret | 基本认证密码。 | 否 | |
username | 字符串 | 基本认证用户名。 | 否 |
password
和 password_file
是互斥的,且在 basic_auth
块内只能提供其中一个。
授权块
名称 | 类型 | 描述 | 默认值 | 必须 |
---|---|---|---|---|
credentials_file | 字符串 | 包含密令值的文件。 | 否 | |
密令。 | secret | 密令值。 | 否 | |
类型 | 字符串 | 授权类型,例如,“Bearer”。 | 否 |
credential
和 credentials_file
是互斥的,且在 authorization
块内只能提供其中一个。
OAuth2 块
名称 | 类型 | 描述 | 默认值 | 必须 |
---|---|---|---|---|
client_id | 字符串 | OAuth2 客户端 ID。 | 否 | |
client_secret_file | 字符串 | 包含 OAuth2 客户端机密的文件。 | 否 | |
client_secret | secret | OAuth2 客户端机密。 | 否 | |
endpoint_params | 映射(字符串) | 可以附加到令牌 URL 的可选参数。 | 否 | |
proxy_url | 字符串 | 通过其发送请求的HTTP代理。 | 否 | |
no_proxy | 字符串 | 逗号分隔的IP地址、CIDR表示法和域名列表,用于排除从代理。 | 否 | |
proxy_from_environment | 布尔值 | 使用由环境变量指示的代理URL。 | false | 否 |
proxy_connect_header | 映射(列表(秘密)) | 指定在连接请求期间发送到代理的头。 | 否 | |
scopes | 列表(字符串) | 用于认证的作用域列表。 | 否 | |
token_url | 字符串 | 从其中获取令牌的 URL。 | 否 |
client_secret
和 client_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_url
和 no_proxy
。
proxy_connect_header
应仅在配置了 proxy_url
或 proxy_from_environment
时配置。
tls_config 块
名称 | 类型 | 描述 | 默认值 | 必须 |
---|---|---|---|---|
ca_pem | 字符串 | 用于验证服务器的 CA PEM 编码文本。 | 否 | |
ca_file | 字符串 | 用于验证服务器的 CA 证书。 | 否 | |
cert_pem | 字符串 | 用于客户端身份验证的证书 PEM 编码文本。 | 否 | |
cert_file | 字符串 | 用于客户端身份验证的证书文件。 | 否 | |
insecure_skip_verify | 布尔值 | 禁用服务器证书的验证。 | 否 | |
key_file | 字符串 | 用于客户端身份验证的密钥文件。 | 否 | |
key_pem | secret | 用于客户端身份验证的密钥 PEM 编码文本。 | 否 | |
min_version | 字符串 | 最低可接受的 TLS 版本。 | 否 | |
server_name | 字符串 | ServerName 扩展用于指示服务器的名称。 | 否 |
以下参数对互斥且不能同时设置
ca_pem
和ca_file
cert_pem
和cert_file
key_pem
和key_file
在配置客户端身份验证时,必须提供客户端证书(使用 cert_pem
或 cert_file
)和客户端密钥(使用 key_pem
或 key_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 | list(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发现目标
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
导出可由以下组件消费的值
- 消费目标的组件
注意
连接某些组件可能不可取,或者这些组件可能需要进一步配置才能正确建立连接。有关更多详情,请参阅相关文档。