[collectd] Not seeing postgres data from collectd.
James Armstrong
jarmstrong at threatmetrix.com
Tue Mar 9 22:51:24 CET 2010
Many thanks for you assistance. I come from a MySQL and Oracle
background, and don't have much experience with postgres... So this is
a bit of a learning experience for me.
Sebastian Harl wrote:
> Hi,
>
> On Mon, Mar 08, 2010 at 01:04:19PM -0800, James Armstrong wrote:
>> We're trying to add a monitor for some table sizes to collectd for a
>> postgres database. Our configuration is to use a central server to host
>> the data, and various machines send the data to that server.
>>
>> I've added the following to /etc/collectd.conf on a working machine and
>> restarted collectd, but the postgres data is not appearing in the UDP
>> packets. I have confirmed this with tcpdump.
>>
>> LoadPlugin "postgresql"
>>
>> ...
>>
>> <Plugin "postgresql">
>> <Query eventcount>
>> Statement "SELECT COUNT(*) AS count FROM events;"
>> <Result>
>> Type counter
>> InstancePrefix "eventcount"
>> ValuesFrom "count"
>> </Result>
>> </Query>
>>
>> <Database dwh>
>> Host "192.168.X.YY"
>> User "dbuser"
>> Password (correct password)
>> Query eventcount
>> </Database>
>> </Plugin>
>
> That config snippet looks fine to me.
>
>> The connection information for the database works, confirmed with psql.
>
> What's the exact psql command line you were using to verify that?
psql -h 192.168.X.YY -U dbuser -d dwh
I enter the password and run the query, and get valid output:
dwh=> SELECT COUNT(*) AS count FROM events;
count
----------
23048887
(1 row)
I also see in the logfile this:
[2010-03-05 21:16:05] postgresql: Sucessfully connected to database dwh
(user dbuser) at server 192.168.X.YY:5432 (server version: 8.3.9,
protocol version: 3, pid: 27281)
> Did you verify that the postgresql plugin actually connects to the
> database (select * from pg_stat_activity where datname = 'dwh')?
I see activity:
dwh=> select * from pg_stat_activity where datname='dwh';
datid | datname | procpid | usesysid | usename |
current_query | waiting | xact_start
| query_start | backend_start |
client_addr | client_port
-------+---------+---------+----------+----------+-----------------------------------------------------+---------+-------------------------------+-------------------------------+-------------------------------+---------------+-------------
16389 | dwh | 27281 | 16385 | dbuser | SELECT COUNT(*) AS
count FROM events; | f | 2010-03-09
21:43:55.771195+00 | 2010-03-09 21:43:55.771195+00 | 2010-03-05
21:16:05.760945+00 | 192.168.10.93 | 38455
16389 | dwh | 21765 | 16385 | dbuser | select * from
pg_stat_activity where datname='dwh'; | f | 2010-03-09
21:44:00.138973+00 | 2010-03-09 21:44:00.138973+00 | 2010-03-09
21:39:25.109213+00 | 192.168.10.93 | 46765
> Given that nobody else accesses the same table, the following query
> might give you an idea whether the query is executed at all: select
> seq_scan, seq_tup_read from pg_stat_user_tables where relname = 'dwh'.
> That query should return numbers that are increased after each collectd
> interval. Else, you could also configure PostgreSQL to log every query
> to make sure the query is actually executed by collectd.
That returns 0 rows.
> Which version of collectd do you use?
4.8.1-1.centos5
>
>> There are no error messages in the logfile, we're using the logfile
>> plugin at loglevel debug.
>
> To make use of loglevel "debug", collectd has to be compiled with
> debugging enabled. Is that the case? You should then see *lots* of
> messages in the log file.
Nope...
One possibility, this query takes a while to return, over 30 seconds.
Could it be timing out, and if so, how can I change the timeout for this
query without changing other intervals?
> HTH,
> Sebastian
>
More information about the collectd
mailing list