check_postgres 输出模式全解析:Nagios、MRTG 与 Cacti 三种格式完整对照表
【免费下载链接】check_postgresNagios check_postgres plugin for checking status of PostgreSQL databases项目地址: https://gitcode.com/gh_mirrors/ch/check_postgres
check_postgres 是一款专为 PostgreSQL 数据库打造的 Nagios 监控插件,通过--output参数支持nagios、mrtg、simple、cacti四种输出模式,一份脚本即可同时服务告警系统与绘图系统。本文将带你用 5 分钟彻底搞懂这四种格式的差别、适用场景和切换技巧。
check_postgres 是什么?为什么输出模式如此重要
check_postgres 是一个用 Perl 编写的命令行监控工具,内置了 40 多个检测动作(连接检查、事务时间、锁、膨胀、WAL 文件、复制状态等)。不同监控系统对脚本的输出格式要求完全不同:
- Nagios / Icinga:需要"状态词 + 退出码"
- MRTG:需要固定的多行数字,用于绘制流量曲线
- Cacti:需要
名称:数值数据对 - Shell 脚本:往往只想要一个纯数字
check_postgres 用同一个参数--output=VAL就能切换这四种格式,避免了为每个监控系统维护一份脚本。
四种输出模式逐一拆解
1️⃣ Nagios 输出(默认模式)
perl check_postgres.pl --action=connection --db=pluto输出为单行信息,格式是"状态词 + 冒号 + 简短描述",并配合 4 个标准退出码:
| 退出码 | 状态 | 含义 |
|---|---|---|
| 0 | OK | 正常 |
| 1 | WARNING | 警告 |
| 2 | CRITICAL | 严重 |
| 3 | UNKNOWN | 未知 |
Nagios 模式下还可以附加性能数据(perfdata)和耗时统计,相关参数是--showperf、--perflimit和--showtime,详见 check_postgres.pl 内置文档。
2️⃣ MRTG 输出:四行结构
MRTG 模式下输出固定为四行:
| 行号 | 内容 | 说明 |
|---|---|---|
| 第 1 行 | 核心数值 | 通常是一个有意义的数字(如字节数),布尔型动作则输出 1 或 0 |
| 第 2 行 | 辅助统计 | 仅部分动作使用 |
| 第 3 行 | 占位行 | 传统上是 "uptime",基本不使用 |
| 第 4 行 | 描述行 | 通常标明数据来自哪个数据库 |
部分动作还支持--mrtg=VAL参数来进一步控制输出内容(例如指定输出最大/最小的哪一个库)。
3️⃣ simple 输出:只要一个数字
simple 是 MRTG 的"极简版"——只输出第一行的那个数字,其余全部丢弃。适合你只关心数值本身、不需要任何阈值判断的场景,比如写在自己的 shell 脚本里。
它还支持单位换算,在输出参数后追加 KB、MB、GB、TB、EB 即可:
check_postgres_txn_idle --port=6543 --output=simple,MB另外可以直接用--simple作为快捷方式,等效于--output=simple。
4️⃣ Cacti 输出:name:value 数据对
Cacti 输出把一个或多个数据项放在同一行,格式为名称:数值。目前内置显式 Cacti 输出的动作是dbstats(读取pg_stat_database视图),该动作只接受 Cacti 模式、不接收 warning/critical 阈值参数;对于其他多数动作,直接用--simple也能满足 Cacti 的取数需求。
三种(四种)格式完整对照表 ⭐
| 对比维度 | nagios(默认) | mrtg | simple | cacti |
|---|---|---|---|---|
| 输出行数 | 1 行 | 4 行 | 1 行 | 1 行(多数据项) |
| 输出内容 | 状态词 + 描述 + 可选性能数据 | 数值 + 辅助统计 + 占位 + 描述 | 仅核心数值 | 多个名称:数值对 |
| 退出码 | 0/1/2/3 四态 | 成功 0,失败 3 | 成功 0,失败 3 | 成功 0 |
| 支持 warning/critical 阈值 | ✅ | 不依赖阈值 | 不依赖阈值 | ❌ 专属数据输出 |
| 单位换算 | ❌ | ❌ | ✅ KB/MB/GB/TB/EB | ❌ |
| 典型用途 | Nagios 告警监控 | MRTG 绘图 | 脚本取数、Cacti 通用取数 | Cacti 绘图 |
| 对应参数 | --output=nagios | --output=mrtg | --output=simple或--simple | --output=cacti |
💡 小技巧:如果传入了非法值,脚本会报 "Invalid output: must be 'nagios' or 'mrtg' or 'simple' or 'cacti'",可据此快速自查拼写。
快速切换输出模式的 3 个实用技巧
技巧一:目录命名自动识别。如果你不写--output参数,而当前工作目录名里包含nagios、mrtg、simple或cacti,脚本会自动采用对应模式。配合--symlinks生成的软链接使用非常顺手:
cd mrtg perl ../check_postgres.pl --symlinks此后在该目录执行的检测动作默认就是 MRTG 输出。
技巧二:--simple快捷方式。它等价于--output=simple,还能覆盖目录命名识别规则,是临时取数时最省事的写法。
技巧三:软链接即动作名。用--symlinks后,每个动作都有独立"可执行文件",例如check_postgres_connection、check_postgres_txn_idle,直接把它配置进 Nagios 命令即可。
安装 check_postgres 的最快方法
克隆仓库后走标准 Perl 安装流程即可:
git clone https://gitcode.com/gh_mirrors/ch/check_postgres cd check_postgres perl Makefile.PL make make test make install更"偷懒"的 Nagios 用法:直接把check_postgres.pl拷进 Nagios 的脚本目录,然后运行--symlinks生成全套软链接。安装完成后可以执行man check_postgres查看完整文档(源文档同样在 check_postgres.pl 的 POD 文档段中),测试用例分布在t/目录(如 t/00_basic.t),文件清单见 MANIFEST。
总结:一张图记住选哪个模式
- 要告警(Nagios/Icinga)→ 默认 nagios 模式,配好 warning/critical 阈值
- 要画趋势图(MRTG)→
--output=mrtg,关注第 1 行数字 - 要取纯数字进自己的脚本或 Cacti →
--output=simple(可加单位) - 要Cacti 专属数据→ 用
dbstats动作的 cacti 输出
四种模式共用同一套检测逻辑,切换只是换个"外壳",这也是 check_postgres 在 PostgreSQL 监控领域长期流行的原因之一。
【免费下载链接】check_postgresNagios check_postgres plugin for checking status of PostgreSQL databases项目地址: https://gitcode.com/gh_mirrors/ch/check_postgres
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考