news 2026/8/28 10:32:57

check_postgres 15 个隐藏监控动作大揭秘:pgBouncer、pgAgent 与配置校验

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
check_postgres 15 个隐藏监控动作大揭秘:pgBouncer、pgAgent 与配置校验

check_postgres 15 个隐藏监控动作大揭秘:pgBouncer、pgAgent 与配置校验

【免费下载链接】check_postgresNagios check_postgres plugin for checking status of PostgreSQL databases项目地址: https://gitcode.com/gh_mirrors/ch/check_postgres

check_postgres 是一款专为 PostgreSQL 设计的 Nagios 监控插件,一个 Perl 脚本就能覆盖数据库连接、性能、事务、磁盘等数十种检查场景。除了大家都用过的connectionbackends之外,它还埋藏了 15 个鲜有人知的"隐藏动作"——从 pgBouncer 配置校验到 pgAgent 定时任务告警,从配置指纹比对到事务回绕预警。读完本文,你的 PostgreSQL 监控体系会直接升级一个档次。

快速上手:check_postgres 监控插件怎么用?

整个项目的核心就是一个脚本 check_postgres.pl,安装只需复制到 Nagios 脚本目录,再创建符号链接即可:

perl check_postgres.pl --symlinks

之后就可以用check_postgres_动作名的方式调用,比如check_postgres_connection。也可以统一用主程序加--action参数指定动作。本文介绍的所有动作都遵循同样的调用模式:-w(警告阈值)和-c(严重阈值)二选一或组合使用。

💡 所有动作的完整清单可通过check_postgres.pl --help查看,源码中动作定义集中在主脚本的$action_info哈希中。

一、连接池与任务代理:pgBouncer、pgAgent 监控

这是本文的重头戏。如果你的架构里用了 pgBouncer 连接池或 pgAgent 定时任务框架,以下三个动作能让监控覆盖到"数据库之外"。

1. pgbouncer_checksum:pgBouncer 配置变更守门员

对 pgBouncer 的全部配置项排序后生成 MD5 校验和。只要有人改了pgbouncer.ini并重启,校验和立刻对不上——堪称配置防篡改报警器。

用法分两步:先用--critical=0取出当前校验和作为基线,之后每次监控都拿它比对。动作会自动把数据库名设为pgbouncer,无需手动指定。相关行为可在测试文件 t/02_pgbouncer_checksum.t 中看到完整验证逻辑。

2. pgagent_jobs:pgAgent 定时任务失败告警

pgAgent 是 PostgreSQL 内置的定时任务框架,但任务悄悄失败是常见事故源。这个动作会检查指定时间窗口内是否有任何步骤返回非零结果:

  • --critical=1d:最近一天内有失败任务则告警
  • --critical=2h --warning=4h:按"严重 2 小时 / 警告 4 小时"双档监控

时间单位支持s / m / h / d简写,参考测试 t/02_pgagent_jobs.t。

3. pgbouncer_maxwait:连接池排队最长等待时间

监控 pgBouncer 队列中最久客户端的等待秒数。这个数值持续上涨,通常意味着服务器过载或pool_size配小了——是定位"应用变慢但数据库正常"这类问题的利器。

二、配置校验与完整性:防篡改、防漂移

4. settings_checksum:PostgreSQL 配置指纹比对

原理与pgbouncer_checksum相同:把pg_settings里所有参数名和值排序后做 MD5 校验。任何一次ALTER SYSTEM都会被捕捉到。注意:不同用户因权限差异可能看到不同校验和,建议固定用一个超级用户监控。

5. cluster_id:数据库系统标识符监控

通过pg_controldata读取系统标识符,确认你监控的"还是当初那个库"。--critical=0可先取基线,之后填入真实 ID。该动作必须在数据库所在本机执行,不支持-h远程。

6. same_schema:两套库结构一致性校验

比对两个数据库的表、列、索引是否完全一致。主从重建、蓝绿部署后"悄悄少了一张表"的隐患,一条命令就能排查,常用于生产库与备库的结构漂移检查。

7. disabled_triggers:谁偷禁了触发器?

扫描所有被置为 disabled 状态的触发器。触发器被禁用往往意味着数据校验或级联逻辑失效,适合加入日常巡检。

三、事务安全网:回绕、两阶段提交与悬挂事务

8. txn_wraparound:事务 ID 回绕预警

PostgreSQL 事务 ID 是有限的,接近回绕点若不介入会导致数据库冻结。这个动作报告各库距离回绕还有多远,是预防性运维中优先级最高的检查项之一。

9. prepared_txns:两阶段提交事务年龄监控

监控 prepared 状态事务的数量与开启时长。默认警告阈值只有 1 秒——因为大多数系统里出现两阶段提交事务本身就值得怀疑(注意它和 prepared statement 不是一回事)。

10. txn_idle:"idle in transaction" 悬挂事务

