мне нужно контролировать мой сервер postgres. мне нужно получить сигнал тревоги, если по истечении заданного времени в определенных таблицах нет изменений. я пытался заставить xymon и nagios сделать это, и я не смог. пожалуйста помоги
отслеживать активность таблицы Postgres
Ответы (4)
Вы, вероятно, захотите взглянуть на pg_stat_user_tables и отметить, изменилась ли статистика вставки/удаления/обновления строк для таблицы. Это самый простой способ проверить подобную активность в программном обеспечении для мониторинга.
Вы также можете почерпнуть идеи в этой области, просмотрев исходный код лучшего плагина мониторинга PostgreSQL, Nagios: check_postgres
Сначала создайте в таблице триггер, который активируется при любом оператор модификации (INSERT/UPDATE/DELETE). Этот триггер должен где-то обновить временную метку «последнее изменение» (например, поле в какой-либо другой управляющей таблице).
Затем вам понадобится отдельный процесс, который регулярно запускается какими-то внешними средствами (например, cron в Unix). Этот процесс запускается, например. каждые 10 минут или каждый час — с любой степенью детализации, которая вам нужна. Он просто проверяет метку времени последнего изменения, чтобы определить, была ли какая-либо активность в период с момента последней проверки.
stats_row_level
был отключен по умолчанию до версии 8.2, а версия 8.3 вышла только в 2008 году. Включение этого имеет свою стоимость и может быть сделано только глобально для всех таблиц. Если вам нужно отслеживать только несколько таблиц, использование триггера может иметь меньшие накладные расходы.
- person j_random_hacker; 13.02.2012
Это не бесплатное решение, а мониторинг postgres может сделать это тривиально.
Если у вас есть средство для получения оповещения, когда файл не меняется в течение некоторого времени, то у меня есть менее элегантное, но, вероятно, более простое решение: попытаться узнать имя файла, в котором Postgres хранит рассматриваемую таблицу (кто-то должен покопаться в системе таблиц в Postgres - возможно, задайте это в отдельном вопросе), а затем настройте свой инструмент мониторинга для наблюдения за временем изменения этого файла.