我正在使用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用户。 要么
要么
check_postgres可以读取它 要么
这可以通过授予sudo权限来为nagios用户执行此插件而不需要密码来解决。
给pg_controldata seutuid特权。 这是最简单和安全的比sudo mangling:
chmod u+s /usr/lib/postgresql/9.0/bin/pg_controldata