外观
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 监控
配置 Prometheus 采集 OceanBase 指标:
yamlscrape_configs: - job_name: 'oceanbase' static_configs: - targets: ['10.0.0.1:2881', '10.0.0.2:2881'] metrics_path: /metrics创建 Grafana 仪表盘:
- 导入 OceanBase 监控模板
- 配置租户级指标面板
- 设置指标告警
Zabbix 监控
- 安装 OceanBase Zabbix 插件
- 配置 Zabbix 监控项:
- 租户 CPU 使用率
- 租户内存使用率
- 租户 QPS/TPS
- 租户连接数
- 配置 Zabbix 触发器
- 配置 Zabbix 告警
租户指标监控最佳实践
1. 建立指标基线
收集历史数据
- 收集至少 2 周的历史指标数据
- 覆盖业务高峰期和低峰期
- 分析指标的正常波动范围
确定基线值
- 计算指标的平均值、最大值、最小值
- 确定指标的正常范围
- 设置合理的告警阈值
定期更新基线
- 每季度更新一次指标基线
- 根据业务变化调整基线值
- 确保基线与实际业务相符
2. 多维度分析
时间维度分析
- 按小时、天、周、月分析指标趋势
- 对比不同时间段的指标变化
- 识别周期性规律
业务维度分析
- 分析不同业务模块的指标
- 识别业务瓶颈
- 优化业务流程
资源维度分析
- 分析 CPU、内存、磁盘、网络资源使用
- 识别资源瓶颈
- 优化资源配置
3. 告警优化
设置合理的告警阈值
- 根据指标基线设置告警阈值
- 避免设置过高或过低的阈值
- 减少误告警和漏告警
配置告警抑制
- 高优先级告警触发时,抑制相关低优先级告警
- 避免同一问题产生多条告警
- 提高告警有效性
告警分级处理
- 紧急告警:立即处理
- 重要告警:尽快处理
- 一般告警:关注并监控
- 提示告警:了解即可
4. 自动化监控
自动化采集指标
- 使用脚本自动采集指标
- 定时存储指标数据
- 生成指标报告
自动化分析
- 使用机器学习算法分析指标
- 识别异常模式
- 预测指标趋势
自动化告警
- 配置自动化告警规则
- 自动发送告警通知
- 自动执行应急处理
租户指标监控案例
案例一:租户 CPU 使用率过高
问题现象
- 监控系统告警:租户 CPU 使用率超过 90% 持续 10 分钟
- 业务响应时间延长
- 慢查询数增加
问题分析
查看租户 CPU 使用率:
sqlSELECT * FROM oceanbase.GV$OB_TENANT_STAT WHERE stat_id = 'cpu_total' AND tenant_id = 1001;查看占用 CPU 高的 SQL:
sqlSELECT * FROM oceanbase.GV$OB_SLOW_QUERY WHERE tenant_id = 1001 ORDER BY time_used DESC LIMIT 5;分析 SQL 执行计划:
sqlEXPLAIN SELECT * FROM large_table WHERE non_indexed_column = 'value';发现问题:存在大量全表扫描的慢查询
解决方案
优化 SQL:为非索引列添加索引
sqlCREATE INDEX idx_non_indexed_column ON large_table(non_indexed_column);调整资源配置:增加租户的 CPU 资源
sqlALTER RESOURCE UNIT unit_config SET max_cpu = 8, min_cpu = 4;监控效果:观察 CPU 使用率是否下降
案例二:租户连接数过高
问题现象
- 监控系统告警:租户连接数超过 90% 持续 10 分钟
- 新连接无法建立
- 业务报错:"Too many connections"
问题分析
查看租户连接数:
sqlSELECT * FROM oceanbase.GV$OB_TENANT_CONNECTIONS WHERE tenant_id = 1001;查看连接详情:
sqlSELECT * FROM oceanbase.GV$OB_SESSIONS WHERE tenant_id = 1001;分析连接来源:发现大量空闲连接
解决方案
优化连接池配置:
- 减少客户端连接池大小
- 缩短连接超时时间
- 启用连接池复用
调整租户连接数限制:
sqlALTER TENANT tenant1 SET max_connections = 20000;清理空闲连接:
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 租户指标的方法:
- 通过 OCP 控制台查看
- 使用 SQL 语句查询内置视图
- 使用第三方监控工具采集
- 通过 REST API 获取
Q2: 哪些是 OceanBase 租户的核心指标?
A2: OceanBase 租户的核心指标包括:
- CPU 使用率
- 内存使用率
- 磁盘空间使用率
- QPS/TPS
- 响应时间
- 连接数
- 慢查询数
- 事务成功率
Q3: 如何设置租户指标告警?
A3: 设置租户指标告警的方法:
- 在 OCP 控制台配置告警规则
- 使用 SQL 语句配置告警
- 在第三方监控工具中配置告警
- 设置合理的告警阈值和持续时间
Q4: 如何分析租户指标趋势?
A4: 分析租户指标趋势的方法:
- 查看指标历史数据
- 分析指标的周期性变化
- 对比不同时间段的指标
- 使用图表工具可视化分析
Q5: 如何优化租户指标?
A5: 优化租户指标的方法:
- 优化 SQL 语句
- 调整资源配置
- 优化索引
- 调整业务逻辑
- 优化系统配置
Q6: 如何监控多个租户?
A6: 监控多个租户的方法:
- 在 OCP 控制台批量查看租户指标
- 使用 SQL 语句查询所有租户指标
- 在第三方监控工具中配置多租户监控
- 使用自动化脚本批量采集指标
Q7: 如何处理租户指标异常?
A7: 处理租户指标异常的方法:
- 确认异常的真实性
- 分析异常原因
- 采取相应的解决方案
- 验证解决方案效果
- 总结经验教训
Q8: 如何预测租户指标趋势?
A8: 预测租户指标趋势的方法:
- 分析历史数据
- 识别指标的周期性规律
- 使用机器学习算法预测
- 考虑业务变化因素
- 定期更新预测模型
