跳转到主要内容

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 报告。