pgBadger 10.x 版本记录
pgBadger 10.x 系列的完整上游版本记录
v10.3 · 2019-02-14
这是维护版本,修复了用户报告的日志格式自动识别问题,以及另一处 PgBouncer 日志解析问题。同时添加一项功能:
-o | --outfile 现在可多次指定,使单条命令输出多种格式。例如:
pgbadger -o out.html -o out.json /log/pgsql-11.log
将生成 HTML 与 JSON 两份报告,分别保存到对应文件。
其他缺陷修复与功能改进:
- 修复指定数据库、用户、客户端或应用过滤条件时,部分查询未出现在统计报告中的问题。
- 修复 PostgreSQL >= 10 默认日志行前缀的自动识别。
- 修复非标准日志行前缀的格式自动识别;
--prefix包含%t、%m或%n,以及%p或%c时,将格式设为 stderr。感谢 Alex Danvy 报告。 - 移除行尾多余空格。
- 为 syslog 解析器添加最小测试。
- 修复
autodetect_format()的调用。 - 使用 maxlength 时截断语句。感谢 Thibaud Madelaine 提供补丁。
- 添加多种输出格式的测试。
-o | --outfile可多次指定,使单条命令输出多种格式。例如: pgbadger -o out.txt -o out.html -o - -x json /log/pgsql-11.log 此命令生成文本和 HTML 报告,保存到对应文件,同时向标准输出写出 JSON 报告。感谢 Nikolay 提出需求。- 将输出格式检测与输出文件名设置移入专用函数
set_output_extension()。 - 修复另一处 PgBouncer 日志解析问题。感谢 Douglas J. Hunley 报告。
v10.2 · 2018-12-27
这是维护版本,修复了过去三个月用户报告的问题,并增加以下功能:
- 支持 PgBouncer 1.8 的 Stats 日志格式。
- 自动调整 JavaScript 图表的时区。
新增命令行选项与远程读取功能:
-
添加
--exclude-db,生成指定数据库以外的所有报告。 -
支持通过 HTTP 或 FTP 下载远程 PostgreSQL 日志。使用 curl 在下载过程中解析,日志不会保存到磁盘。SSH 远程解析也可在命令行以 URI 指定日志文件:
ssh://localhost/postgresql-10-main.log http://localhost/postgresql-10-main.log.gz ftp://localhost/postgresql-10-main.log当时 HTTP 和 FTP 需要在 URI 末尾指定日志格式:
http://localhost/postgresql-10-main.log:stderr可以指定多个日志 URI,适合同时解析远程 PgBouncer 日志和本地 PostgreSQL 日志。
SSH 协议也支持与远程模式相同的通配符,例如
ssh://localhost/postgresql-10-main.log*。使用
-r解析远程文件的旧写法仍可用,但当时已标为过时,并可能在未来版本移除。
其他缺陷修复与功能改进:
- 调整估算文件大小时的进度条结束处理,例如 bz2 文件与远程压缩文件。
- 更新版权年份。
- 补充使用 URI 解析远程日志的说明。
- 远程压缩文件解析完成后强制进度达到 100%。
- 在临时文件报告的查询中提取 PL/pgSQL 函数调用信息,并追加到详细信息区域。
- 修复 CSV 文件的进度条。
- 修复将二进制文件作为输入时误当日志文件读取的问题。
- 将查询的 HTML 输出编码为 UTF8,避免
Wide character in print消息。感谢 Colin ’t Hart 报告。 - 为检查点距离峰值添加键值信息。
- 修复 PgBouncer 解析和请求吞吐量报告。感谢 Levente Birta 报告。
- 修复输入格式使用 csvlog 而非 csv 的问题。
- 支持 PgBouncer 1.8 Stats 日志格式。感谢 Levente Birta 报告。
- CSV 日志禁用并行处理时添加警告。感谢 cstdenis 报告。
- 在用法中补充 csvlog 强制单进程的说明,涉及
-j和-J。感谢 cstdenis 报告。 - 修复通过 SSH 增量解析多行日志时的未知行格式错误。感谢 Wooyoung Cho 报告。
- 在 curl 命令中添加
-k(--insecure),允许从使用自签名证书的服务器下载日志。 - 自动调整 JavaScript 图表时区。感谢 Massimino Sala 提出需求。
- 支持 HTTP 日志下载,例如: /usr/bin/pgbadger http://www.mydom.com/postgresql-10.log
- 使用 curl 在下载过程中解析文件。
- 修复文档。感谢 0xflotus 提供补丁。
- 代码清理后重新应用绑定参数未替换的修复。感谢 Bernhard J. M. Grun 报告。
- 添加
--exclude-db,生成指定数据库以外的所有报告,可多次指定。
v10.1 · 2018-09-12
这是维护版本,修复了增量报告、使用 -j 的多进程模式,以及从标准输入解析日志的问题。使用 v10.0 的用户应升级。
- 添加 PgBouncer 日志解析器的测试。
- 进行小幅性能改进。
- 修复 pgBadger 第 12314 行的无效文件描述符错误。
- 修复启动时进度条中多余的换行。
- 从项目中移除 CircleCI 文件。
- 移除测试套件对 bats 和 jq 的依赖,改用
Test::Simple和JSON::XS。 - 增加测试,尤其覆盖 10.0 中损坏的增量模式和标准输入。
- 同步 pgbadger、POD 和 README,并修正语法错误。感谢 Christoph Berg 提供补丁。
- 添加通过 APT 和 Yum 安装 Perl 模块
JSON::XS的文档。 - 修复增量模式中的 CSS URI。感谢 Floris van Nee 报告。
- 修复从标准输入查找日志时的致命错误。感谢 Jacek Szpot 报告。
- 修复 OSX 构建中的 sed 使用。感谢 Steve Newson 提供补丁。
- 修复增量模式的除零错误。感谢 aleszeleny 报告。
- 将
SQL::Beautify替换为 pgFormatter::Beautify v3.1。
v10.0 · 2018-09-09
这是主要版本,增加新功能,并修复上一版本发布后用户报告的全部问题。
- 支持 PgBouncer 的 syslog 日志格式。
- 支持全部 auto_explain 格式:text、xml、json 和 yaml。
- 支持
log_line_prefix中的%q占位符。 - 支持 Michael Paquier 扩展的 jsonlog 格式,使用
-f jsonlog解析。 - 将 SQL 格式化器替换为 pgFormatter v3.0。
新增命令行选项:
- 添加
--prettify-json,对 JSON 输出进行排版。 - 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。如果客户端时区不同,仍可能需要通过-Z调整图表时区。 - 添加
--include-time,直接选择需要展示的时间范围,避免用--exclude-time逐一排除不需要的范围。
pgBadger 项目与版权已从 Dalibo 转移给项目作者和官方维护者。请更新链接:
- 网站:http://pgbadger.darold.net/
- 源码:https://github.com/darold/pgbadger
作者感谢 Dalibo 团队这些年对 pgBadger 的投入,尤其是 Damien Clochard 和 Jean-paul argudo 对项目推广的帮助。
- 修复增量模式未报告检查点距离和估计值的问题。感谢 aleszeleny 报告。
- 修正 PgBouncer 并发会话报告的标题。感谢 Jehan Guillaume De Rorthais 报告。
- 支持 PgBouncer syslog 日志格式。感谢 djester 提出需求。
- 修复远程日志为空时的错误。感谢 Parasit Hendersson 报告。
- 修复二进制格式测试;二进制文件与平台相关,必须现场生成。感谢 Michal Nowak 报告。
- 修复生成空执行计划的情况。
- 修复命令行指定前缀时自动识别默认格式的解析。
- 移除
Makefile.PL对 git 命令的依赖。 - 更新选项变更文档,并移除必需前缀中的
[%l-1]部分。 - 修复 PostgreSQL 10 的 vacuum/analyze 系统使用信息解析。感谢 Achilleas Mantzios 提供补丁。
- 修复临时文件活动表格。
- 移除安装过程对 git 的依赖。
- 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。这会使报告时间与原始日志不同,增加按时间搜索的难度。客户端时区不同仍可能需要通过-Z调整图表。感谢 xdexter 提出需求,以及 Julien Tachoire 提供补丁。 - 支持 auto_explain 的 JSON 输出格式。感谢 dmius 报告。
- 修复 auto_explain 解析器及查询被计数两次的问题。感谢 zam6ak 报告。
- 修复检查点正则表达式,使其匹配 PostgreSQL 10 日志消息。感谢 Edmund Horner 提供补丁。
- 在
-f | --format说明中补入 jsonlog 信息。 - 修复查询归一化,避免与 bind 查询重复;现在值统一替换为
?,不再将数字替换为 0、字符串替换为两个单引号。感谢 vadv 报告。 - 修复日志级别计数。感谢 Jean-Christophe Arnu 报告。
- 改善对 B::Lint 中裸子程序名检查的兼容性。
- 修复 perlcritic 检查问题。
- 添加
--prettify-json,对 JSON 输出排版;默认输出全部写在一行。 - 修复事件分布报告。
- 修复
log_line_prefix包含多个%%时--prefix的缺陷。感谢 svb007 报告。 - 添加
--log-timezone +/-XX,按相对 GMT 的小时偏移调整日志中的日期/时间后再解析。这会使报告时间与原始日志不同,增加按时间搜索的难度。客户端时区不同仍可能需要通过-Z调整图表。感谢 xdexter 提出需求。 - 从关键字列表移除 INDEXES,并加入 BUFFERS。
- 修复游标查询的归一化。
- 移除 Dockerfile 和 docker run 文档。上游认为 pgBadger 是无强制额外依赖的单个 Perl 脚本,可在不同平台运行;无需安装时,可直接复制 pgbadger 文件并执行。
- 修复没有临时文件活动时的网格布局。感谢 Pierre Giraud 提供补丁。
- 在文档中加入
log_min_duration_statement与log_duration + log_statement的注意事项。感谢 Julien Tachoire 提供补丁。 - 将时区偏移应用到柱状图。感谢 Julien Tachoire 提供补丁。
- 同一 PID 出现错误时删除当前临时文件信息。感谢 Julien Tachoire 提供补丁。
- 示例统一使用
app=,同时支持appname=。此前部分示例使用appname=,但代码未识别它;现在示例改用app=,解析器也接受appname=。感谢 Christoph Berg 提供补丁。 - 修正
-J的长选项名称,应为--Jobs,而非--job_per_file。感谢 Chad Trabant 报告,以及 Etienne Bersac 提供补丁。 - 忽略 blib 文件。感谢 Etienne Bersac 提供补丁。
- 添加一致性测试。感谢 damien clochard 提供补丁。
- 更新文档:stderr 不是
-f的默认值。感谢 Christophe Courtois 提供补丁。 - 始终更新 POD 和 README。感谢 Etienne Bersac 提供补丁。
- 添加回归测试。感谢 Etienne Bersac 提供补丁。
- 添加 editorconfig 配置。感谢 Etienne Bersac 提供补丁。
- 从 gitignore 中移除 vi 临时文件规则。感谢 Etienne Bersac 提供补丁。
- 添加
--include-time,直接选择要查看的时间。例如,从一周日志中只查看一两天,可以用一次--include-time替代多个--exclude-time。感谢 Wesley Bowman 提供补丁。 - 检查 POD 语法。感谢 Etienne Bersac 提供补丁。
- 添加 HACKING,记录测试方法。感谢 Etienne Bersac 提供补丁。
- 移除过时的
--bar-graph选项。感谢 Etienne Bersac 提供补丁。 - 移除容易误导的
.perltidyrc。该文件来自 2012 年,代码已与其规范差距很大,perltidy 的统一差异达 10k 行。感谢 Etienne Bersac 提供补丁。 - 修复 SQL 格式化中使用未初始化值的问题。感谢 John Krugger 和 Jean-paul Argudo 报告。