отслеживать активность таблиц Postgres - PullRequest
1 голос
/ 13 января 2010

мне нужно контролировать мой сервер postgres. Мне нужно получить сигнал тревоги, если нет изменений в определенных таблицах после определенного времени. Я пытался заставить Xymon и Nagios сделать это, и я не смог. пожалуйста помогите

Ответы [ 4 ]

5 голосов
/ 20 января 2010

Возможно, вы захотите взглянуть на pg_stat_user_tables и заметить, изменилась ли статистика для вставки / удаления / обновления строк для таблицы. Это самый простой способ проверить наличие такого рода активности в программном обеспечении для мониторинга.

Вы также можете получить идеи в этой области, взглянув на исходный код в лучшее из модуля мониторинга PostgreSQL, Nagios: check_postgres

3 голосов
/ 13 января 2010

Сначала создайте триггер для таблицы, которая активируется в любом операторе модификации (INSERT / UPDATE / DELETE). Этот триггер должен где-то обновлять метку времени последнего изменения (например, поле в некоторой другой управляющей таблице).

Затем вам понадобится отдельный процесс, который регулярно запускается какими-то внешними средствами (например, cron в Unix). Этот процесс запускается, например, каждые 10 минут или каждый час - все, что вам нужно. Он просто проверяет последнюю измененную временную метку, чтобы определить, была ли какая-либо активность в периоде после последней проверки.

1 голос
/ 13 января 2010

Это не бесплатное решение, но мониторинг LogicMonitor может сделать это тривиально.

0 голосов
/ 19 января 2010

Если у вас есть способ получить предупреждение, когда файл не изменяется в течение некоторого времени, тогда у меня есть менее изящное, но, вероятно, более простое решение: попробуйте найти имя файла, в котором Postgres хранит нужную таблицу (кто-то должен покопайтесь в системных таблицах в Postgres - возможно, задайте это в отдельном вопросе), а затем настройте инструмент мониторинга для наблюдения за временем изменения этого файла.

...