Skip to content

OceanBase 租户指标监控

核心租户指标详解

1. 资源使用指标

CPU 使用率

指标说明:租户占用的 CPU 资源百分比 监控对象:租户级 CPU 使用率 计算公式:(租户 CPU 使用时间 / 总 CPU 时间) × 100% 正常范围:根据租户资源配置,通常 < 80% 告警阈值:> 85% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id = 'cpu_total' AND tenant_id = 1001;

内存使用率

指标说明:租户占用的内存资源百分比 监控对象:租户级内存使用率 计算公式:(租户内存使用量 / 租户内存配额) × 100% 正常范围:根据租户资源配置,通常 < 80% 告警阈值:> 85% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id = 'mem_total' AND tenant_id = 1001;

磁盘空间使用率

指标说明:租户占用的磁盘空间百分比 监控对象:租户级磁盘空间使用率 计算公式:(租户磁盘使用量 / 租户磁盘配额) × 100% 正常范围:根据租户资源配置,通常 < 80% 告警阈值:> 85% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_SPACE WHERE tenant_id = 1001;

2. 性能指标

QPS/TPS

指标说明

  • QPS:每秒处理的查询请求数
  • TPS:每秒处理的事务数 监控对象:租户级 QPS/TPS 正常范围:根据租户业务需求而定 告警阈值:超过历史峰值 110% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id IN ('qps', 'tps') AND tenant_id = 1001;

响应时间

指标说明:SQL 语句的平均响应时间 监控对象:租户级平均响应时间 单位:微秒 正常范围:根据业务需求,通常 < 300ms 告警阈值:> 300ms 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id = 'avg_exec_time' AND tenant_id = 1001;

慢查询数

指标说明:超过慢查询阈值的 SQL 语句数量 监控对象:租户级慢查询数 正常范围:根据业务需求,通常 < 10 条/分钟 告警阈值:> 50 条/分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_SLOW_QUERY WHERE tenant_id = 1001 ORDER BY request_time DESC;

3. 连接指标

活跃连接数

指标说明:当前活跃的数据库连接数 监控对象:租户级活跃连接数 正常范围:根据租户 max_connections 配置,通常 < 80% 告警阈值:> 85% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_CONNECTIONS WHERE tenant_id = 1001;

连接成功率

指标说明:数据库连接的成功比例 监控对象:租户级连接成功率 计算公式:(成功连接数 / 总连接尝试数) × 100% 正常范围:> 99.9% 告警阈值:< 99% 持续 5 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_CONNECTION_STATUS WHERE tenant_id = 1001;

4. 存储指标

数据量大小

指标说明:租户数据文件的总大小 监控对象:租户级数据量 单位:字节 正常范围:根据租户磁盘配额,通常 < 80% 告警阈值:> 85% 持续 10 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_SPACE WHERE tenant_id = 1001;

MemTable 使用率

指标说明:MemTable 内存使用百分比 监控对象:租户级 MemTable 使用率 计算公式:(MemTable 使用量 / MemTable 配额) × 100% 正常范围:< 80% 告警阈值:> 90% 持续 5 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_MEMSTORE WHERE tenant_id = 1001;

5. 事务指标

事务成功率

指标说明:事务提交成功的比例 监控对象:租户级事务成功率 计算公式:(成功提交事务数 / 总事务数) × 100% 正常范围:> 99.9% 告警阈值:< 99% 持续 5 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id IN ('txn_total', 'txn_active') AND tenant_id = 1001;

长事务数

指标说明:执行时间超过长事务阈值的事务数 监控对象:租户级长事务数 正常范围:< 5 个 告警阈值:> 10 个持续 5 分钟

查询示例

sql
SELECT * FROM oceanbase.GV$OB_TRANSACTIONS WHERE tenant_id = 1001 AND elasped_time > 60000000;

租户指标监控方法

1. OCP 监控

登录 OCP 控制台

  • 访问 OCP 管理界面
  • 进入「租户管理」->「租户列表」
  • 选择要监控的租户
  • 进入「监控」标签页

查看指标监控

  • 选择时间范围
  • 选择要查看的指标
  • 查看指标趋势图
  • 查看指标详情

配置租户告警

  • 进入「监控与告警」->「告警规则」
  • 选择租户相关的告警规则
  • 调整告警阈值
  • 保存配置

2. SQL 语句监控

查询实时指标

sql
-- 查询租户基本指标
SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE tenant_id = 1001;

-- 查询租户空间使用情况
SELECT * FROM oceanbase.GV$OB_TENANT_SPACE WHERE tenant_id = 1001;

-- 查询租户连接情况
SELECT * FROM oceanbase.GV$OB_TENANT_CONNECTIONS WHERE tenant_id = 1001;

-- 查询租户事务情况
SELECT * FROM oceanbase.GV$OB_TRANSACTIONS WHERE tenant_id = 1001;

