可观测性

基于 Prometheus + Grafana 的监控告警体系,三千类指标全方位洞察。

如果您只有一分钟,请记住这张图:

flowchart TB
    subgraph Grafana["📊 Grafana 仪表盘"]
        direction LR
        G1["🌍 全局大盘<br/>一眼看全局"]
        G2["🏢 集群详情<br/>健康状态"]
        G3["💻 实例详情<br/>性能指标"]
        G4["🔍 查询分析<br/>慢查询"]
    end

    subgraph Storage["数据存储层"]
        direction LR
        VM["📈 VictoriaMetrics<br/>指标存储"]
        VL["📝 VictoriaLogs<br/>日志存储"]
        AM["🔔 AlertManager<br/>告警管理"]
    end

    subgraph Collectors["监控数据采集"]
        direction LR
        C1["pg_exporter<br/>PostgreSQL"]
        C2["pgbouncer_exp<br/>连接池"]
        C3["patroni<br/>高可用"]
        C4["haproxy<br/>负载均衡"]
        C5["node_exporter<br/>节点"]
    end

    Collectors --> Storage
    Storage --> Grafana

    Note["3000+ 指标,覆盖数据库每一个细节"]

核心价值:不用猜测数据库发生了什么——看一眼仪表盘就知道。30+ 开箱即用的专业仪表盘,3000+ 指标,从全局到单条查询全覆盖。


本章内容

章节 说明 核心问题
指标体系 Prometheus 兼容的指标采集与存储 有哪些指标?如何查询?
日志收集 VictoriaLogs 集中收集与分析 日志去哪了?如何搜索?
告警机制 AlertManager 告警通知与响应 如何收到告警通知?

为什么可观测性很重要?

flowchart LR
    subgraph NoMonitor["❌ 没有监控的困境"]
        direction TB
        Q1["数据库好像变慢了?"]
        Q1A["是查询慢还是连接多?"]
        Q1B["哪个查询最慢?"]
        Q1C["CPU 高还是 IO 高?"]
        Q1D["……完全不知道,只能猜 😵"]

        Q2["昨晚数据库出问题了?"]
        Q2A["什么时候出的问题?"]
        Q2B["持续了多久?影响哪些业务?"]
        Q2C["……日志翻了半天也没找到 😓"]
    end

    subgraph WithMonitor["✅ 有 Pigsty 监控的清晰"]
        direction TB
        A1["数据库变慢了"] --> A1G["📊 打开 Grafana"]
        A1G --> A1A["PGSQL Query:最慢的 5 条 SQL"]
        A1G --> A1B["PGSQL Session:连接数异常"]
        A1G --> A1C["Node Instance:CPU 95%"]
        A1G --> A1D["⏱️ 5 分钟定位问题"]

        A2["昨晚数据库出问题了"] --> A2G["📈 查看历史指标"]
        A2G --> A2A["23:15 复制延迟突增"]
        A2G --> A2B["23:17 主库 CPU 飙高"]
        A2G --> A2C["23:20 自动切换恢复"]
        A2G --> A2D["📋 全程有据可查"]
    end

监控架构

flowchart TB
    subgraph Grafana["📊 Grafana 可视化 + 告警面板"]
        direction LR
        D1["概览"]
        D2["集群"]
        D3["实例"]
        D4["查询"]
        D5["节点"]
    end

    subgraph Storage["数据存储与处理层"]
        VM["📈 VictoriaMetrics<br/>时序数据库<br/>指标存储/查询"]
        VL["📝 VictoriaLogs<br/>日志数据库<br/>日志搜索/分析"]
        AM["🔔 AlertManager<br/>告警引擎<br/>通知/静默"]
    end

    subgraph Targets["监控目标"]
        subgraph Exporters["指标采集器"]
            E1["pg_exporter<br/>PostgreSQL<br/>1000+ 指标"]
            E2["pgbouncer_exp<br/>连接池指标<br/>100+ 指标"]
            E3["patroni<br/>高可用指标<br/>50+ 指标"]
            E4["haproxy<br/>服务指标<br/>100+ 指标"]
            E5["node_exporter<br/>节点指标<br/>300+ 指标"]
        end
        Vector["📋 Vector 日志采集<br/>PostgreSQL / Patroni / 系统日志"]
    end

    Exporters --> |Pull 指标| VM
    Vector --> |Push 日志| VL
    VM --> Grafana
    VL --> Grafana
    AM --> Grafana
    VM --> |告警规则| AM

监控指标

Pigsty 采集超过 3000 类监控指标,覆盖数据库运行的每一个细节:

按组件分类

