菜单
开源

发现PuppetDB

discovery.puppetdb 允许您从 PuppetDB 资源中检索抓取目标。

此 SD 发现资源并为 API 返回的每个资源创建一个目标。

资源地址是资源的 certname,可以在重新标记期间更改。

此组件的查询预计将是有效的 PQL (Puppet Query Language)

用法

alloy
discovery.puppetdb "LABEL" {
  url = PUPPET_SERVER
}

参数

支持以下参数

名称类型描述默认值必需
url字符串PuppetDB 根查询端点的 URL。yes
查询字符串Puppet Query Language (PQL) 查询。仅支持资源。yes
include_parametersbool是否将参数包含为元标签。由于参数类型和Prometheus标签之间的差异,某些参数可能无法渲染。参数的格式可能在未来的版本中发生变化。如果您启用此功能,请确保不要将秘密作为参数暴露。false
端口整数从该端口抓取指标。80
刷新间隔持续时间刷新目标的频率。"30s"
bearer_token_file字符串包含用于认证的bearer令牌的文件。
bearer_token秘密用于认证的bearer令牌。
enable_http2bool是否支持请求的HTTP2。true
跟随重定向bool是否应跟随服务器返回的重定向。true
proxy_url字符串发送请求通过的HTTP代理。
no_proxy字符串逗号分隔的IP地址、CIDR表示法和域名列表,不包括在代理中。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送到代理的头。

以下之一最多提供一次

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

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.puppetdb定义内部受支持

层次结构描述必需
basic_authbasic_auth配置基本认证以对端点进行认证。
authorizationauthorization配置对端点的通用认证。
oauth2oauth2配置OAuth2以对端点进行认证。
oauth2 > tls_configtls_config配置连接到端点的TLS设置。
tls_configtls_config配置连接到端点的TLS设置。

> 符号表示更深的嵌套级别。例如,oauth2 > tls_config 指的是一个在oauth2块内部定义的tls_config块。

basic_auth 块

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

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

authorization 块

名称类型描述默认值必需
credentials_file字符串包含秘密值的文件。
credentials秘密秘密值。
type字符串认证类型,例如,“Bearer”。

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

oauth2 块

名称类型描述默认值必需
client_id字符串OAuth2客户端ID。
client_secret_file字符串包含OAuth2客户端秘密的文件。
client_secret秘密OAuth2客户端秘密。
endpoint_paramsmap(string)追加到令牌URL的可选参数。
proxy_url字符串发送请求通过的HTTP代理。
no_proxy字符串逗号分隔的IP地址、CIDR表示法和域名列表,不包括在代理中。
proxy_from_environmentbool使用环境变量指示的代理URL。false
proxy_connect_headermap(list(secret))指定在CONNECT请求期间发送到代理的头。
scopeslist(string)认证作用域的列表。
token_url字符串从其中获取令牌的URL。

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

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

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

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_verifybool禁用服务器证书的验证。
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))从 puppetdb 发现的目标集合。

每个目标包括以下标签

  • __meta_puppetdb_query:Puppet 查询语言(PQL)查询。
  • __meta_puppetdb_certname:与资源关联的节点的名称。
  • __meta_puppetdb_resource:资源的类型、标题和参数的 SHA-1 哈希,用于识别。
  • __meta_puppetdb_type:资源类型。
  • __meta_puppetdb_title:资源标题。
  • __meta_puppetdb_exported:资源是否导出(“true”或“false”)。
  • __meta_puppetdb_tags:资源标签的逗号分隔列表。
  • __meta_puppetdb_file:声明资源的规范文件。
  • __meta_puppetdb_environment:与资源关联的节点的环境。
  • __meta_puppetdb_parameter_<parametername>:资源的参数。

组件健康

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

调试信息

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

调试指标

discovery.puppetdb 不暴露任何特定组件的调试指标。

示例

此示例发现 puppetdb 中的所有具有特定软件包定义的服务器目标

alloy
discovery.puppetdb "example" {
	url   = "http://puppetdb.local:8080"
	query = "resources { type = \"Package\" and title = \"node_exporter\" }"
	port  = 9100
}

prometheus.scrape "demo" {
	targets    = discovery.puppetdb.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:用于远程_write API 认证的用户名。
  • PASSWORD:用于远程_write API 认证的密码。

兼容组件

discovery.puppetdb 的导出可以被以下组件消费

注意

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