文档章节

pgBadger(PostgreSQL日志分析工具)

yonj1e
 yonj1e
发布于 2017/09/11 17:04
字数 1001
阅读 707
收藏 10

摘要

之前曾介绍过PostgreSQL的日志审计,这会将执行的SQL输出到服务日志(pg_log),势必会带来性能问题,真正的问题是,这些记录对我们有多少帮助?所以我们来看一下如何使用增加的日志记录来做一些有用的事情。

pg_stat_statements 不仅输出SQL语句,还可以输出执行时间等,通过分析此服务器日志,可以知道执行什么样的SQL,以及缩小范围找到哪些SQL有可能出现性能问题。

SQL日志分析工具pgBadger

pgBadger 主页:home 下载地址:download

pgBadger是在Perl中创建的一个脚本,与PHP脚本中开发的名为pgFouine的程序具有相同的功能。 在命令行上指定并执行服务器日志时,会生成一个将服务器日志分析为HTML文件的报告。

此外,它不仅收集SQL,还收集服务器日志中的错误日志等。

环境

CentOS 6.9、PostgreSQL9.5.9、pgBadger 9.2

安装pgBadger

tar zxvf pgbadger-9.2.tar.gz
cd pgbadger-9.2
[root@localhost pgbadger-9.2]# ll
total 1416
drwxr-xr-x. 8 root root    4096 Sep 11 01:13 blib
-rw-rw-r--. 1 root root   94609 Jul 28 07:45 ChangeLog
-rw-rw-r--. 1 root root     347 Jul 28 07:45 CONTRIBUTING.md
drwxrwxr-x. 2 root root    4096 Jul 28 07:45 doc
-rw-rw-r--. 1 root root     903 Jul 28 07:45 LICENSE
-rw-r--r--. 1 root root   24018 Sep 11 01:13 Makefile
-rw-rw-r--. 1 root root    1400 Jul 28 07:45 Makefile.PL
-rw-rw-r--. 1 root root      81 Jul 28 07:45 MANIFEST
-rw-rw-r--. 1 root root     334 Jul 28 07:45 META.yml
-rw-rw-r--. 1 root root 1256247 Jul 28 07:45 pgbadger
-rw-r--r--. 1 root root       0 Sep 11 01:13 pm_to_blib
-rw-rw-r--. 1 root root   30799 Jul 28 07:45 README
drwxrwxr-x. 3 root root    4096 Jul 28 07:45 resources
drwxrwxr-x. 2 root root    4096 Jul 28 07:45 tools

perl Makefile.PL

make;

make install;

查看安装版本

[root@localhost pgbadger-9.2]# which pgbadger
/usr/local/bin/pgbadger
[root@localhost pgbadger-9.2]# pgbadger -V
pgBadger version 9.2

PostgreSQL配置

logging_collector = on
log_filename = 'postgresql-%w.log'
log_file_mode = 0640
log_truncate_on_rotation = on
log_rotation_age = 1d
log_min_duration_statement = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_duration = on
log_lock_waits = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d '

安装httpd、php

yum install httpd
chkconfig httpd on
service httpd start
yum install php

查看/var/www

[root@localhost www]# pwd
/var/www
[root@localhost www]# ll
total 20
drwxr-xr-x. 2 root root 4096 Aug 15 15:45 cgi-bin
drwxr-xr-x. 3 root root 4096 Sep 11 02:23 error
drwxr-xr-x. 2 root root 4096 Sep 11 03:43 html
drwxr-xr-x. 3 root root 4096 Sep 11 02:23 icons
drwxr-xr-x. 3 root root 4096 Sep 11 04:33 pgbadger

日志分析

./pgbench -i
./pgbench -c 10 -t 1000

[root@localhost ~]# pgbadger /opt/postgres/db/pgsql-9.5.9/data/pg_log/*.log -o /var/www/pgbadger/out.html -f stderr
[========================>] Parsed 10485802 bytes of 10485802 (100.00%), queries: 65341, events: 2
[========================>] Parsed 755640 bytes of 755640 (100.00%), queries: 70036, events: 2
LOG: Ok, generating html report...
[root@localhost ~]# 

在浏览器打开/var/www/pgbadger/out.html

连续日志分析(增量模式)

增量模式用于连续获取分析结果。
以增量模式执行pgBadger会在第二天创建下一个报告(增量报告)。

[root@localhost ~]# pgbadger -I /opt/postgres/db/pgsql-9.5.9/data/pg_log/*.log -o /var/www/pgbadger/out.html -f stderr
[========================>] Parsed 1499636 bytes of 1499636 (100.00%), queries: 0, events: 0
[========================>] Parsed 10485846 bytes of 10485846 (100.00%), queries: 65379, events: 0
[========================>] Parsed 743891 bytes of 743891 (100.00%), queries: 4625, events: 0
LOG: Ok, generating HTML daily report into /var/www/pgbadger//2017/09/11/...
LOG: Ok, generating HTML daily report into /var/www/pgbadger//2017/09/12/...
LOG: Ok, generating HTML weekly report into /var/www/pgbadger//2017/week-38/...
LOG: Ok, generating global index to access incremental reports...

