跳转到主要内容

文章

最初发表于 vonng.com 的 PostgreSQL 监控、诊断、容量与日志文章。各篇保留原发布日期、署名、插图与历史背景,并配有英文译文。

当前版本的安装与操作方法见 PG Exporter 使用手册。

文章
在 Pigsty 中采用 Victoria 可观测性组件 监控
暂停代码提交的一周:PGCon.Dev 2024 参会记 PostgreSQLPG生态
PostgreSQL 宏观查询优化之 pg_stat_statements PostgreSQLPG管理性能
使用 Pigsty 监控现有 PostgreSQL:RDS、PolarDB 与自建数据库 Pigsty监控RDS
PostgreSQL 慢查询诊断方法 PostgreSQLPG管理性能
Pigsty 首次发布 Pigsty监控
黄金监控指标:错误延迟吞吐饱和 PostgreSQLPG管理监控
Pigsty PostgreSQL 监控系统介绍 Pigsty监控PostgreSQL
PostgreSQL的KPI PostgreSQLPG管理监控
PostgreSQL 监控系统概览 PostgreSQL监控PG管理
关系膨胀的监控与治理 PostgreSQLPG管理
监控 PostgreSQL 表大小 PostgreSQLPG管理监控
PostgreSQL 服务器日志配置 PostgreSQLPG管理监控

PostgreSQL的KPI

冯若航 2789 字 6 分钟

