导读:本期聚焦于小伙伴创作的《如何采集SQL postgres_exporter的pg_stat_bgwriter检查点统计信息》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何采集SQL postgres_exporter的pg_stat_bgwriter检查点统计信息》有用,将其分享出去将是对创作者最好的鼓励。

在PostgreSQL的运维监控场景中,检查点(Checkpoint)的执行频率和效率直接影响数据库的写入性能和稳定性,pg_stat_bgwriter系统视图记录了后台写入进程(Background Writer)以及检查点的所有核心运行统计信息,postgres_exporter作为Prometheus生态中常用的PostgreSQL指标导出工具,可以高效采集这些检查点统计数据用于后续监控分析。

如何采集SQL postgres_exporter的pg_stat_bgwriter检查点统计信息

pg_stat_bgwriter检查点相关核心字段说明

pg_stat_bgwriter视图中包含多个与检查点直接相关的统计字段,采集前需要先明确这些字段的实际含义,避免采集到无效数据:

  • checkpoints_timed:由checkpoint_timeout参数触发的时间驱动检查点总次数
  • checkpoints_req:由外部请求(如执行CHECKPOINT命令、WAL达到max_wal_size阈值)触发的检查点总次数
  • checkpoint_write_time:所有检查点执行过程中,将数据从共享缓冲区写入磁盘的总耗时,单位为毫秒
  • checkpoint_sync_time:所有检查点执行过程中,将写入的磁盘数据同步到持久存储的总耗时,单位为毫秒
  • buffers_checkpoint:所有检查点执行过程中,从共享缓冲区写入磁盘的缓冲区总数量,每个缓冲区大小为8KB

postgres_exporter默认采集配置说明

postgres_exporter内置了多个采集查询规则,默认情况下已经包含pg_stat_bgwriter视图的采集逻辑,无需额外编写复杂的SQL查询。其默认的采集查询定义在内置的查询配置文件中,核心采集逻辑如下:

-- postgres_exporter默认采集pg_stat_bgwriter的SQL逻辑
SELECT
    checkpoints_timed,
    checkpoints_req,
    checkpoint_write_time,
    checkpoint_sync_time,
    buffers_checkpoint,
    buffers_clean,
    buffers_backend,
    maxwritten_clean,
    buffers_backend_fsync,
    stats_reset
FROM pg_stat_bgwriter;

该查询会返回pg_stat_bgwriter视图的所有字段,其中前五个字段就是检查点相关的核心统计信息,采集后postgres_exporter会将这些数据转换为Prometheus格式的指标对外暴露。

自定义配置采集检查点统计的步骤

如果默认配置无法满足需求,比如需要过滤字段或者添加自定义标签,可以按照以下步骤自定义采集配置:

1. 准备自定义查询配置文件

创建自定义的查询配置文件pg_stat_bgwriter_queries.yaml,内容如下:

pg_stat_bgwriter_checkpoint:
  query: |
    SELECT
        checkpoints_timed,
        checkpoints_req,
        checkpoint_write_time,
        checkpoint_sync_time,
        buffers_checkpoint,
        current_setting('server_version') as server_version
    FROM pg_stat_bgwriter
  metrics:
    - checkpoints_timed:
        usage: "COUNTER"
        description: "Number of scheduled checkpoints that have been performed"
    - checkpoints_req:
        usage: "COUNTER"
        description: "Number of requested checkpoints that have been performed"
    - checkpoint_write_time:
        usage: "COUNTER"
        description: "Total time spent writing data during checkpoints in milliseconds"
    - checkpoint_sync_time:
        usage: "COUNTER"
        description: "Total time spent syncing data during checkpoints in milliseconds"
    - buffers_checkpoint:
        usage: "COUNTER"
        description: "Number of buffers written during checkpoints"

2. 启动postgres_exporter时指定配置文件

启动postgres_exporter时通过--extend.query-path参数指定自定义配置文件,同时配置PostgreSQL的连接信息:

# 设置PostgreSQL连接环境变量
export DATA_SOURCE_NAME="postgresql://用户名:密码@127.0.0.1:5432/数据库名?sslmode=disable"
# 启动postgres_exporter并加载自定义配置
./postgres_exporter --extend.query-path=pg_stat_bgwriter_queries.yaml --web.listen-address=:9187

3. 验证采集结果

启动后访问postgres_exporter的 metrics 接口,查看是否有对应的检查点统计指标输出:

curl http://127.0.0.1:9187/metrics | grep pg_stat_bgwriter

如果配置正确,会看到类似以下的输出:

pg_stat_bgwriter_checkpoint_checkpoints_timed 12
pg_stat_bgwriter_checkpoint_checkpoints_req 3
pg_stat_bgwriter_checkpoint_checkpoint_write_time 4562
pg_stat_bgwriter_checkpoint_checkpoint_sync_time 892
pg_stat_bgwriter_checkpoint_buffers_checkpoint 1245

采集注意事项

  • postgres_exporter连接PostgreSQL的数据库用户需要具备pg_stat_bgwriter视图的查询权限,建议给监控用户授予pg_monitor角色,避免权限不足导致采集失败
  • pg_stat_bgwriter的统计信息是累计值,重置统计需要执行SELECT pg_stat_reset();命令,重置后之前的检查点统计数据会被清空
  • 如果PostgreSQL是集群部署,需要在每个实例上分别部署postgres_exporter采集对应实例的pg_stat_bgwriter数据,避免跨实例采集数据不准确
检查点频率过高会导致频繁的磁盘IO,影响数据库性能,通过采集的检查点统计数据可以合理调整checkpoint_timeout和max_wal_size参数,优化数据库写入性能。

postgres_exporterpg_stat_bgwriter检查点统计PostgreSQL修改时间:2026-07-07 01:15:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。