【发布时间】:2010-01-13 09:09:55
【问题描述】:
我需要监控我的 postgres 服务器。如果在给定时间后某些表格没有变化,我需要得到警报。我一直试图让 xymon 和 nagios 做到这一点,但我没能做到。请帮忙
【问题讨论】:
标签: postgresql nagios hobbitmon
我需要监控我的 postgres 服务器。如果在给定时间后某些表格没有变化,我需要得到警报。我一直试图让 xymon 和 nagios 做到这一点,但我没能做到。请帮忙
【问题讨论】:
标签: postgresql nagios hobbitmon
您可能想查看 pg_stat_user_tables 并注意表的行插入/删除/更新的统计信息是否已更改。这是在监控软件中检查此类活动的最简单方法。
从查看源代码到最好的 PostgreSQL 监控插件(Nagios 插件),您可能还会在这方面获得一些想法:check_postgres
【讨论】:
首先,在任何修改语句(INSERT/UPDATE/DELETE)上激活的表上创建一个trigger。此触发器应在某处更新“最后更改”时间戳(例如,其他控制表中的字段)。
然后,您将需要一个通过某些外部方式(例如 Unix 上的 cron)定期启动的单独进程。运行此过程,例如每 10 分钟或每小时 - 无论您需要什么粒度。它只是检查上次更改的时间戳,以确定自上次检查后的时间段内是否有任何活动。
【讨论】:
stats_row_level 统计数据收集在 8.2 之前默认禁用,而 8.3 仅在 2008 年发布。启用此功能有其自身的成本,并且可以仅对所有表全局执行。如果只需要监控几个表,使用触发器的开销可能会更低。
这不是免费的解决方案,但 LogicMonitor 的 postgres monitoring 可以轻松做到这一点。
【讨论】:
如果您有办法在文件在一段时间内没有更改时获得警报,那么我有一个不太优雅但可能更简单的解决方案:尝试找出 Postgres 存储相关表的文件名(有人应该深入研究 Postgres 中的系统表 - 可能会在单独的问题中提出这个问题),然后设置您的监控工具以观察该文件的修改时间。
【讨论】: