其他分享
首页 > 其他分享> > pg-AWR工具(pg_profile)

pg-AWR工具(pg_profile)

作者:互联网

pg-AWR工具(pg_profile)

目录

什么是pg_profile

配置postgresql.conf

track_activities = on

track_counts = on

track_io_timing = on

track_functions = all/p1

这四个参数建议打开,不然使用会有一些影响。其中track_activities和track_counts默认是打开的。track_activities允许监控当前被任意服务器进程执行的命令。track_counts控制是否收集关于表和索引访问的统计信息。track_io_timing启用对块读写次数的监控。参数track_functions启用对用户定义函数使用的跟踪。

shared_preload_libraries = 'pg_stat_statements'
pg_stat_statements.max = 10000
pg_stat_statements.track = 'top'
pg_stat_statements.save = off

pg_stat_statements.max是跟踪语句的最大数目(即pg_stat_statements视图中行的最大数量)。如果语句超过这个数量,最少被执行的语句的信息将会被丢弃。作者说此参数的设置太低可能会导致在抽取样本之前会清除某些语句的统计信息。建议设置大一些。当前参数我们设置的10000,足够使用。

pg_stat_statements.track指定top可以跟踪顶层语句(直接由客户端发出的语句),指定all还可以跟踪嵌套的语句(例如在函数中调用的语句),指定none则禁用语句统计信息收集。默认值是top。如果你设置的是all,作者说可能会影响报告中%Totalfields字段的精确值。

上面参数修改稍为简单,因为基本上都是默认打开的。只有少数没开,打开也不需要重启。

下载并安装pg_profile

下载地址

1、安装比较简单,可以直接将压缩包解压放入postgres的extension扩展目录下面即可

tar xzf pg_profile--0.3.4.tar.gz --directory $(pg_config --sharedir)/extension

2、安装扩展

这里有两种方式安装,一种是公共模式安装,这种安装方式最简单。第二种是独立Schema安装,这种安装将在自己创建的Schema中建自己的表,视图,序列和函数,可以和其他用户有效的进行隔离。

postgres=# CREATE EXTENSION dblink;

postgres=# CREATE EXTENSION pg_stat_statements;

postgres=# CREATE SCHEMA profile;

postgres=# CREATE EXTENSION pg_profile SCHEMA profile;

默认pg_profile需要使用dblink和pg_stat_statements扩展包,这两个属于系统自带插件,可选插件是pg_stat_kcache

还可以安装pg_stat_kcache数据,提供有关语句CPU使用率和文件系统负载的信息

创建快照生成报告

执行函数创建快照

postgres=# select * from take_sample();
 server | result |   elapsed   
--------+--------+-------------
 local  | OK     | 00:00:02.98
(1 row)
--也可以调用snapshot()来生成快照,pg_profile 0.1.2开始snapshot()函数重命名为take_sample()

执行完之后可以调用show_samples()函数,查看生成的快照


postgres=# select show_samples();
          show_samples           
---------------------------------
 (1,"2021-11-09 11:47:01+08",,,)
 (2,"2021-11-09 14:18:40+08",,,)
 (3,"2021-11-10 13:56:55+08",,,)
 (4,"2021-11-10 13:58:55+08",,,)
 (5,"2021-11-10 14:15:58+08",,,)
 (6,"2021-11-10 14:38:38+08",,,)
 (7,"2021-11-10 15:50:53+08",,,)
 (8,"2021-11-10 15:52:34+08",,,)
 (9,"2021-11-10 16:37:18+08",,,)
(9 rows)

总共9个快照,执行get_report命令,任意两个时间段就可以生成AWR报告,如果要生产对比报告,可以使用get_diffreport命令

psql -qtc "select profile.get_report(1,2)"  --output awr_report_postgres_1_2.html

每半个小时生成快照的方法:

*/30 * * * *  psql -c 'SELECT profile.snapshot()' > tmp/pg_awr.log  2>&1

浏览报告

1636537400(1).jpg

1636537568(1).jpg

1636537593(1).jpg

1636537606(1).jpg

1636537646(1).jpg

1636538616(1).jpg

1636538774(1).jpg

1636537712(1).jpg

1636537624(1).jpg

总结

标签:profile,stat,快照,postgres,track,AWR,pg
来源: https://www.cnblogs.com/zhangfx01/p/15587596.html