监视postgresql连接的数量

时间:2016-07-28 19:41:11

标签: postgresql zabbix

我想在我的Zabbix服务器上监视并发PostgreSQL连接的数量,所以我创建了一个cron作业,它将pg_stat_activity上的COUNT行输出到一个文件,zabbix会每分钟读取一次

我的问题是我可能有一个场景,我得到一个COUNT,比方说10,然后有50个连接的快速峰值,回到10,我再次进行COUNT。   在这种情况下,峰值不会被注意到。

我想知道有一些计数器是每个连接/断开连接,但没想到如何做到这一点。   此外,我可以在更高的频率上进行COUNT并保持每分钟的平均值,但这并不能解决问题。

这件事有什么意义吗?

谢谢, 加布里埃尔

1 个答案:

答案 0 :(得分:1)

Use log files. Here is a quick tutorial for Linux.

1)

Find out where if postgres.conf file located:

postgres=# show config_file;
┌──────────────────────────────────────────┐
│               config_file                │
├──────────────────────────────────────────┤
│ /etc/postgresql/9.5/main/postgresql.conf │
└──────────────────────────────────────────┘

2)

Find and edit parameters in it (store the copy somewhere before):

log_connections = on
log_disconnections = on
log_destination = 'csvlog'
logging_collector = on

3)

Restart PostgreSQL:

sudo service postgresql restart

(not sure but probably sudo service postgresql reload will be enough)

4)

Find out where the logs stored:

postgres=# show data_directory; show log_directory;
┌──────────────────────────────┐
│        data_directory        │
├──────────────────────────────┤
│ /var/lib/postgresql/9.5/main │
└──────────────────────────────┘

┌───────────────┐
│ log_directory │
├───────────────┤
│ pg_log        │
└───────────────┘

5)

Almost done. In files /var/lib/postgresql/9.5/main/pg_log/*.csv you will find records about connections/disconections. It is up to you how to deal with this info.