Thread: Monitoring with pg_controldata

Monitoring with pg_controldata

From
Tim Uckun
Date:
I am trying to monitor my replication lag with pg_controldata and it's
driving me nuts.

If I run pg_controldata from the command line as user postgres or root
I get the following line

Time of latest checkpoint:            Thu 30 Jul 2009 00:36:12 NZST

If I run it from the crontab  I get this output

Time of latest checkpoint:            Wed Jul 29 23:05:34 2009

Here is the cron entity

/usr/lib/postgresql/8.3/bin/pg_controldata
/var/lib/postgresql/8.3/main >> /tmp/pg_standby_log

What is the issue here? Some sort of a timezone problem? How do I tell
it what time zone to use?

Thanks.

Re: Monitoring with pg_controldata

From
"Uwe C. Schroeder"
Date:
On Wednesday 29 July 2009, Tim Uckun wrote:
>
> What is the issue here? Some sort of a timezone problem? How do I tell
> it what time zone to use?
>
> Thanks.


cron runs programs in a very limited environment. Things like TZ etc. are
usually not set. To see what your cron sets, just run a shell script with
something like

#!/bin/sh
env

and look at the email you get with the output.
Read the cron/crontab manpage. It tells you how to set environment variables
for your scripts.

HTH

    UC

Re: Monitoring with pg_controldata

From
Tim Uckun
Date:
O
> cron runs programs in a very limited environment. Things like TZ etc. are
> usually not set. To see what your cron sets, just run a shell script with
> something like
>
> #!/bin/sh
> env
>
> and look at the email you get with the output.
> Read the cron/crontab manpage. It tells you how to set environment variables
> for your scripts.


Thanks for the tip. It looks like the LANG environment wasn't set and
obviously pg_controldata is reliant on that.  What solved it for me
was to set LANG=en_GB.UTF-8 because that was the LANG setting in the
postgres user env.

Thanks again.