Skip to content

OceanBase 节点指标监控

核心概念

节点指标监控是指对OceanBase集群中各个节点的资源使用情况、性能表现和运行状态进行实时监控和分析的过程。OceanBase是分布式数据库,每个节点的状态直接影响整个集群的性能和稳定性。通过监控节点指标,可以及时发现和解决节点级别的问题,预防集群故障,确保数据库服务的高可用性和高性能。

节点指标类型

CPU指标

核心指标

  • cpu_usage:节点CPU使用率(%)
  • cpu_idle:节点CPU空闲率(%)
  • cpu_iowait:节点CPU等待I/O时间占比(%)
  • cpu_system:节点系统CPU使用率(%)
  • cpu_user:节点用户CPU使用率(%)
  • cpu_stolen:节点被虚拟机监控程序占用的CPU时间占比(%)

监控意义

  • 反映节点CPU资源的使用情况和负载水平
  • 识别CPU瓶颈,及时调整资源分配
  • 预测CPU资源需求,为扩容提供依据

告警阈值建议

  • 持续5分钟CPU使用率超过80%:警告
  • 持续3分钟CPU使用率超过90%:严重

内存指标

核心指标

  • memory_total:节点总内存大小(GB)
  • memory_used:节点已使用内存大小(GB)
  • memory_free:节点空闲内存大小(GB)
  • memory_cached:节点缓存内存大小(GB)
  • memory_buffers:节点缓冲区内存大小(GB)
  • memory_usage:节点内存使用率(%)
  • swap_used:节点交换分区使用大小(GB)
  • swap_usage:节点交换分区使用率(%)

监控意义

  • 反映节点内存资源的使用情况
  • 识别内存泄漏和内存不足问题
  • 优化内存配置,提高内存利用率

告警阈值建议

  • 持续5分钟内存使用率超过85%:警告
  • 持续3分钟内存使用率超过95%:严重
  • 持续5分钟交换分区使用率超过20%:警告

磁盘指标

核心指标

  • disk_total:磁盘总容量(GB)
  • disk_used:磁盘已使用容量(GB)
  • disk_free:磁盘空闲容量(GB)
  • disk_usage:磁盘使用率(%)
  • disk_read_bytes:磁盘读字节数(KB/s)
  • disk_write_bytes:磁盘写字节数(KB/s)
  • disk_read_iops:磁盘读IOPS
  • disk_write_iops:磁盘写IOPS
  • disk_read_latency:磁盘读延迟(ms)
  • disk_write_latency:磁盘写延迟(ms)

监控意义

  • 反映磁盘空间使用情况和I/O性能
  • 识别磁盘瓶颈和存储问题
  • 预测磁盘容量需求,及时扩容
  • 优化I/O配置,提高磁盘性能

告警阈值建议

  • 持续5分钟磁盘使用率超过80%:警告
  • 持续3分钟磁盘使用率超过90%:严重
  • 持续5分钟磁盘读/写延迟超过50ms:警告
  • 持续3分钟磁盘读/写延迟超过100ms:严重

网络指标

核心指标

  • network_in_bytes:网络入流量(KB/s)
  • network_out_bytes:网络出流量(KB/s)
  • network_in_packets:网络入包数(个/s)
  • network_out_packets:网络出包数(个/s)
  • network_in_errors:网络入包错误数(个/s)
  • network_out_errors:网络出包错误数(个/s)
  • network_in_drops:网络入包丢弃数(个/s)
  • network_out_drops:网络出包丢弃数(个/s)

监控意义

  • 反映节点网络流量和连接情况
  • 识别网络瓶颈和网络故障
  • 优化网络配置,提高网络性能
  • 确保集群节点间通信正常

告警阈值建议

  • 持续5分钟网络入/出流量超过带宽的80%:警告
  • 持续3分钟网络入/出包错误率超过0.1%:警告
  • 持续5分钟网络入/出包丢弃率超过0.1%:警告

进程指标

核心指标

  • process_count:节点进程总数
  • process_running:节点运行中的进程数
  • process_waiting:节点等待中的进程数
  • observer_cpu_usage:Observer进程CPU使用率(%)
  • observer_memory_usage:Observer进程内存使用率(%)
  • observer_thread_count:Observer进程线程数

