文档章节

pgBadger(PostgreSQL日志分析工具)

yonj1e
 yonj1e
发布于 2017/09/11 17:04
字数 1001
阅读 894
收藏 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
粉丝 18
博文 20
码字总数 31358
作品 0
济南
后端工程师
私信 提问
PostgreSQL DBA(3) - 日志分析工具pgbadger简介

本节简单介绍了一款用于分析PostgreSQL数据库日志文件的工具:pgbadger,这是一款使用Perl实现的轻量级日志分析工具。 一、简介 pgbadger通过分析PG的日志文件,以图表的形式展现数据库的各项活...

EthanHe
08/31
0
0
pgBadger 3.2 发布,PostgreSQL 日志分析

PostgreSQL 日志分析工具 pgBadger 发布 3.2 版本,该版本主要是 bug 修复,同时增加了在查询中对 HTML 代码进行转义以及在所有查询报表中增加 Min/Max 报告。 pgBadger 是一个 PostgreSQL 数...

oschina
2013/04/09
314
0
pgBadger 4.0 发布,PostgreSQL 日志分析

pgBadger 4.0 包含很多新功能,包括对 HTML 报表的大幅改进,新的统计,兼容 PostgreSQL 9.3 以及时间区间的排除功能。 pgBadger 是一个 PostgreSQL 数据库日志分析程序,可生成详细的报表和...

oschina
2013/11/01
935
2
pgBadger 1.2 发布,PostgreSQL 日志分析

pgBadger 1.2 发布,该版本增加新的报告,修复了日志解析的问题和一些小问题。 pgBadger 是一个 PostgreSQL 数据库日志分析程序,可生成详细的报表和图表,旨在替换 pgFouine 脚本。 查看示例...

oschina
2012/07/16
279
2
pgBadger 3.5 发布,PostgreSQL 日志分析

pgBadger 3.5 是一个 bugfix 版本,此外改进了在分组查询时 Y 轴数值打印的效果,新增临时文件的图表。 pgBadger 是一个 PostgreSQL 数据库日志分析程序,可生成详细的报表和图表,旨在替换 ...

oschina
2013/07/12
614
0

没有更多内容

加载失败,请刷新页面

加载更多

flutter Expanded用法

使用的地方:一个分类,类似京东的,左右两边都可以滑动 Widget build(BuildContext context) { return Row(children: [ Column( children: <Widget>[ Ex......

大灰狼wow
11分钟前
1
0
Java8 Map中新增的方法使用总结

前言 得益于 Java 8 的 default 方法特性,Java 8 对 Map 增加了不少实用的默认方法,像 getOrDefault, forEach, replace, replaceAll, putIfAbsent, remove(key, value), computeIfPresent,......

kaixin_code
21分钟前
1
0
@TransactionConfiguration

@TransactionConfiguration过时与替代写法 @TransactionConfiguration 替代写法

miaojiangmin
23分钟前
0
0
浅谈Vue响应式(数组变异方法)

很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法。 看来想让女...

开元中国2015
24分钟前
1
0
Elasticsearch通关教程(五):如何通过SQL查询Elasticsearch

  这篇博文本来是想放在全系列的大概第五、六篇的时候再讲的,毕竟查询是在索引创建、索引文档数据生成和一些基本概念介绍完之后才需要的。当前面的一些知识概念全都讲解完之后再讲解查询是...

SEOwhywhy
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部