使用 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 反馈 — 无需本地设置。
此课程中的所有课时
- pg_stat_statements:重点查询
- 使用 pgBadger 分析日志
- 连接池:PgBouncer
- 容量规划与膨胀审计