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

PG 的AWR报告!调优工具pgBadger部署

kk的DBA随笔 2024-11-28
83

一,简介:

pgBadger(日志分析器)类似于 oracle 的 AWR 报告(基于 1 小时,一天,一周,一月的报告),以图形化的方式帮助 DBA 更方便的找到隐含问题。

pgbadger 是为了提高速度而构建的,具有来自 pg 日志文件的完整报告,他是一个小型的 Perl 脚本(linux 需要安装 perl),性能优于任何其他 pg 日志分析器。

pgBadger 可以自动检测日志文件格式 (syslog、 stderr、 csvlog 或 jsonlog)。它被设计用来解析巨大的日志文件和压缩文件。支持的压缩格式有 gzip、bzip2、lz4、xz、zip 和 zstd。

还可以使用命令行选项将 pg Badger 限制为仅报告错误或删除报告(可以自定义)的任何部分。

pgbadger 支持在 postgresql. conf 文件中通过 log_ line_ prefix 自定义的任何格式, 只要它至少指定 %t 和 %p 模式。

pgbadger 允许通过使用指定 CPU 数量的 j 选项并行处理单个日志文件或多个文件。

如果要保存系统性能, 也可以使用 log_ duration 替代 ogmin duration_statement 来仅报告持续时间和查询数。

二,特性

三,报告模式

  1. 小时一个报告

  2. 每天一个报告

  3. 每周一个累积报告的增量报告

  4. 每月一个报告

  5. 多个进程处理一个日志

  6. 多个进程处理多个日志

(oracle 使用 workload 那个包也可以进行 AWR 报告收集调整,但工作原理不同,oracle 是基于 MMON 收集的 AWR 快照,PG 则是分析日志但生成的都是 html 类型的文件)。

四,部署

下载地址: Releases · darold/pgbadger · GitHub

  1. 编译与安装(root 用户)

解压后进入该安装目录

  1. 编译与安装:

  1. perl Makefile.PL

这个时候可能报一个错:

缺少 perl-ExtUtils-MakeMaker 软件包我们使用 yum 安装上后就可以继续安装了

  1. yum -y install perl-ExtUtils-MakeMaker

再次执行 perl Makefile.PL

  1. make && make install

五,配置 postgresql.conf 配置

-- 目的只要是为了让 pg 主动收集日志,PG 中的日志分为三种,log,clog,xlog,运行日志 log 默认不打开。

这个参数默认 - 1 不记录,改成 0,把所有 sql 语句记下来,如果改成 30,则把慢于 30ms 的 sql 记下来,与慢 sql 原理相同。

根据提示修改后重启 pg。

可以看到 data 目录下已经有了 pg_log。

六,如何产生报告

方式一:当有许多小的日志文件和许多 CPU 时, 一次将一个内核专用于ー个日志文件会更快要启用此行为, 必须改用 - N 选项。对于每个 10MB 的 200 个日志文件,-J 选项的使用开始变得非常有效, 有 8 个内核。使用此方法, 您将确保不会丢失报表中的任何查询。个在服务器上完成的基准测试, 有 8 个 CPU 和 9.5GB 的单个文件。

可以看到,并行可以大量缩短产生分析日志时间。

方式二:产生大量日志,通过阐述 logrotationsize 参数控制,刚才在配置文件中已经配置过,意思就是到了 10M 就重新生成一个文件。

两种方式各有优缺点,我选用第二种方法,日志记录在我们自己定义的目录 pg_log 下。

每次登录和执行 sql 语句都会被记下来(和 oracle 种的 enableddllogging 感觉差不多)

  1. 产生报告:


  2. 产生一个小时的报告(可以选中不同日志产生不同时间段内的报告)



  3. pgbadger -q /usr/local/pgsql/data/pg_log/postgresql-2024-06-16_05*.log \-o /home/postgres/www/pg_reports/day-06-16-05.html

  1. 产生每日和每周的日志报告:


  2. pgbader -I -q /usr/local/pgsql/data/pg_log/* \-O home/postgres/www/pg_reports/ \-f stderr


  3. 在这种模式下, pgbadger将在输出目录中创建一个自动增量文件。这意味着可以在每周旋转的日志文上每天以这种模式运行 pgbadger,并且它不会对日志条目计数两次可以使用 crontab进行定时运行。

也可以给他指定并行,加快分析流程:

给 8 个 cpu 并行分析:

  1. pgbadger -j 8 -q /usr/local/pgsql/data/pg_log/postgresql-2024-06-16_05*.log \-o /home/postgres/www/pg_reports/day-06-16-05.html

看一下界面:这个数据库并没有用过,所以生成是空的

写几个语句再看看


文章转载自kk的DBA随笔,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论