使用插件pg_stat_monitor监控PG数据库性能

一 pg_stat_monitor简介
PostgreSQL有一个用于捕获查询性能的扩展pg_stat_statements,捕获了大量查询执行细节。但是不包括深入的查询性能问题。pg_stat_monitor插件基于扩展pg_stat_statements提供了更多的性能监控metrics,比pg_stat_statements更为强大的分析工具。

时间分组
pg_stat_monitor不是提供一组不断增加的计数,而是计算配置数量的时间间隔的统计数据。即采用德尔塔值提供更好的数据准确性。

多维分组
pg_stat_statements按(userid,dbid,queryId)对计数器分组时,使用(userid,clientip,dbid,queryId)。可以更 准确的定位来自特定客户端地址的查询性能问题。

响应时间分布直方图
min/max/avg查询在短时间段内计算执行统计数据很合适,但在长时间尝试查看数据时,比较难于理解。pg_stat_monitor添加了一个查询响应时间直方图,提供更好的数据统计。

资源开销
插件pg_stat_monitor资源开销相对较小。

二 pg_stat_monitor部署
下载安装pg_stat_monitor
wget https://github.com/percona/pg_stat_monitor/archive/refs/tags/REL0_9_1.tar.gz

tar -zxvf ./REL0_9_1.tar.gz

cd pg_stat_monitor-REL0_9_1/

make USE_PGXS=1

make USE_PGXS=1 install
image

修改参数文件postgresql.conf

cd $PGDATA

vi postgresql.conf

shared_preload_libraries = 'pg_stat_monitor, pg_stat_statements’

重启PostgreSQL数据库服务
[root@localhost system]# systemctl restart postgresql.service

创建扩展
postgres=# CREATE EXTENSION pg_stat_monitor;
image
image
三 查询效果
postgres=# select * from pg_stat_monitor;

postgres=# select userid, total_time, min_time, max_time, mean_time, query from pg_stat_monitor;