check_postgres_checkpoint插件错误

我正在使用Nagios的check_postgres.pl插件。 我正在尝试使用check_postgres_checkpoint选项来监视自上次检查点运行多长时间。 当我以root用户身份运行命令时,我得到输出,但是我无法在Nagios Web界面中获得输出。 它显示的错误是,

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

它试图访问数据目录下的“global”目录下的pg_control文件,该文件只能读取postgres用户。

任何人都可以请build议我如何解决这个问题?

谢谢。

在我看来,最好的办法就是通过sudo,正如Khaled所说的那样。

运行“visudo”并添加一行:

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

然后,改变命令def通过sudo运行插件。 哦,一定要确保'requiretty'没有设置(也通过visudo),否则会失败。

或者,您可以创build一个包含nagios + postgres的新组,并使postgres:postnag(或其他)拥有/opt/PostgreSQL/9.1/data,但是您需要确保所有新文件也是组postnag '(例如,通过chmod g + s)。 这是一个更复杂的解决scheme,但不涉及sudo(有些人似乎不喜欢使用sudo这样的?)。

  • 运行你的检查脚本作为postgres用户。

要么

  • 以root身份运行您的检查脚本

要么

  • 通过cron作为上述用户之一运行你的支票,并让它把数据写入某处check_postgres可以读取它

要么

  • ……我相信你可以自己想出更多这样的select:-)

这可以通过授予sudo权限来为nagios用户执行此插件而不需要密码来解决。

给pg_controldata seutuid特权。 这是最简单和安全的比sudo mangling:

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