# 使用pgBadger进行日志分析

> 作者/来源: UCloud 运营管理员
> 发布时间: 2023-01-11T05:20:00.000Z
> 分类: 其他
> 标签: AI, 数据库
> 原文链接: http://117.50.162.249:3000/yun/articles/843

---

# 使用pgBadger进行日志分析

> 来源: https://www.ucloud.cn/yun/130063.html
> 作者: IT那活儿
> 发布日期: 发布于2023-01-11 13:20

使用pgBadger进行日志分析

[

前言

]

数据库日志看看，是不是有什么问题？

VI打开密密麻麻的一片。还是用grep之类的命令过滤吧。

怎么这么多warning啊，严重影响看正常的日志。在用grep把这些warning屏蔽掉。

早在xxxx点都出问题了，日志已经有显示了，我们一直到现在才发现。

相信很多DBA同学遇到过类似的困扰，今天我们就介绍一下pgBadger，帮助我们分析日志的好工具。

[

pgBadger使用

]

## 

pgBadger是一款开源的快速分析PostgreSQL日志的工具，它使用perl语言编写。对日志进行分析之后输出成HTML文件。它生成的报告易于阅读。可以帮助我们查看错误日志、连接数、检查点、临时文件、VACUUM、Locks等信息。

到网站https://pgbadger.darold.net/上下载最新安装包，然后解压到指定目录。

在运行pgbadger之前，我们需要对PostgreSQL先进行配置。

**1.****打开****SQL****日志记录**

log\_min\_duration\_statement=0

如果执行的SQL语句超过了这个参数设置的值，就会记录到日志里面，类似于MySQL中的慢查询日志。默认值为-1，不记录到日志。当前我们系统设置的是1000ms，也就是大于1s的SQL语句将被记录到日志。

**2.****设置日志的前缀信息**

这个分两种情况。和log\_destination参数有关系。

如果是“stderr”日志格式，log\_line\_prefix必须至少为：

log\_line\_prefix=％t[％p]：

日志的前缀也可以添加用户、数据库名称，应用程序名称和客户端IP地址，如下所示：

log\_line\_prefix=％t[％p]：user=％u，db=％d，app=％a，client=％h

如果是“syslog”日志格式，log\_line\_prefix就是：

log\_line\_prefix=user =％u，db=％d，app=％a，client=％h

**3.打开其他日志记录**

为了让pgBadger能够更好的分析，需要开启一些基础记录功能。

log\_checkpoints=on

log\_connections= on

log\_disconnections=on

log\_lock\_waits=on

log\_temp\_files=0

log\_autovacuum\_min\_duration=0

log\_error\_verbosity= default

log\_statement=none

这里不要log\_statement不要启用，因为pgBadger不会解析它的日志格式。

**4.****设置字符集**

最后一个是设置字符集。要确保自己的语言环境是英文的。

lc\_messages=en\_US.UTF- 8’

lc\_messages=C

以上参数设置完成之后，进入到pgbadger目录运行，指定日志文件输出成html格式。

. ./pgbadger--prefix %t [%p]: user=%u,db=%d,app=%a,client=%h /pg\_data1/pg12/logs/postgresql-2020-11-26\_093001.log -o11-26\_093001.html

## 查看报告

接下来我们就可以查看报告了。

报告有以下信息：

查询、事件、Vacuum、临时文件、会话数、连接数。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_000.png)

接下来我们来看下我们需要关注的一些点。首先是TOPSQL语句。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_001.png)

这里有一个图表。显示了SQL语句的执行时间所在的数量，比如1-10s，有43个查询。大于10秒是11个查询。SQL执行的SQL语句都会列出来。

其次可以看看出现的错误，通过图标可以迅速发现16点是一个错误频发期。一共出现了11次错误。可以进一步查看具体报的什么错。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_002.png)

会话数，通过图形判断是否在某个时间点出现大量的连接。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_003.png)

查看各个数据库占用的会话数。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_004.png)

检查点这里提供了检查点过程的信息，包括写入的缓冲区数，WAL文件以及其他常规信息。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_005.png)

[

总结

]

有了pgBadger工具，我们在查看错误日志的时候更加的得心应手。通过生成的图表可以有助于我们提前发现一些性能问题。同时它是开源和免费使用的，它的Licence在PostgreSQL下面。

![](https://ucloud-blog.cn-bj.ufileos.com/articles/130063/images/130063_006.png)

同时我们可以搞一些高级的玩法，比如写一个crontab定期的分析html，还有远程分析html、增量分析等等。