Назад | Перейти на главную страницу

check_postgres_checkpoint ошибка плагина

Я использую плагин check_postgres.pl для Nagios. Я пытаюсь отслеживать, сколько времени прошло с момента запуска последней контрольной точки, с помощью параметра check_postgres_checkpoint. Когда я запускаю команду из CLI как root, я получаю результат, но не могу получить результат в веб-интерфейсе Nagios. Ошибка, которую он показывает,

ERROR: pg_controldata could not read the given data directory: "/opt/PostgreSQL/9.1/data"

Он пытается получить доступ к файлу pg_control в «глобальном» каталоге, находящемся под каталогом данных, который имеет доступ только для чтения для пользователя postgres.

Может ли кто-нибудь предложить мне, как это можно решить?

Спасибо.

На мой взгляд, лучший способ сделать это - использовать sudo, как предлагает Халед.

Запустите visudo и добавьте такую ​​строку:

nagios ALL=NOPASSWD:/path/to/check_postgres.pl

Затем измените команду def для запуска плагина через sudo. О, и обязательно убедитесь, что "requiretty" не установлен (также через visudo), иначе он не сработает.

В качестве альтернативы вы можете создать новую группу, содержащую nagios + postgres, и сделать /opt/PostgreSQL/9.1/data владельцем postgres: postnag (или чего-то еще), но вам нужно будет убедиться, что все новые файлы также относятся к группе postnag '(например, через chmod g + s). Это гораздо более сложное решение, но оно не связано с sudo (некоторым людям не нравится использовать sudo вот так ...?).

  • Запустите сценарий проверки как postgres пользователь.

или

  • Запустите проверочный скрипт как root

или

  • Запустите проверку от имени одного из указанных выше пользователей через cron и пусть он где-нибудь запишет данные. check_postgres могу прочитать это

или

  • …… Я уверен, что вы можете придумать больше таких вариантов самостоятельно :-)

Это можно решить, предоставив пользователю nagios право sudo на запуск этого плагина без запроса пароля.

Предоставьте pg_controldata права setuid. Это проще и безопаснее, чем искажение sudo:

chmod u+s /usr/lib/postgresql/9.0/bin/pg_controldata