监控意义

  • 反映节点进程运行状态
  • 监控Observer进程的资源使用情况
  • 识别进程异常和资源泄漏

告警阈值建议

  • 持续5分钟Observer进程CPU使用率超过90%:警告
  • 持续3分钟Observer进程内存使用率超过95%:警告
  • 节点进程总数持续5分钟超过系统限制的80%:警告

系统负载指标

核心指标

  • load1:节点1分钟负载平均值
  • load5:节点5分钟负载平均值
  • load15:节点15分钟负载平均值
  • load_per_cpu:每CPU核心负载(load1 / CPU核心数)

监控意义

  • 反映节点整体负载水平
  • 预测节点性能变化趋势
  • 识别负载异常,及时调整资源

告警阈值建议

  • 持续5分钟load_per_cpu超过1.0:警告
  • 持续3分钟load_per_cpu超过1.5:严重

监控方法

内置监控视图

OceanBase提供了丰富的内置视图,用于查询节点指标:

核心视图

  • GV$OB_SERVERS:集群所有节点的基本信息和状态
  • GV$OB_UNITS:集群所有单元的资源使用情况
  • GV$OB_MEMORY:节点内存使用情况
  • GV$OB_DISK_STAT:节点磁盘I/O统计信息
  • GV$OB_NETWORK:节点网络统计信息
  • GV$OB_SYSTEM_EVENT:节点系统事件统计

示例查询

sql
-- 查询所有节点的基本信息和状态
SELECT * FROM GV$OB_SERVERS;

-- 查询节点CPU使用情况
SELECT svr_ip, svr_port, cpu_total, cpu_assigned, cpu_used FROM GV$OB_SERVERS;

-- 查询节点内存使用情况
SELECT svr_ip, svr_port, total, used, free FROM GV$OB_MEMORY;

-- 查询节点磁盘I/O统计
SELECT svr_ip, svr_port, disk_name, read_bytes, write_bytes, read_iops, write_iops FROM GV$OB_DISK_STAT;

OCP监控平台

功能:OceanBase云平台(OCP)提供了可视化的监控界面,用于监控和管理OceanBase集群

监控能力

  • 实时监控节点CPU、内存、磁盘、网络等指标
  • 提供丰富的监控图表和仪表盘
  • 支持自定义监控视图和告警规则
  • 支持监控数据的历史查询和趋势分析
  • 支持多集群统一监控

使用方法

  1. 登录OCP平台
  2. 导航到集群监控页面
  3. 选择需要监控的节点
  4. 查看节点的各项指标
  5. 配置告警规则

Prometheus + Grafana

功能:使用Prometheus采集OceanBase节点指标,Grafana进行可视化展示

部署步骤

  1. 部署Prometheus服务器
  2. 配置OceanBase的Prometheus exporter
  3. 在Prometheus中添加OceanBase数据源
  4. 部署Grafana服务器
  5. 配置Grafana连接到Prometheus
  6. 导入或创建OceanBase监控仪表盘

监控指标

  • oceanbase_server_cpu_usage:节点CPU使用率
  • oceanbase_server_memory_usage:节点内存使用率
  • oceanbase_server_disk_usage:节点磁盘使用率
  • oceanbase_server_network_in_bytes:节点网络入流量
  • oceanbase_server_network_out_bytes:节点网络出流量

命令行工具

常用命令

bash
# 查看CPU使用情况
mpstat -P ALL 1

# 查看内存使用情况
free -h

# 查看磁盘使用情况
df -h

# 查看磁盘I/O情况
iostat -x 1

# 查看网络使用情况
top -d 1

# 查看进程情况
ps aux | grep observer

# 查看系统负载
uptime

监控最佳实践

1. 建立监控体系

监控层次

  • 基础设施层:CPU、内存、磁盘、网络等硬件资源
  • 数据库层:Observer进程、内存、I/O等数据库资源
  • 业务层:SQL性能、事务处理等业务指标

监控覆盖范围

  • 所有生产节点必须纳入监控
  • 监控指标应覆盖所有关键资源和组件
  • 监控频率应根据指标重要性和变化速率确定

2. 设置合理的告警规则

告警原则

  • 告警应基于实际业务影响
  • 避免过多的无效告警
  • 告警级别应区分严重程度
  • 告警信息应包含必要的上下文