PG Load 将每秒累积的事务耗时按选定的并发数归一化。本文推导这一指标,并用案例说明如何将它用于告警与容量评估。

  • 在 Pigsty 中采用 Victoria 可观测性组件

    冯若航 发布于 文章 1314 字 3 分钟

    冯若航监控

    Featured Image for 在 Pigsty 中采用 Victoria 可观测性组件

    本文记录 2025 年 12 月的 Pigsty v4 测试版。 准备 Pigsty v4.0 时,我将默认的 Prometheus 和 Loki 服务替换为 VictoriaMetrics 与 VictoriaLogs,并加入 VictoriaTraces。目标是降低存储与内存消耗,改善仪表盘和日志查询的响应时间。 之前的使用经验 在探探时,我们用十二台 64 核、256 GB 内存的 Prometheus 节点监控约五千万个时间序列。我的测试中,三节点 VictoriaMetrics 集群可 …

    本文记录 2025 年 12 月的 Pigsty v4 测试版。 准备 Pigsty v4.0 时,我将默认的 Prometheus 和 Loki 服务替换为 VictoriaMetrics 与 VictoriaLogs,并加入 VictoriaTraces。目标是降低存储与内存消耗,改善仪表盘和日志查询的响应时间。 之前的使用经验 在探探时,我们用十二台 64 核、256 GB 内存的 Prometheus 节点监控约五千万个时间序列。我的测试中,三节点 VictoriaMetrics 集群可 …

  • 暂停代码提交的一周:PGCon.Dev 2024 参会记

    冯若航 发布于 文章 8720 字 18 分钟

    冯若航PostgreSQLPG生态

    Featured Image for 暂停代码提交的一周:PGCon.Dev 2024 参会记

    本文是 2024 年 6 月的参会记录,职务、软件包数量和技术提案均按当时情况叙述。 PGCon.Dev 的前身 PGCon 从 2007 年至 2023 年在加拿大渥太华举办,是 PostgreSQL 开发者讨论项目方向的年度聚会。2024 年,新的组织团队接替 Dan Langille,将会场移至温哥华的 SFU 港区活动中心。 全都来参会了,谁还在写代码? Peter Eisentraut 在会后统计发现,大会前后相邻的两次 PostgreSQL 代码提交间隔六天十二小时四十九分钟,是二十 …

    本文是 2024 年 6 月的参会记录,职务、软件包数量和技术提案均按当时情况叙述。 PGCon.Dev 的前身 PGCon 从 2007 年至 2023 年在加拿大渥太华举办,是 PostgreSQL 开发者讨论项目方向的年度聚会。2024 年,新的组织团队接替 Dan Langille,将会场移至温哥华的 SFU 港区活动中心。 全都来参会了,谁还在写代码? Peter Eisentraut 在会后统计发现,大会前后相邻的两次 PostgreSQL 代码提交间隔六天十二小时四十九分钟,是二十 …

  • PostgreSQL 宏观查询优化之 pg_stat_statements

    冯若航 发布于 文章 8558 字 18 分钟

    冯若航PostgreSQLPG管理性能

    Featured Image for PostgreSQL 宏观查询优化之 pg_stat_statements

    本文记录 2023 年的监控方法,示例采用 PostgreSQL 15 的字段和当时的监控面板。 参考原文:Nikolay Samokhvalov 的 PostgreSQL HowTO: pg_stat_statements 系列(第一篇、第二篇、第三篇)。 慢查询会增加响应时间和资源消耗,也可能延长锁等待,增加连接压力。因此,查询优化是 DBA 的核心工作之一。 在查询优化这条路上,有两种不同的方法: 宏观优化:整体分析工作负载,对其进行剖分下钻,自上而下地识别并改进其中表现最糟糕的部分。 微 …

    本文记录 2023 年的监控方法,示例采用 PostgreSQL 15 的字段和当时的监控面板。 参考原文:Nikolay Samokhvalov 的 PostgreSQL HowTO: pg_stat_statements 系列(第一篇、第二篇、第三篇)。 慢查询会增加响应时间和资源消耗,也可能延长锁等待,增加连接压力。因此,查询优化是 DBA 的核心工作之一。 在查询优化这条路上,有两种不同的方法: 宏观优化:整体分析工作负载,对其进行剖分下钻,自上而下地识别并改进其中表现最糟糕的部分。 微 …

  • 使用 Pigsty 监控现有 PostgreSQL:RDS、PolarDB 与自建数据库

    冯若航 发布于 文章 1683 字 4 分钟

    冯若航Pigsty监控RDS

    Featured Image for 使用 Pigsty 监控现有 PostgreSQL:RDS、PolarDB 与自建数据库

    本文记录 2023 年 9 月的 Pigsty 与阿里云使用流程,命令、价格和界面均对应当时版本。 Pigsty 是一个 PostgreSQL 发行版,也可以单独用于监控 PostgreSQL 与主机。本文以阿里云为例,在一台 ECS 上安装 Pigsty,再接入已有的 PolarDB 与 RDS for PostgreSQL。 视频教程 操作流程 教程分为四步: 创建用于部署 Pigsty 的 ECS 服务器。 在 ECS 上完整安装单机版 Pigsty。 配置 PolarDB / RDS 的 …

    本文记录 2023 年 9 月的 Pigsty 与阿里云使用流程,命令、价格和界面均对应当时版本。 Pigsty 是一个 PostgreSQL 发行版,也可以单独用于监控 PostgreSQL 与主机。本文以阿里云为例,在一台 ECS 上安装 Pigsty,再接入已有的 PolarDB 与 RDS for PostgreSQL。 视频教程 操作流程 教程分为四步: 创建用于部署 Pigsty 的 ECS 服务器。 在 ECS 上完整安装单机版 Pigsty。 配置 PolarDB / RDS 的 …

  • PostgreSQL 慢查询诊断方法

    冯若航 发布于 文章 988 字 2 分钟

    冯若航PostgreSQLPG管理性能

    Featured Image for PostgreSQL 慢查询诊断方法

    本文使用 2021 年 2 月的 Pigsty 沙箱与仪表盘演示。 慢查询会占用连接、持有锁,并消耗 CPU 与 I/O。在备库上,长查询还可能与 WAL 重放冲突。PostgreSQL 会根据备库参数延迟重放或取消冲突查询,具体行为见热备冲突处理。 监控可以帮助我们找到受影响的查询,并比较变更前后的表现。 本例中,查询优化将 CPU 使用率从约 40% 降至 4%。 收集查询统计与日志 pg_stat_statements 扩展汇总相似语句的调用次数、执行时间、读取或影响的行数与 I/O 统计 …

    本文使用 2021 年 2 月的 Pigsty 沙箱与仪表盘演示。 慢查询会占用连接、持有锁,并消耗 CPU 与 I/O。在备库上,长查询还可能与 WAL 重放冲突。PostgreSQL 会根据备库参数延迟重放或取消冲突查询,具体行为见热备冲突处理。 监控可以帮助我们找到受影响的查询,并比较变更前后的表现。 本例中,查询优化将 CPU 使用率从约 40% 降至 4%。 收集查询统计与日志 pg_stat_statements 扩展汇总相似语句的调用次数、执行时间、读取或影响的行数与 I/O 统计 …

  • Pigsty 首次发布

    冯若航 发布于 文章 955 字 2 分钟

    冯若航Pigsty监控

    Featured Image for Pigsty 首次发布

    本文介绍 2021 年 1 月 Pigsty 首次发布时的产品状态。 今天,我发布了 Pigsty。 官方网站:pigsty.cc Pigsty 是什么? Pigsty 用于监控大规模 PostgreSQL 集群,也提供高可用集群的自动部署方案。它基于开源组件构建,是免费的开源软件。 我希望通过统一的监控界面与部署流程,减少管理 PostgreSQL 集群所需的手工操作。 监控系统 我需要管理一个大规模 PostgreSQL 集群。在尝试一些开源与商业监控产品后,没有找到满足需求的方案,于是开始 …

    本文介绍 2021 年 1 月 Pigsty 首次发布时的产品状态。 今天,我发布了 Pigsty。 官方网站:pigsty.cc Pigsty 是什么? Pigsty 用于监控大规模 PostgreSQL 集群,也提供高可用集群的自动部署方案。它基于开源组件构建,是免费的开源软件。 我希望通过统一的监控界面与部署流程,减少管理 PostgreSQL 集群所需的手工操作。 监控系统 我需要管理一个大规模 PostgreSQL 集群。在尝试一些开源与商业监控产品后,没有找到满足需求的方案,于是开始 …

  • 黄金监控指标:错误延迟吞吐饱和

    冯若航 发布于 文章 1562 字 4 分钟

    冯若航PostgreSQLPG管理监控

    Featured Image for 黄金监控指标:错误延迟吞吐饱和

    本文写于 2020 年,指标数量与示例对应当时的部署。 前言 玩数据库和玩车有一个共通之处,就是都需要经常看仪表盘。 仪表盘上的指标显示当前运行状态,帮助我们决定何时采取行动。 车有很多指标:车速,胎压,扭矩,刹车片磨损,各种温度,等等等等,各式各样。 但人的注意力有限,仪表盘空间也有限。 所以,指标可以分两类: 你会去看的:黄金指标 / 关键指标 / 核心指标 你不会看的:黑匣子指标 / 冷指标。 黄金指标就是那几个关键性的核心数据,需要时刻保持关注(或者让自动驾驶系统/报警系统替你时刻保持 …

    本文写于 2020 年,指标数量与示例对应当时的部署。 前言 玩数据库和玩车有一个共通之处,就是都需要经常看仪表盘。 仪表盘上的指标显示当前运行状态,帮助我们决定何时采取行动。 车有很多指标:车速,胎压,扭矩,刹车片磨损,各种温度,等等等等,各式各样。 但人的注意力有限,仪表盘空间也有限。 所以,指标可以分两类: 你会去看的:黄金指标 / 关键指标 / 核心指标 你不会看的:黑匣子指标 / 冷指标。 黄金指标就是那几个关键性的核心数据,需要时刻保持关注(或者让自动驾驶系统/报警系统替你时刻保持 …

  • Pigsty PostgreSQL 监控系统介绍

    冯若航 发布于 文章 3324 字 7 分钟

    冯若航Pigsty监控PostgreSQL

    Featured Image for Pigsty PostgreSQL 监控系统介绍

    本文介绍 2020 年 5 月的 Pigsty,指标数量与面板名称均对应当时的系统。 我最近开发了一套数据库监控系统,名为 Pigsty。下面介绍它的架构、面板与指标。 Pigsty 使用 Grafana、Prometheus 与 Consul。PIGSTY /pɪɡ staɪ/ 是 “Postgres in Grafana Style” 的缩写。 整体架构 Node、PostgreSQL 与 PgBouncer Exporter 采集指标,Consul 提供服务发现,Prometheus 保存 …

    本文介绍 2020 年 5 月的 Pigsty,指标数量与面板名称均对应当时的系统。 我最近开发了一套数据库监控系统,名为 Pigsty。下面介绍它的架构、面板与指标。 Pigsty 使用 Grafana、Prometheus 与 Consul。PIGSTY /pɪɡ staɪ/ 是 “Postgres in Grafana Style” 的缩写。 整体架构 Node、PostgreSQL 与 PgBouncer Exporter 采集指标,Consul 提供服务发现,Prometheus 保存 …

  • PostgreSQL的KPI

    冯若航 发布于 文章 2789 字 6 分钟

    冯若航PostgreSQLPG管理监控

    Featured Image for PostgreSQL的KPI

    本文写于 2020 年,从 PgBouncer 事务耗时推导负载指标。 PG Load(PG 负载) 将每秒累积的事务耗时除以选定的并发数,同时考虑数据库处理的工作量与耗时。我用它观察负载变化,识别需要排查问题或重新评估容量的实例。 现有指标能说明什么 评估数据库负载,通常需要观察几类指标: 流量:每秒查询数(QPS)和每秒事务数(TPS)。 延迟:查询响应时间(Query RT)和事务响应时间(Xact RT)。 资源使用:机器负载、CPU 利用率、磁盘 I/O 和网络 I/O。 故障与争用 …

    本文写于 2020 年,从 PgBouncer 事务耗时推导负载指标。 PG Load(PG 负载) 将每秒累积的事务耗时除以选定的并发数,同时考虑数据库处理的工作量与耗时。我用它观察负载变化,识别需要排查问题或重新评估容量的实例。 现有指标能说明什么 评估数据库负载,通常需要观察几类指标: 流量:每秒查询数(QPS)和每秒事务数(TPS)。 延迟:查询响应时间(Query RT)和事务响应时间(Xact RT)。 资源使用:机器负载、CPU 利用率、磁盘 I/O 和网络 I/O。 故障与争用 …

  • PostgreSQL 监控系统概览

    冯若航 发布于 文章 1705 字 4 分钟

    冯若航PostgreSQL监控PG管理

    Featured Image for PostgreSQL 监控系统概览

    本文记录 2018 年 12 月的监控系统,面板与统计收集器机制对应当时版本。 用监控管理 PostgreSQL 管理 PostgreSQL 需要了解数据库的运行状态。监控系统集中展示这些信息,为日常检查、故障诊断与性能优化提供依据。我计划通过一系列文章,介绍这套监控系统的设计、实施与使用。 PostgreSQL 监控面板 下面是我在实际环境中使用的监控面板。最常用的单实例面板分为七个区域:概览、操作系统、数据库活动与会话、复制、检查点与 WAL、数据库冲突、数据库对象统计。 系统架构 这套系统 …

    本文记录 2018 年 12 月的监控系统,面板与统计收集器机制对应当时版本。 用监控管理 PostgreSQL 管理 PostgreSQL 需要了解数据库的运行状态。监控系统集中展示这些信息,为日常检查、故障诊断与性能优化提供依据。我计划通过一系列文章,介绍这套监控系统的设计、实施与使用。 PostgreSQL 监控面板 下面是我在实际环境中使用的监控面板。最常用的单实例面板分为七个区域:概览、操作系统、数据库活动与会话、复制、检查点与 WAL、数据库冲突、数据库对象统计。 系统架构 这套系统 …

  • 关系膨胀的监控与治理

    冯若航 发布于 文章 4313 字 9 分钟

    冯若航PostgreSQLPG管理

    Featured Image for 关系膨胀的监控与治理

    本文写于 2018 年,介绍当时基于统计信息估算膨胀及安排维护的方法。 PostgreSQL 使用 MVCC,让事务读取不同的行版本。旧版本可能使表和索引占用的空间超过活数据所需。日常清理让空间可以复用,重写关系则能将多余空间归还文件系统。本文介绍如何衡量膨胀,并选择重整时机。 关系膨胀概述 若一个关系占用 100 GB,压实后的副本只需 60 GB,则估算膨胀率为 (100 - 60) / 100 = 40%。 普通 VACUUM 会回收死元组占用的空间,让表内后续写入复用,也可能截断文件末尾 …

    本文写于 2018 年,介绍当时基于统计信息估算膨胀及安排维护的方法。 PostgreSQL 使用 MVCC,让事务读取不同的行版本。旧版本可能使表和索引占用的空间超过活数据所需。日常清理让空间可以复用,重写关系则能将多余空间归还文件系统。本文介绍如何衡量膨胀,并选择重整时机。 关系膨胀概述 若一个关系占用 100 GB,压实后的副本只需 60 GB,则估算膨胀率为 (100 - 60) / 100 = 40%。 普通 VACUUM 会回收死元组占用的空间,让表内后续写入复用,也可能截断文件末尾 …

  • 监控 PostgreSQL 表大小

    冯若航 发布于 文章 1388 字 3 分钟

    冯若航PostgreSQLPG管理监控

    Featured Image for 监控 PostgreSQL 表大小

    本文写于 2018 年,介绍 PostgreSQL 普通表的物理存储。 表的空间布局 普通表包含自身存储,也可能有一张 TOAST 表: 本体表:存储行数据,relkind='r'。 TOAST 表:按需存储行外数据,relkind='t'。部分表没有 TOAST 表。 表本身和它的每个索引都是独立的 关系(Relation): 主体关系:存储元组。 索引关系:存储索引元组。 每个 关系 又可能会有 四种分支: main: 关系的主文件,编号为0 fsm:保存关于main分支中空闲空间的信息,编 …

    本文写于 2018 年,介绍 PostgreSQL 普通表的物理存储。 表的空间布局 普通表包含自身存储,也可能有一张 TOAST 表: 本体表:存储行数据,relkind='r'。 TOAST 表:按需存储行外数据,relkind='t'。部分表没有 TOAST 表。 表本身和它的每个索引都是独立的 关系(Relation): 主体关系:存储元组。 索引关系:存储索引元组。 每个 关系 又可能会有 四种分支: main: 关系的主文件,编号为0 fsm:保存关于main分支中空闲空间的信息,编 …

  • PostgreSQL 服务器日志配置

    冯若航 发布于 文章 1098 字 3 分钟

    冯若航PostgreSQLPG管理监控

    Featured Image for PostgreSQL 服务器日志配置

    本文写于 2018 年。下方表结构对应 PostgreSQL 10 的 23 列 CSV 格式,Filebeat 示例使用当时的 prospectors 配置。 CSV 日志可以导入 PostgreSQL 表,也可以通过 file_fdw 直接查询。 日志配置 log_destination = 'csvlog' logging_collector = on log_directory = 'log' log_filename = 'postgresql-%a.log' …

    本文写于 2018 年。下方表结构对应 PostgreSQL 10 的 23 列 CSV 格式,Filebeat 示例使用当时的 prospectors 配置。 CSV 日志可以导入 PostgreSQL 表,也可以通过 file_fdw 直接查询。 日志配置 log_destination = 'csvlog' logging_collector = on log_directory = 'log' log_filename = 'postgresql-%a.log' …