我需要监视我的postgres服务器。如果特定时间段之后某些表格没有变化,我需要发出警报。我一直试图让xymon和nagios做到这一点,我一直无法做到。请帮助监视Postgres表活动
回答
首先,在任何修改语句(INSERT/UPDATE/DELETE)上激活的表上创建一个trigger。这个触发器应该在某处更新一个“上次更改”的时间戳(例如某个其他控制表中的一个字段)。
然后,您需要一个单独的进程,它通过一些外部方式(例如Unix上的cron)定期启动。该过程例如运行每10分钟或每小时 - 无论您需要什么粒度。它只是检查上次更改的时间戳,以确定自上次检查以来的时间段内是否有任何活动。
这不是一个免费的解决方案,但LogicMonitor的postgres monitoring可以做到这一点。
如果您有办法在文件在一段时间内没有改变时发出警报,那么我有一个不太优雅但可能更简单的解决方案:试着找出Postgres存储问题表的文件名(某人应该深入研究Postgres中的系统表 - 也许在单独的问题中提出这个问题),然后设置监视工具来观察该文件的修改时间。
这不会有两个原因。该文件将通过系统进程(如VACUUM)和一个称为提示位更新的进程进行修改 - 这两个进程都会写入表并更新修改时间,而不会实际更改数据。 通过查看系统目录(如pg_class和pg_databsae)中的内容,可以轻松找出与某个表对应的目录。有一个名为oid的未被记录的字段,你会发现匹配目录和文件名。但其中的实际文件大小为1GB,因此随着数据库的增长,所使用的文件名将随着您的改变而改变。 – 2010-01-20 07:22:40
是的,以上所有都是真实的,存在不合理之处。所以如果你可以做其他答案中描述的任何解决方案,请不要这样做。 – 2010-01-20 14:59:05
您可能想查看pg_stat_user_tables,并注意表中行插入/删除/更新的统计信息是否已更改。这是检查监控软件中这种活动的最简单方法。
您也可以从查看源代码,以最好的PostgreSQL的监控插件,Nagios的一个的得到这方面的想法:check_postgres
- 1. 活动监视器
- 2. 应用活动监视器
- 3. 活动监视器查询
- 4. ASP.NET Live活动监视器
- 5. 以编程方式监视/监视数据库(活动)
- 6. Azure SQL数据库“活动监视器”
- 7. 我如何监视用户的活动
- 8. 监视活动的生命周期
- 9. SQL Server 2008 Management Studio活动监视器
- 10. 监视控制台活动的RedHat IDM
- 11. 泄漏活动监视器可靠吗?
- 12. 活动监视器中的图标?
- 13. QTKitServer保留在活动监视器中
- 14. BizTalk商业活动监视器
- 15. 活动监视器api获取摘要
- 16. 使用jquery监视用户的活动
- 17. 监视SQL Server 2005帐户活动
- 18. 活动监视器没有响应
- 19. Javascript不活动超时监视器
- 20. 如何监视Oracle上的SQL活动?
- 21. 监视剪贴板活动可可?
- 22. 过程网络活动监视
- 23. 监测GHC活动
- 24. 使用WSO2业务活动监视器监视Oracle数据库的新记录
- 25. 无法在业务活动监视中打开视图
- 26. 在活动中启动服务以监视未接来电
- 27. iPhone:为不同派对应用启动活动监视器
- 28. Cloudera Manager未能启动活动监视器
- 29. 活动监测仪器ios
- 30. 活动目录监控
不支付触发的费用就当每一笔交易数据库已经跟踪了这一点。请参阅Greg Smith的回答。 – hgmnz 2012-02-13 01:16:42
@hgimenez:绝对值得考虑,但请记住,stats_row_level'统计信息集合默认情况下最多禁用了8.2,并且8.3仅在2008年推出。启用此功能有其自身成本,并且只能对全部表进行全局更新。如果您只需要监视几个表格,则使用触发器的开销可能较低。 – 2012-02-13 06:54:52