prometheus.exporter.postgres
prometheus.exporter.postgres
组件嵌入 postgres_exporter
,用于从 PostgreSQL 数据库收集指标。
可以通过指定不同的标签来指定多个 prometheus.exporter.postgres
组件。
用法
prometheus.exporter.postgres "LABEL" {
data_source_names = DATA_SOURCE_NAMES_LIST
}
参数
以下参数受支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
data_source_names | list(secret) | 指定要连接的 PostgreSQL 服务器。 | yes | |
disable_settings_metrics | bool | 禁用从 pg_settings 收集指标。 | false | no |
disable_default_metrics | bool | 当 true 时,仅暴露从 custom_queries_config_path 供应的指标。 | false | no |
custom_queries_config_path | 字符串 | 包含要公开为指标的自定义查询的 YAML 文件的路径。 | "" | no |
enabled_collectors | list(string) | 启用收集器的列表。有关更多详细信息,请参阅以下信息。 | [] | no |
有关 data_source_names
中连接字符串格式的更多信息,请参阅PostgreSQL 文档。
请参阅postgres_exporter
存储库中的 custom_queries_config_path
文件示例。
注意
有一些环境变量不建议使用,因为它们将影响所有prometheus.exporter.postgres
组件。有关环境变量的完整列表,请参阅postgres_exporter
存储库。
默认情况下,启用的指标集与上游 postgres_exporter
中相同。如果设置了 custom_queries_config_path
,则将在给定的配置文件中定义的附加指标公开。如果将 disable_default_metrics
设置为 true
,则仅公开 custom_queries_config_path
文件中定义的指标。
可以通过设置 enabled_collectors
参数来控制指标收集器子集。以下可供选择的收集器
数据库
database_wraparound
锁
长运行事务
postmaster
进程空闲
复制
复制槽
stat_activity_autovacuum
stat_bgwriter
stat_database
stat_statements
stat_user_tables
stat_wal_receiver
statio_user_indexes
statio_user_tables
wal
xlog_location
默认情况下,以下收集器被启用
数据库
锁
复制
复制槽
stat_bgwriter
stat_database
stat_user_tables
statio_user_tables
wal
注意
由于上游导出器的限制,当使用多个data_source_names
时,通过enabled_collectors
参数控制的收集器将仅应用于列表中的第一个数据源。
块
支持以下块
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
autodiscovery | autodiscovery | 数据库发现设置。 | no |
autodiscovery 块
“autodiscovery” 块配置数据库的发现,而无需在 data_source_names
中指定。
以下参数受支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
enabled | bool | 是否自动发现其他数据库。 | false | no |
database_allowlist | list(string) | 要过滤的数据库列表,这意味着仅这些数据库将被抓取。 | no | |
database_denylist | list(string) | 要过滤出的数据库列表,这意味着将抓取所有其他数据库。 | no |
如果将 enabled
设置为 true
且未指定允许列表或拒绝列表,则导出器将从所有数据库中抓取。
如果禁用“autodiscovery”,则 database_allowlist
或 database_denylist
将没有任何影响。
导出字段
以下字段被导出,并且可以被其他组件引用。
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 可以用于收集导出器指标的指标。 |
例如,可以将 targets
传递给一个 discovery.relabel
组件以重写指标的标签集,或者传递给一个收集公开指标的 prometheus.scrape
组件。
导出的指标使用由 run 命令 指定的配置的 内存流量 地址。
组件健康
prometheus.exporter.postgres
仅在提供无效配置时报告为不健康。
调试信息
prometheus.exporter.postgres
不公开任何组件特定的调试信息。
调试指标
prometheus.exporter.postgres
不公开任何组件特定的调试指标。
示例
从 PostgreSQL 服务器收集指标
此示例使用 prometheus.exporter.postgres
组件从本地运行的所有默认设置的 PostgreSQL 服务器中收集指标
// Because no autodiscovery is defined, this will only scrape the 'database_name' database, as defined
// in the DSN below.
prometheus.exporter.postgres "example" {
data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]
}
prometheus.scrape "default" {
targets = prometheus.exporter.postgres.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
:用于对remote_write
API 进行身份验证的用户名。PASSWORD
:用于对remote_write
API 进行身份验证的密码。
从允许列表中的数据库集合收集自定义指标
此示例使用 prometheus.exporter.postgres
组件从一组特定的数据库中收集自定义指标,用 /etc/alloy/custom-postgres-metrics.yaml
中的查询派生的自定义指标替换默认指标
prometheus.exporter.postgres "example" {
data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]
// This block configures autodiscovery to check for databases outside of the 'database_name' db
// specified in the DSN above. The database_allowlist field means that only the 'frontend_app' and 'backend_app'
// databases will be scraped.
autodiscovery {
enabled = true
database_allowlist = ["frontend_app", "backend_app"]
}
disable_default_metrics = true
custom_queries_config_path = "/etc/alloy/custom-postgres-metrics.yaml"
}
prometheus.scrape "default" {
targets = prometheus.exporter.postgres.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
:用于对remote_write
API 进行身份验证的用户名。PASSWORD
:用于对remote_write
API 进行身份验证的密码。
从除了被拒绝列表中的数据库之外的所有数据库中收集指标
此示例使用 prometheus.exporter.postgres
组件从所有数据库中收集自定义指标,除了 secrets
数据库。
prometheus.exporter.postgres "example" {
data_source_names = ["postgresql://username:password@localhost:5432/database_name?sslmode=disable"]
// The database_denylist field will filter out those databases from the list of databases to scrape,
// meaning that all databases *except* these will be scraped.
//
// In this example it will scrape all databases except for the one named 'secrets'.
autodiscovery {
enabled = true
database_denylist = ["secrets"]
}
}
prometheus.scrape "default" {
targets = prometheus.exporter.postgres.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
:用于对remote_write
API 进行身份验证的用户名。PASSWORD
:用于对remote_write
API 进行身份验证的密码。
兼容组件
prometheus.exporter.postgres
有以下可导出的指标,可以被以下组件消费
- 消费 目标 的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多详细信息。