-- 查询租户慢查询
SELECT * FROM oceanbase.GV$OB_SLOW_QUERY WHERE tenant_id = 1001 ORDER BY request_time DESC LIMIT 10;

创建监控视图

sql
-- 创建租户监控视图
CREATE VIEW v_tenant_monitor AS
SELECT
    t.tenant_id,
    t.tenant_name,
    s1.value AS cpu_usage,
    s2.value AS mem_usage,
    s3.value AS qps,
    s4.value AS tps,
    s5.value AS avg_response_time,
    s6.value AS active_connections,
    s7.value AS slow_query_count
FROM
    oceanbase.DBA_OB_TENANTS t
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s1 ON t.tenant_id = s1.tenant_id AND s1.stat_id = 'cpu_total'
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s2 ON t.tenant_id = s2.tenant_id AND s2.stat_id = 'mem_total'
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s3 ON t.tenant_id = s3.tenant_id AND s3.stat_id = 'qps'
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s4 ON t.tenant_id = s4.tenant_id AND s4.stat_id = 'tps'
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s5 ON t.tenant_id = s5.tenant_id AND s5.stat_id = 'avg_exec_time'
LEFT JOIN
    oceanbase.GV$OB_TENANT_CONNECTIONS s6 ON t.tenant_id = s6.tenant_id
LEFT JOIN
    oceanbase.GV$OB_TENANT_STAT s7 ON t.tenant_id = s7.tenant_id AND s7.stat_id = 'slow_query_count';

-- 查询监控视图
SELECT * FROM v_tenant_monitor;

3. 第三方监控工具

Prometheus + Grafana 监控

  1. 配置 Prometheus 采集 OceanBase 指标

    yaml
    scrape_configs:
      - job_name: 'oceanbase'
        static_configs:
          - targets: ['10.0.0.1:2881', '10.0.0.2:2881']
        metrics_path: /metrics
  2. 创建 Grafana 仪表盘

    • 导入 OceanBase 监控模板
    • 配置租户级指标面板
    • 设置指标告警

Zabbix 监控

  1. 安装 OceanBase Zabbix 插件
  2. 配置 Zabbix 监控项
    • 租户 CPU 使用率
    • 租户内存使用率
    • 租户 QPS/TPS
    • 租户连接数
  3. 配置 Zabbix 触发器
  4. 配置 Zabbix 告警

租户指标监控最佳实践

1. 建立指标基线

收集历史数据

  • 收集至少 2 周的历史指标数据
  • 覆盖业务高峰期和低峰期
  • 分析指标的正常波动范围

确定基线值

  • 计算指标的平均值、最大值、最小值
  • 确定指标的正常范围
  • 设置合理的告警阈值

定期更新基线

  • 每季度更新一次指标基线
  • 根据业务变化调整基线值
  • 确保基线与实际业务相符

2. 多维度分析

时间维度分析

  • 按小时、天、周、月分析指标趋势
  • 对比不同时间段的指标变化
  • 识别周期性规律

业务维度分析

  • 分析不同业务模块的指标
  • 识别业务瓶颈
  • 优化业务流程

资源维度分析

  • 分析 CPU、内存、磁盘、网络资源使用
  • 识别资源瓶颈
  • 优化资源配置

3. 告警优化

设置合理的告警阈值

  • 根据指标基线设置告警阈值
  • 避免设置过高或过低的阈值
  • 减少误告警和漏告警

配置告警抑制

  • 高优先级告警触发时,抑制相关低优先级告警
  • 避免同一问题产生多条告警
  • 提高告警有效性

告警分级处理

  • 紧急告警:立即处理
  • 重要告警:尽快处理
  • 一般告警:关注并监控
  • 提示告警:了解即可

4. 自动化监控

自动化采集指标

  • 使用脚本自动采集指标
  • 定时存储指标数据
  • 生成指标报告

自动化分析

  • 使用机器学习算法分析指标
  • 识别异常模式
  • 预测指标趋势

自动化告警

  • 配置自动化告警规则
  • 自动发送告警通知
  • 自动执行应急处理

租户指标监控案例

案例一:租户 CPU 使用率过高

问题现象

  • 监控系统告警:租户 CPU 使用率超过 90% 持续 10 分钟
  • 业务响应时间延长
  • 慢查询数增加

问题分析

  1. 查看租户 CPU 使用率

    sql
    SELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id = 'cpu_total' AND tenant_id = 1001;
  2. 查看占用 CPU 高的 SQL

    sql
    SELECT * FROM oceanbase.GV$OB_SLOW_QUERY WHERE tenant_id = 1001 ORDER BY time_used DESC LIMIT 5;
  3. 分析 SQL 执行计划

    sql
    EXPLAIN SELECT * FROM large_table WHERE non_indexed_column = 'value';
  4. 发现问题:存在大量全表扫描的慢查询