告警级别

  • 严重:需要立即处理的紧急问题,如节点故障
  • 警告:需要关注的潜在问题,如资源使用率偏高
  • 信息:一般通知,如配置变更

告警通知方式

  • 邮件通知
  • 短信通知
  • 即时通讯工具(如钉钉、微信)
  • 电话告警(严重问题)

3. 监控数据的使用

数据应用

  • 实时监控:及时发现和解决问题
  • 趋势分析:预测资源需求和性能变化
  • 容量规划:为集群扩容提供依据
  • 性能优化:识别性能瓶颈,优化配置
  • 故障分析:事后分析故障原因,改进监控

数据保留策略

  • 实时数据:保留7天
  • 聚合数据:保留30天
  • 历史数据:保留1年或更长时间

4. 定期检查和优化

定期任务

  • 每周检查监控配置和告警规则
  • 每月分析监控数据,优化资源配置
  • 每季度评估监控体系,完善监控覆盖
  • 每年回顾监控策略,适应业务变化

优化方向

  • 调整告警阈值,减少误报
  • 增加关键指标的监控频率
  • 完善监控视图,提高可视化效果
  • 优化监控工具性能,确保监控系统稳定

常见问题(FAQ)

Q1: 如何选择合适的监控频率?

A1: 监控频率的选择应根据指标的重要性和变化速率来确定:

  • 核心指标(如CPU、内存使用率):1分钟或更短
  • 次要指标(如磁盘空间):5分钟或更长
  • 变化缓慢的指标(如系统负载趋势):15分钟或更长

Q2: 如何处理大量的告警信息?

A2: 处理大量告警信息的方法:

  • 优化告警规则,减少无效告警
  • 合并相关告警,避免告警风暴
  • 使用告警分级机制,优先处理严重告警
  • 建立告警处理流程,明确责任人和处理时间
  • 使用告警聚合工具,对告警进行分类和过滤

Q3: 监控系统本身的性能如何保障?

A3: 保障监控系统性能的方法:

  • 监控系统应独立部署,避免影响生产环境
  • 合理配置监控频率和数据保留策略
  • 对监控数据进行采样和聚合,减少数据量
  • 定期清理监控数据,优化数据库性能
  • 监控监控系统本身的性能和可用性

Q4: 如何区分节点指标异常和集群指标异常?

A4: 区分节点指标异常和集群指标异常的方法:

  • 节点指标异常:仅单个或少数节点出现异常,其他节点正常
  • 集群指标异常:多个或所有节点同时出现异常
  • 通过对比不同节点的指标,可以判断异常的范围
  • 通过分析指标的变化趋势,可以判断异常的原因

Q5: 如何预测节点资源需求?

A5: 预测节点资源需求的方法:

  • 分析历史监控数据,识别资源使用趋势
  • 结合业务增长情况,预测未来资源需求
  • 使用机器学习算法,建立资源需求预测模型
  • 定期进行性能测试,评估资源容量
  • 考虑业务峰值和季节性变化

Q6: 节点指标监控与租户指标监控有什么区别?

A6: 节点指标监控与租户指标监控的区别:

  • 节点指标监控:关注物理节点的资源使用情况,如CPU、内存、磁盘等
  • 租户指标监控:关注租户级别的资源使用情况和性能表现
  • 节点指标是基础,租户指标是上层应用
  • 节点指标异常可能影响多个租户,租户指标异常可能只影响单个租户

Q7: 如何处理节点指标突然异常?

A7: 处理节点指标突然异常的方法:

  • 立即查看相关监控图表,了解异常的具体表现
  • 检查节点日志,寻找异常原因
  • 分析最近的配置变更或业务变化
  • 尝试恢复节点正常状态,如重启服务、调整配置
  • 如果无法恢复,考虑故障转移或扩容
  • 记录故障原因和处理过程,完善监控和告警

Q8: 如何优化节点指标监控性能?

A8: 优化节点指标监控性能的方法:

  • 减少监控指标的数量,只监控必要的指标
  • 调整监控频率,避免过于频繁的监控
  • 对监控数据进行采样和聚合,减少数据传输和存储
  • 使用高效的监控工具和协议
  • 优化监控数据的存储和查询
  • 分布式部署监控系统,提高 scalability