当前位置: 首页 > news >正文

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),仅供参考

http://www.cnnetsun.cn/news/4264363.html

相关文章:

  • 让 AI 少写废代码:andrej-karpathy-skills 快速上手指南
  • Excalidraw 手绘白板:5 分钟画出你的第一张图
  • C# CRM客户管理系统源码解析:三层架构与WinForms/WPF实战
  • Java爬虫实战:HttpClient模拟登录绕过验证,Cookie与Token会话管理详解
  • MarkItDown 实战教程:把 20 余种文件转成 LLM 能读的 Markdown
  • 用 n8n 把学习管理系统接入教务流程:3 个 LMS 自动化工作流的做法
  • AI资本开支首超油气:开发者工程化转型的确定性方向
  • CTF竞赛实战:从Web渗透到Linux提权的完整攻击链解析
  • 如何挑选RWA替代实现?TensorFlow RNNCell、Keras、PyTorch、Go六种版本横向评测
  • 从Mechanize到Playwright:Python浏览器自动化实战指南
  • 技术公司上市前必须跨越的工程门槛——从自变量递表谈起
  • PowerToys Awake 实战指南:一键阻止电脑休眠,长下载与渲染不再被打断
  • 蓝桥杯国赛真题精讲:DFS剪枝、状态压缩与动态规划实战
  • 具身智能落地指南:模型分层与部署全链路解析
  • Agent Skills 技能版本管理完整指南:3 个核心机制与 3 个实战场景
  • 5分钟组装一个LLM智能体应用:LangChain新手实战指南
  • 如何快速部署 Open WebUI:新手本地 AI 平台完整指南
  • 美赛LaTeX模板实战指南:从核心结构到高效协作
  • RustDesk 移动网络优化:4G/5G 下远程桌面不卡顿的 4 个设置
  • Java构建电影数据分析系统:从爬虫到可视化的全链路实战
  • 176、车载多路影像的DDR带宽预算模型——以高通SA8295P为例的环视+前视+舱内共存的带宽分配实战
  • 条件扩散模型实现MRI多序列转换:单次扫描生成T2/FLAIR
  • Python进阶:利用PyCharm高效构建项目与调试代码的实战指南
  • YOLOv8实战:基于NEU-DET数据集的钢材表面缺陷检测全流程解析
  • MCP 工具的 AI 好不好使?跑一次测试
  • 导师直言✨2026毕业论文通关核心!高分定稿的底层标准
  • Video2X 完整免费上手指南:3 条命令把模糊老视频变成 4K 清晰
  • Claude Code 终端界面美化指南:从 /theme 换色到自定义输出风格的 5 层定制路线
  • 51单片机测频实战:NE555信号源与混合测频算法详解
  • 5 行代码把一段文字变成图表:LangChain 智能数据可视化实战