解决方案

  1. 优化 SQL:为非索引列添加索引

    sql
    CREATE INDEX idx_non_indexed_column ON large_table(non_indexed_column);
  2. 调整资源配置:增加租户的 CPU 资源

    sql
    ALTER RESOURCE UNIT unit_config SET max_cpu = 8, min_cpu = 4;
  3. 监控效果:观察 CPU 使用率是否下降

案例二:租户连接数过高

问题现象

  • 监控系统告警:租户连接数超过 90% 持续 10 分钟
  • 新连接无法建立
  • 业务报错:"Too many connections"

问题分析

  1. 查看租户连接数

    sql
    SELECT * FROM oceanbase.GV$OB_TENANT_CONNECTIONS WHERE tenant_id = 1001;
  2. 查看连接详情

    sql
    SELECT * FROM oceanbase.GV$OB_SESSIONS WHERE tenant_id = 1001;
  3. 分析连接来源:发现大量空闲连接

解决方案

  1. 优化连接池配置

    • 减少客户端连接池大小
    • 缩短连接超时时间
    • 启用连接池复用
  2. 调整租户连接数限制

    sql
    ALTER TENANT tenant1 SET max_connections = 20000;
  3. 清理空闲连接

    sql
    -- 清理空闲时间超过 30 分钟的连接
    SELECT * FROM oceanbase.GV$OB_SESSIONS WHERE tenant_id = 1001 AND status = 'IDLE' AND elasped_time > 1800000000;
    -- 终止空闲连接
    ALTER SYSTEM KILL SESSION 'sid, serial#';

租户指标监控常见问题及解决方案

1. 指标数据不准确

问题描述

  • 监控指标与实际情况不符
  • 指标数据缺失
  • 指标数据延迟

解决方案

  • 检查监控配置
  • 确保监控服务正常运行
  • 调整监控采集频率
  • 检查网络连接

2. 告警频繁

问题描述

  • 短时间内产生大量告警
  • 告警信息重复
  • 误告警较多

解决方案

  • 调整告警阈值
  • 配置告警抑制和聚合
  • 优化监控规则
  • 增加告警持续时间

3. 指标过多难以管理

问题描述

  • 指标数量过多
  • 难以确定重点指标
  • 管理成本高

解决方案

  • 筛选核心指标
  • 建立指标层级
  • 优化监控配置
  • 自动化监控管理

4. 指标存储和查询问题

问题描述

  • 指标数据存储成本高
  • 历史数据查询缓慢
  • 数据 retention 策略不合理

解决方案

  • 优化数据存储策略
  • 采用分层存储
  • 定期清理过期数据
  • 使用高效的时序数据库

常见问题(FAQ)

Q1: 如何获取 OceanBase 租户指标?

A1: 获取 OceanBase 租户指标的方法:

  1. 通过 OCP 控制台查看
  2. 使用 SQL 语句查询内置视图
  3. 使用第三方监控工具采集
  4. 通过 REST API 获取

Q2: 哪些是 OceanBase 租户的核心指标?

A2: OceanBase 租户的核心指标包括:

  • CPU 使用率
  • 内存使用率
  • 磁盘空间使用率
  • QPS/TPS
  • 响应时间
  • 连接数
  • 慢查询数
  • 事务成功率

Q3: 如何设置租户指标告警?

A3: 设置租户指标告警的方法:

  1. 在 OCP 控制台配置告警规则
  2. 使用 SQL 语句配置告警
  3. 在第三方监控工具中配置告警
  4. 设置合理的告警阈值和持续时间

Q4: 如何分析租户指标趋势?

A4: 分析租户指标趋势的方法:

  1. 查看指标历史数据
  2. 分析指标的周期性变化
  3. 对比不同时间段的指标
  4. 使用图表工具可视化分析

Q5: 如何优化租户指标?

A5: 优化租户指标的方法:

  1. 优化 SQL 语句
  2. 调整资源配置
  3. 优化索引
  4. 调整业务逻辑
  5. 优化系统配置

Q6: 如何监控多个租户?

A6: 监控多个租户的方法:

  1. 在 OCP 控制台批量查看租户指标
  2. 使用 SQL 语句查询所有租户指标
  3. 在第三方监控工具中配置多租户监控
  4. 使用自动化脚本批量采集指标

Q7: 如何处理租户指标异常?

A7: 处理租户指标异常的方法:

  1. 确认异常的真实性
  2. 分析异常原因
  3. 采取相应的解决方案
  4. 验证解决方案效果
  5. 总结经验教训

Q8: 如何预测租户指标趋势?

A8: 预测租户指标趋势的方法:

  1. 分析历史数据
  2. 识别指标的周期性规律
  3. 使用机器学习算法预测
  4. 考虑业务变化因素
  5. 定期更新预测模型