当前位置: 首页 > news >正文

PGSQL Phriday #010:日志分析

PGSQL Phriday #010:日志分析

摘要:本文讨论了 PostgreSQL 日志分析方法,重点介绍了作者使用 SQL 和外部数据包装器(FDW)而非 pgBadger 的方法。虽然认可 pgBadger 是生产环境监控的有用工具,但作者解释了为什么在排查特定数据库问题时更倾向于使用基于 SQL 的灵活方法进行深入分析。

原文链接


日志设置

我一直建议客户在 PostgreSQL 日志记录方面要"贪婪"一些。获取的信息越多,对正在发生的事情的判断就越准确。

以下是我推荐的典型配置:

  • log_destination:csv。你需要 CSV 格式提供的灵活性。此外,它会自动为你提供一行日志应该具备的所有元数据。
    • logging_collector:on。如果你想记录日志。对于 CSV 格式这是必需的。
    • log_min_duration_statement:对于 OLTP 工作负载,我推荐 250ms,但如果这会产生太多慢查询,就设置一个更高的值,解决最慢的查询,然后逐步降低这个参数。对于 OLAP 工作负载,该值可以在 1 到 5 秒之间。
    • log_autovacuum_min_duration:0。你想看到所有自动清理启动,不论其持续时间多长。
    • log_checkpoints:on。你想记录所有检查点。
    • log_connections:on。你想查看所有连接(或连接尝试)。
    • log_disconnections:on。如果没有连接池,这将有助于理解你的事务。即使使用连接池,我仍然建议将此参数设置为 on。
    • log_lock_waits:on。你想记录查询等待锁释放的情况。
    • log_temp_files:0。你希望所有临时文件能够对work_mem设置值进行良好的分析。

日志分析

那么,我是如何分析日志的,为什么 Badger 不能为我做这些?我通常的做法是使用 CSV 格式输出日志,并创建一个简单的 FDW(外部数据包装器)来查询日志,就像查询数据库中的表一样。

我首先做的事情与 Badger 相同:

  • 统计日志中 PANIC、FATAL、ERROR 消息的数量
  • 统计连接/断开连接的数量
  • 检查检查点的频率
  • ……

但是随后,我可以获取已识别工作负载峰值期间的相同指标。如果你想在 Badger 中做到这一点,你需要隔离要分析的文件部分,然后重新运行分析。而在这里,我只需调整 WHERE 条件即可。

此外,对于某些指标(如临时文件),我希望能获得更细粒度的信息。例如,我想知道临时文件使用情况的百分位数。如果发现某个查询使用了非常大的临时文件,我喜欢将它单独拿出来,对其他查询重新运行分析,以找到合适的work_mem值。

当我需要查看慢查询时,我也喜欢 SQL 提供的灵活性。使用 SQL 可以获得更高的精度。

Badger 作为生产环境的日志分析器

这就是我不使用 Badger 的原因。再说一遍,Badger 不是一个糟糕的工具,我鼓励每天在生产环境工作的人安装它并使用它进行离线分析,以获取实例整体运行情况的报告。此外,我鼓励生产环境的 DBA 关注他们获得的各个仪表板的演变。

如果你需要深入研究数据库中的某些特定活动,那么使用 SQL 吧,你将获得所需的所有灵活性!


标签:PGSQL Phriday PostgreSQL

http://www.jsqmd.com/news/700773/

相关文章:

  • MAA明日方舟助手:如何让游戏日常从“肝“到“甘“?
  • VSCode 2026合规检查功能全解析,深度适配IEC 62304:2015 Ed2.1与UL 4600安全生命周期要求
  • 2026年4月5家日语考级网课实测解析:日语考级网课、早道日语、沪江网校日语、线上日语网课、羊驼日语、考研日语选择指南 - 优质品牌商家
  • AlphaAvatar:基于强化学习的虚拟角色物理运动生成技术解析
  • ARM硬件断点与BREAKWRITE命令详解
  • VSCode AI插件配置失效?深度解析node版本冲突、代理证书绕过、WSL2路径映射三大隐性故障根因
  • 2026年宁波粉末冶金齿轮定制加工厂家深度横评与官方联系指南 - 精选优质企业推荐官
  • 【限时公开】微软内部未文档化的Dev Containers高级API:如何通过vscode.devcontainer.* API动态注入环境变量与生命周期钩子
  • 梯度在机器学习中的核心作用与优化实践
  • 基于领航 - 跟随者与人工势场的无人机三维协调编队控制仿真研究(Matlab代码实现)
  • 基于CrewAI框架构建多智能体量化投资分析系统实战指南
  • 2026年金华医美医院选择推荐:从技术到合规的硬核判定 - 优质品牌商家
  • C语言指针生命周期管理失效导致的RCE漏洞,2026年已成企业红队首选入口——附Glibc 2.39+__libc_malloc_hook深度审计模板
  • FAPROTAX 1.2.10数据库升级:微生物功能预测如何实现从“猜“到“知“的跨越?
  • [联机游戏] 让无法使用ip连接的stream游戏直连的方法
  • 天赐范式第22天:关于前文——数学毒丸公式 FPGA 烧录方案,架构紧急补丁・工程勘误补充
  • 基于RRT*路径规划与三次B样条平滑的六自由度机械臂碰撞检测三维避障运动规划研究(Matlab代码实现)
  • 2026-04-22-55
  • Combining Graph Neural Networks with Expert Knowledge for Smart Contract Vulnerability Detection
  • 2026年宁波粉末冶金齿轮定制厂家深度横评:高精度零件采购指南 - 精选优质企业推荐官
  • 2026成都外墙打胶密封防水技术解析与靠谱服务商盘点 - 优质品牌商家
  • 【AI原生开发实战】6.1 LLM微服务架构设计
  • 2026年最新趋势下,江苏无尘室净化空调系统选型必看 - 2026年企业推荐榜
  • 告别安装烦恼:Postman便携版让你的API测试随时随地可用
  • 2026年宁波粉末冶金齿轮定制厂家深度横评与选购指南 - 精选优质企业推荐官
  • CL2205OL CL2207OL CL2210OL CL2212OL CL2215OL CL2207IL CL2218IL CL2224IL CL2207SL CL2210SL CL2215SL
  • consul-server端的启动与监控
  • 算子数学|独立完整学科章节(百条原创公式· ROOT传世定稿)
  • 【AI原生开发实战】6.2 Agent生产部署与可观测性
  • Python的__enter__方法返回上下文管理器自身与with语句的嵌套支持