[root@localhost ~]# ll /var/www/pgbadger/
total 692
drwxr-xr-x. 4 root root   4096 Sep 11 21:09 2017
-rw-r--r--. 1 root root 695474 Sep 12 21:15 index.html
-rw-r--r--. 1 root root    187 Sep 12 21:15 LAST_PARSED
drwxrwxrwx. 6 1107 1107   4096 Aug 28 17:44 postgresql-9.5.9
[root@localhost ~]# ll /var/www/pgbadger/2017/
total 8
drwxr-xr-x. 4 root root 4096 Sep 12 21:15 09
drwxr-xr-x. 2 root root 4096 Sep 11 21:09 week-38
[root@localhost ~]# 

这里创建一个具有年份的目录,链接所有报告的索引页面以及保存最后一个解析行的文件。

以增量模式创建报表时,会创建链接每个报表页面的索引页(index.html)。

总结

pgBadger是一个完美的分析工具,旨在提高数据库的性能,因为它具有丰富的统计结果。
当你不知道PostgreSQL性能坏的原因,如果你认为查询执行时间是可疑的,可以尝试使用它。

© 著作权归作者所有

共有 人打赏支持
yonj1e
粉丝 16
博文 20
码字总数 31358
作品 0
济南
后端工程师
从代码层判断 pg_basebackup 是否已正常结束 - 暨改进建议

标签 PostgreSQL , pg_basebackup 背景 用户通常会使用pg_basebackup来对PostgreSQL实施在线备份,对于超级大的数据库实例,可能需要备份很久。 如果将任务分解来看,假设备份是任务流中的一...

德哥
06/21
0
0
RedHat Linux上安装PostgreSQL

操作系统信息:Red Hat Enterprise Linux 4 2. 下载PostgreSQL源码:http://www.postgresql.org/ftp/source,现在已经更新到了9.1beta版本了,不过安装过程基本一致,我之前下载的是8.4.2,所...

Socrates Duan
2011/07/15
0
0
PostgreSQL的日志类型

刚开始学习postgres的时候,可能对PostgreSQL中的日志概念比较模糊,到底有多少种日志,哪些日志是能删除的,各自又记录什么样的功能。 PostgreSQL中有三种日志,pglog,pgxlog和pgclog。 一...

kenyon_君羊
2012/12/21
0
0
PostgreSQL 类微博FEED系统 - 设计与性能指标

标签 PostgreSQL , feed , 微博 , 推送 , 分区 , 分片 , UDF , 挖掘 , 文本挖掘 背景 类微博系统,最频繁用到的功能: 之前写过一篇《三体高可用PCC大赛 - facebook微博 like场景 - 数据库设...

德哥
04/18
0
0
PostgreSQL如何删除pg_xlog数据

之前讨论过如果归档或者流复制出现问题的时候,pgxlog下面会不断地产生WAL日志,严重会塞满磁盘空间。但是pgxlog下面的日志又不能随意删除,否则有可能导致数据库起不来。PostgreSQL自带了清...

kenyon_君羊
2013/01/10
0
3

没有更多内容

加载失败,请刷新页面

加载更多

下一页

7月13日任务 for、while、break跳出、ontinue结束、exit退出

20.10 for循环 语法:for 变量名 in 条件; do …; done 案例1:计算1到100的和 #!/bin/bashsum=0for i in `seq 1 100`do    sum=$[$sum+$i]    echo $idoneecho $sum 案例2...

吕湘颖
36分钟前
0
0
qemu增量镜像的好处

可以快速恢复,相当于快照的功能。

simpower
44分钟前
0
0
Python3_Appium_QQ 实战

Python3_Appium实战 -海盐 APPium移动自动化测试 样例中 测试的 app 使用的是 QQ; Appium介绍 Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合...

海盐宝宝
44分钟前
0
0
内网穿透利器-ngrok的图文安装

使用场景: 在做微信开发或是调银行或支付宝等支付系统的时候,本地想联调但是对方需要可以访问的域名或是外网IP才可以。但是,在本地如果不在路由器上做映射或是公司没有固定的外网IP。这种...

中凯_凯哥java
49分钟前
2
1
归约与分组 - 读《Java 8实战》

区分Collection,Collector和collect 代码中用到的类与方法用红框标出,可从git库中查看 收集器用作高级归约 // 按货币对交易进行分组Map<Currency, List<Transaction>> currencyListMap = g...

yysue
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部