统计空闲在事务中的连接数与最长时长,支持"5 个连接空闲超 10 秒"这种复合阈值。悬挂事务会白白占用锁和 WAL,这个动作专治此类隐形杀手。

四、运维利器:WAL、时钟、序列与版本

11. wal_files:WAL 文件数量监控

统计pg_xlog目录下 WAL 文件数量。数量异常增长可能暗示归档停滞或检查点配置不当,是归档链路健康的最直观信号,对应测试见 t/02_wal_files.t。

12. timesync:数据库时间与系统时间比对

比较本地系统时间与数据库时间差,默认警告 2 秒、严重 5 秒。多机复制、基于时间的分区场景下,时钟漂移是最隐蔽的故障源,这个动作一条命令覆盖多台主机。

13. sequence:序列剩余调用量

检查序列(sequence)距离上限还剩多少次调用,提前发现"序列耗尽导致插入失败"的低级但致命问题。

14. new_version_cp:check_postgres 自身版本监控

检查是否有更新版本的 check_postgres 可用。监控工具本身也需要被监控,否则插件 bug 会长期潜伏在你的巡检链路里。

15. commitratio:提交/回滚比例分析

报告所有数据库的 commit 占比,按最低值排序输出。某库回滚率突然飙升,往往是应用 bug 或重试风暴的早期信号,比看错误日志更快。

15 个隐藏动作一览表

#动作名一句话定位
1pgbouncer_checksumpgBouncer 配置防篡改
2pgagent_jobs定时任务失败告警
3pgbouncer_maxwait连接池排队时延
4settings_checksumPostgreSQL 配置指纹
5cluster_id系统标识符防漂移
6same_schema双库结构一致性
7disabled_triggers被禁触发器巡检
8txn_wraparound事务回绕预警
9prepared_txns两阶段提交监控
10txn_idle悬挂空闲事务
11wal_filesWAL 文件数量
12timesync时钟漂移检测
13sequence序列余量预警
14new_version_cp插件版本监控
15commitratio提交回滚比例

下一步:测试用例是最好的学习材料

项目的 t/ 目录为每个动作都配了集成测试,例如 t/02_txn_wraparound.t、t/02_same_schema.t、t/02_timesync.t,是学习参数用法的最佳参考。配合 README.md 的完整安装说明和 Makefile.PL 的标准 Perl 构建流程(perl Makefile.PL && make && make install),即可跑起make test验证环境。

上手建议:先接入settings_checksum+pgbouncer_checksum守住配置基线,再用txn_wraparoundwal_files覆盖安全底线,最后按需开启 pgBouncer / pgAgent 专项监控——你的 Nagios 面板从此不再只是"数据库活着没"。

【免费下载链接】check_postgresNagios check_postgres plugin for checking status of PostgreSQL databases项目地址: https://gitcode.com/gh_mirrors/ch/check_postgres

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 10:28:43

让 AI 少写废代码:andrej-karpathy-skills 快速上手指南

让 AI 少写废代码:andrej-karpathy-skills 快速上手指南 【免费下载链接】andrej-karpathy-skills A single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathys observations on LLM coding pitfalls. 项目地址: https://gitcode.c…

作者头像 李华
网站建设 2026/8/28 10:26:41

Excalidraw 手绘白板:5 分钟画出你的第一张图

Excalidraw 手绘白板:5 分钟画出你的第一张图 【免费下载链接】excalidraw Virtual whiteboard for sketching hand-drawn like diagrams 项目地址: https://gitcode.com/GitHub_Trending/ex/excalidraw Excalidraw 是一款开源的虚拟白板工具,让你…

作者头像 李华
网站建设 2026/8/28 10:24:28

C# CRM客户管理系统源码解析:三层架构与WinForms/WPF实战

简介:客户关系管理系统(CRM)是企业信息化管理的核心工具,其本质是通过软件技术实现客户数据的集中管理与业务流程的自动化。从技术原理上看,经典的 三层架构 (表示层、业务逻辑层、数据访问层&#xff09…

作者头像 李华
网站建设 2026/8/28 10:22:53

Java爬虫实战:HttpClient模拟登录绕过验证,Cookie与Token会话管理详解

1. 项目缘起:当爬虫遇到登录墙做数据采集的朋友,十有八九都遇到过这个坎儿:目标网站的数据就在那里,清晰可见,但中间横着一道登录墙。浏览器里手动登录一下,一切畅通无阻;可一旦换成程序去抓取&…

作者头像 李华
网站建设 2026/8/28 10:14:42

MarkItDown 实战教程:把 20 余种文件转成 LLM 能读的 Markdown

MarkItDown 实战教程:把 20 余种文件转成 LLM 能读的 Markdown 【免费下载链接】markitdown Python tool for converting files and office documents to Markdown. 项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown 给企业做文档问答系统时&am…

作者头像 李华