0Pricing
SQL Academy · 课时

使用 pgBadger 分析日志

使用 pgBadger 分析 Postgres 日志,生成包含慢查询、锁等待和连接模式的 HTML 报告

使用 pgBadger 分析日志 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。

pgBadger 是什么

pgBadger 是一个基于 Perl 的 PostgreSQL 日志分析器,可以生成精美的 HTML 报告,涵盖慢查询、锁等待、错误和连接模式。请定期对日志运行它。

配置日志记录

postgresql.conf:

log_destination = 'csvlog'
logging_collector = on
log_directory = 'pg_log'
log_min_duration_statement = '500ms'
log_lock_waits = on
log_temp_files = 0
log_checkpoints = on
log_connections = on
log_disconnections = on
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '

运行 pgBadger

生成报告:

pgbadger /var/log/postgresql/postgresql-2024-03-15.csv \
  -o report.html

# Multiple files:
pgbadger /var/log/postgresql/*.csv -o report.html

报告包含什么

  • 最慢的查询及示例
  • 最频繁的查询
  • 最耗时的查询
  • 锁等待
  • 错误
  • 随时间变化的连接模式
  • 临时文件使用情况
  • 检查点和清理活动

增量模式

对于持续的日志分析,请每天生成报告:

pgbadger -I -O /var/www/pgbadger/ /var/log/postgresql/*.csv
# Updates an HTML dashboard incrementally.

通过 Cron 自动运行

每晚执行的任务:

0 1 * * * pgbadger -I -O /var/www/pgbadger/ /var/log/postgresql/postgresql-`date +%F`.csv

与 pg_stat_statements 的对比

pg_stat_statements:聚合指标,存储在数据库中。
pgBadger:解析原始日志,找出聚合统计遗漏的模式(锁等待、错误、连接风暴)。

提取锁等待模式

pgBadger 会汇总锁等待——哪些查询阻塞了哪些查询,以及持续了多久。这对于诊断死锁和争用问题非常有用。

错误部分

统计每种错误代码出现的次数。“23505 unique_violation:12,000 次”就是一个信号——应用程序正在重试重复插入。

临时文件

会溢出到磁盘的查询(排序或哈希数据过大,无法容纳在 work_mem 中):

log_temp_files = 0     -- log all temp file usage
-- pgBadger summarises queries that created temp files.

云端替代方案

RDS Performance Insights、Cloud SQL Query Insights 等服务可以在托管环境中执行类似的分析——通常基于相同的统计信息来源。

回顾

pgBadger 会将 PostgreSQL 日志转换为仪表板。

  • 设置 log_min_duration_statement
  • 定期生成 HTML 报告
  • 查找锁等待、临时文件和错误模式
  • 作为 pg_stat_statements 的补充

快速检查

您发现应用程序正在重试大量 INSERT。哪个 PostgreSQL 日志设置可以帮助您确认这一点?

常见问题解答

「使用 pgBadger 分析日志」课时是免费的吗?

是的 — 「使用 pgBadger 分析日志」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。

「使用 pgBadger 分析日志」这节课中我会学到什么?

使用 pgBadger 分析 Postgres 日志,生成包含慢查询、锁等待和连接模式的 HTML 报告 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 SQL Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「使用 pgBadger 分析日志」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 SQL Academy 课中编写并运行代码吗?

能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. pg_stat_statements:重点查询
  2. 使用 pgBadger 分析日志
  3. 连接池:PgBouncer
  4. 容量规划与膨胀审计
← 返回 SQL Academy