文档章节

pgBadger(PostgreSQL日志分析工具)

yonj1e
 yonj1e
发布于 2017/09/11 17:04
字数 1001
阅读 644
收藏 10
点赞 1
评论 0

摘要

之前曾介绍过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
粉丝 15
博文 19
码字总数 31281
作品 0
济南
后端工程师
从代码层判断 pg_basebackup 是否已正常结束 - 暨改进建议

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

德哥 ⋅ 前天 ⋅ 0

PostgreSQL 类微博FEED系统 - 设计与性能指标

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

德哥 ⋅ 04/18 ⋅ 0

数据库案例集锦 - 开发者的《如来神掌》

标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗...

德哥 ⋅ 2017/06/09 ⋅ 0

PostgreSQL 11 preview - Allow on-line enabling and disabling of data checksums

标签 PostgreSQL , checksum , online modify , pgverifychecksums , pgenabledatachecksums , pgdisabledatachecksums 背景 PostgreSQL的数据文件是以数据块组织的,由于数据块可能比文件系......

德哥 ⋅ 05/06 ⋅ 0

MySQL8与PG10:新版本下的较量谁更胜一筹?

作者:Kenn Ejima 原文地址:https://blog.dumper.io/showdown-mysql-8-vs-postgresql-10/ 译者:雪落无痕xdj、无若、LinuxTech、Tocy、kevinlinkai 注:本文转自开源中国订阅号(oschina20...

Kenn Ejima ⋅ 06/12 ⋅ 0

Windows下安装postgresql10的详细步骤解析

本例安装postgresql-10.4-1-windows-x64 postgresql中文社区下载地址:http://www.postgres.cn/download/ postgresql官网下载地址:https://www.postgresql.org/download/ 由于网络问题,本例......

dxzou ⋅ 06/11 ⋅ 0

PostgreSQL和MySQL

翻译来源:https://www.2ndquadrant.com/en/postgresql/postgresql-vs-mysql/ PostgreSQL和MySQL 之间有着根本的区别。在评估两个系统之间的差异和折衷之后,必须做出明智的决定。 我们已经提...

悟道之客 ⋅ 05/04 ⋅ 0

PostgreSQL 社交类好友关系系统实践 - 正反向关系查询加速

标签 PostgreSQL , 好友关系 , 正向关系 , 反向关系 背景 关系系统在很多设计类应用中非常常见,例如查询你有哪些好友,你是哪些人的好友。 又比如我LIKE了哪些人,哪些人LIKE了我。 比如在之...

德哥 ⋅ 04/18 ⋅ 0

PostgreSQL 数据库初体验

高强,“DBA+济南群”联合发起人。现就职于山东华鲁科技发展股份有限公司。擅长Oracle、AIX、Linux、PostgreSQL和DB2等产品的实施、运维和故障处理。曾是一名存储工程师,负责实施存储、双机...

高强 ⋅ 2015/10/15 ⋅ 0

PostgreSQL 实践 - 实时广告位推荐 1 (任意字段组合、任意维度组合搜索、输出TOP-K)

标签 PostgreSQL , gin , 倒排 , rum , ginfuzzysearch_limit , 随机采样 , 分区索引 , 分段索引 , score分段 背景 店铺,广告推荐位,自动计算,高效检索,高效更新。 根据:本店、全网用户...

德哥 ⋅ 05/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 3分钟前 ⋅ 0

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部