组件 指标数量 核心指标示例
PostgreSQL 1000+ 连接数、事务数、复制延迟、缓存命中率、死锁
Pgbouncer 100+ 连接池状态、等待队列、事务时间
Patroni 50+ 集群状态、成员健康、切换历史
HAProxy 100+ 后端状态、连接数、响应时间
Node 300+ CPU、内存、磁盘 IO、网络流量
pgBackRest 20+ 备份状态、大小、时间、WAL 归档

按场景分类

场景 关键指标 告警阈值示例
性能监控 QPS、TPS、延迟、缓存命中率 延迟 > 100ms
容量规划 连接数、磁盘使用、表膨胀 磁盘 > 80%
高可用 复制延迟、成员状态 延迟 > 10s
安全审计 连接来源、认证失败 失败 > 10次/分钟

仪表盘

Pigsty 提供 30+ 专业仪表盘,开箱即用:

全局视图

仪表盘 说明 适用场景
Home Pigsty 首页总览 快速了解全局状态
PGSQL Overview PostgreSQL 集群全局大盘 运维巡检
Node Overview 节点全局大盘 基础设施监控

集群与实例

仪表盘 说明 适用场景
PGSQL Cluster 单个集群详情 集群健康检查
PGSQL Instance 单个实例详情 问题定位
PGSQL Database 单个数据库详情 容量分析

专项分析

仪表盘 说明 适用场景
PGSQL Query 查询性能分析 慢 SQL 优化
PGSQL Session 会话分析 连接问题排查
PGSQL Persist 持久化分析 写入性能调优
PGSQL Replication 复制监控 高可用检查
PGSQL Table 表级详情 容量与膨胀

在线演示

立即体验 Pigsty 监控系统的强大能力:

🔗 demo.pigsty.cc

内容 说明
完整仪表盘 30+ 开箱即用的仪表盘
真实数据 实际运行的 PostgreSQL 集群
无需安装 浏览器直接访问

核心组件

VictoriaMetrics

Prometheus 兼容的时序数据库,比 Prometheus 更高效:

  • 完全兼容 PromQL 查询语法
  • 更高压缩率,节省存储空间
  • 更快查询,特别是长时间范围查询
  • 支持降采样,长期数据自动压缩

Grafana

业界领先的可视化平台:

  • 开箱即用 30+ 专业仪表盘
  • 灵活定制 支持自定义仪表盘
  • 告警集成 可视化配置告警规则
  • 权限管理 支持多租户

VictoriaLogs

高效的日志存储和分析系统:

  • 高压缩率 节省存储成本
  • 快速搜索 支持全文检索
  • 结构化查询 LogsQL 查询语言
  • Grafana 集成 统一查看日志和指标

AlertManager

Prometheus 生态的告警管理系统:

  • 告警分组 相关告警聚合
  • 告警静默 维护时段静默
  • 多渠道通知 邮件、Slack、钉钉、企业微信

快速访问

本地部署后,通过以下地址访问监控服务:

服务 地址 默认凭据 说明
Grafana http://<ip>:3000 admin / pigsty 主要入口
VictoriaMetrics http://<ip>:9090 - 指标查询
AlertManager http://<ip>:9093 - 告警管理
Nginx http://<ip>:80 - 统一入口

常见监控场景

场景一:慢查询定位

1. 打开 PGSQL Query 仪表盘
2. 按平均执行时间排序
3. 找到最慢的 SQL
4. 查看执行计划和调用频率
5. 优化 SQL 或添加索引

场景二:复制延迟告警

1. 收到复制延迟告警
2. 打开 PGSQL Replication 仪表盘
3. 查看延迟趋势和原因
4. 检查网络和主库负载
5. 决定是否需要干预

场景三:磁盘空间预警

1. 收到磁盘空间告警
2. 打开 PGSQL Database 仪表盘
3. 查看各表占用空间
4. 识别膨胀严重的表
5. 执行 VACUUM 或扩容

最佳实践

监控配置

  1. 配置告警:为关键指标配置告警阈值
  2. 设置通知:配置多渠道告警通知
  3. 保留策略:根据需求配置数据保留时间

日常运维

  1. 定期巡检:每天查看 Overview 仪表盘
  2. 关注趋势:不只看当前值,也看变化趋势
  3. 日志分析:指标异常时结合日志定位

问题排查

  1. 从全局到局部:先看概览,再看详情
  2. 关联分析:对比多个指标的时间点
  3. 历史对比:与正常时段对比

接下来

深入了解可观测性的各个方面:

相关话题:

  • ♾️ 高可用:监控复制延迟和集群状态
  • 🔒 安全:监控认证失败和异常访问
  • 🏗️ INFRA 模块:监控系统的部署和配置

指标体系

Prometheus 兼容的指标采集、存储与查询。

日志收集

VictoriaLogs 集中收集与分析日志。

告警机制

AlertManager 告警通知与响应。