暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

《2312学习》pg_profile部署pgawr报告

原创 大树666 2023-12-06
314

数据库版本12.2,pg_profile4.1

插件分享:https://wwi.lanzoup.com/b019smr0d 密码:co13

安装相关依赖插件

 

这两个插件是pg源码自带,如果是源码编译安装就在源码目录下的contrib目录,找不到就find。如果是yum方式安装的pg可能就没有,反正我没找到。

pg_stat_statements 插件,负责收集SQL statement 级别的统计信息

cd pg_stat_statements/

make

make install

dblink 插件,可以实现远程收集其他实例信息的功能。

cd dblink

make

make install

 

这两个需要额外下载是可选插件非强制安装,然后放在任意目录下编译运行就行了,比如家目录。

pg_stat_kcache 插件,负责采集系统级别的CPU,SYSTEM io等负载的信息

cd pg_stat_kcache-REL2_2_1

make

make install

pg_wait_sampling 插件,负责收集等待事件的信息

cd pg_wait_sampling-1.1.5

make USE_PGXS=1

make USE_PGXS=1 install

 

最后解压pg_profile,其中$(pg_config --sharedir)这个变量就是你pg的安装目录。

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

 

设置参数

shared_preload_libraries = 'pg_wait_sampling,pg_stat_statements,pg_stat_kcache' #用于指定在数据库服务器启动过程中应加载到内存中的共享库列表。如果没装那两个可选插件就把名字去了,不然会报错。
track_activities = on #启用对每个会话的当前执行命令的信息收集,还有命令开始执行的时间。
track_counts = on #启用在数据库活动上的统计收集。
#track_io_timing = on #14以下用这个参数,启用对系统 I/O 调用的计时。
#track_wal_io_timing = on # 14及以上版本这个和track_io_timing两个都能开启,14以下不要开启这个参数不然报错。启用WAL I/O调用的计时。
track_functions = all/pl #启用跟踪函数调用计数和用时。指定pl只跟踪过程语言函数,指定all还会跟踪 SQL 和 C 语言函数。是all or pl 不是直接"all/pl",我看有的文章直接写两个参数,搞不懂他们的数据库是怎么启动的。

测试设置上面几个就行了,生产环境考虑用下面的。

pg_profile.max_sample_age= 7 # 设置sample 的过期时间,以防止采集量占用空间过大
pg_profile.topn = 20 # report中显示的 top N的对象
pg_profile.track_sample_timings = off #记录采样的详细时间
pg_profile.max_query_length = 20000 # 查询语句的最大长度,超出部分阶段截断。

pg_stat_statements.max = 1000 #是跟踪语句的最大数目(即pg_stat_statements视图中行的最大数量)。如果语句超过这个数量,最少被执行的语句的信息将会被丢弃。设置太低可能会导致在抽取样本之前会清除某些语句的统计信息。
pg_stat_statements.track = 'top' #指定top可以跟踪顶层语句(直接由客户端发出的语句),指定all还可以跟踪嵌套的语句(例如在函数中调用的语句),指定none则禁用语句统计信息收集。默认值是top。如果你设置的是all,作者说可能会影响报告中%Totalfields字段的值。
pg_stat_statements.save = off #指定在服务器关闭之后是否还保存语句统计信息。
pg_profile.topn = 20 #每个排序的报告表中要报告顶部对象的数量

 

重启数据库

pg_ctl stop -D /data/pg_data

pg_ctl start -D /data/pg_data

 

进入数据安装插件,最好安顺序装,不然比如先装pg_stat_kcache没装pg_stat_statements就会报错,好像是依赖关系。同理删的时候也是先删pg_stat_kcache。顺便提一句删除扩展就是drop  extension。

create extension pg_stat_statements;

create extension dblink;

create extension pg_wait_sampling;

create extension pg_stat_kcache;

create schema profile;
create extension pg_profile schema profile;

 

做完上面就可以正常用了,比如创建sample 采样;

select profile.take_sample();


查看采样

select profile.show_samples();


生成报告,括号里的数字根据生成的数字填入。必须有两个采样才能生成报告。

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

 

定时生成采样,设置contab定时。

*/30 * * * *   psql -U profile_usr -d postgres -c 'SELECT profile.take_sample()' > /dev/null 2>&1


生成对比采样

psql  -qtc "select profile.get_diffreport(1,2,3,4)" --output awr_report_postgres_12_34.html


按时间生成采样

psql  -Aqtc "select get_report(tstzrange('2023-12-06 14:20:10+08','2023-12-06 16:30:50+08'))" -o report_range_14:20-16:30.html


网盘链接有生成的报告,pg_profile官方说明文档,谷歌翻译文档。

这个工具感觉用的人不多,能搜到的部署文档也是乱七八槽有的能用有的用不了,按照我写的步骤只要安装插件的过程中不报错。应该就没问题。

我自己也踩了很多坑,比如执行select profile.take_sample();报错无法连接数据库,执行某个函数没有权限。生成的报告打开是空白。对了也不建议用4.3,我14版本用4.3生成的报告三四百M还打不开。

后续应该会多试试其他的用法看看报告指标,到时候再分享。

 

最后修改时间:2024-01-10 16:31:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论