使用pgBadger进行日志分析

AI 摘要 / TL;DR

使用pgBadger进行日志分析 [ 前言 ] 数据库日志看看,是不是有什么问题? VI打开密密麻麻的一片。还是用grep之类的命令过滤吧。 怎么这么多warning啊,严重影响看正常的日志。在用grep把这些warning屏蔽掉。 早在xxxx点都出问题了,日志已经有显示了,我们一直到现在才发现。 相信很多DBA同学

来源: 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、临时文件、会话数、连接数。

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

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

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

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

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

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

[

总结

]

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

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