跳到主要内容

Curvine 可观测性建设

· 阅读需 7 分钟

Curvine 作为一款高性能分布式缓存系统,对性能、稳定性和可靠性有着严苛的要求。 为确保系统在各种负载条件下保持最优性能,并快速定位和解决潜在问题,我们构建了基于 Prometheus 和 Grafana 的全方位监控解决方案。该监控体系为 Master 节点、Worker 节点、Fuse 节点和 S3 Gateway 提供深度可观测性能力,通过收集各组件的关键指标,实现对缓存集群规模、运行状态、性能表现和资源使用情况的实时监控。

监控架构

本监控系统采用以下核心组件:

  • Prometheus: 负责指标收集、存储和查询
  • Grafana: 提供数据可视化和仪表板展示

可观测性指标

Master 节点指标

Master 节点作为集群的元数据管理中心,提供以下关键指标:

容量指标

容量指标是评估系统存储资源使用状况的基础,对容量规划、资源优化和预防性维护至关重要。通过监控这些指标,可以及时发现存储瓶颈,预测容量需求,确保系统有足够空间应对业务增长。

容量指标

指标名称描述
inode_dir_num目录数量
inode_file_num文件数量
num_blocksblock 总数
blocks_size_avgblock 平均大小
capacity总存储容量
available可用存储空间
fs_used文件系统已用空间

资源指标

资源指标反映了系统对计算资源的使用情况,对性能调优、资源分配和故障预防具有重要意义。内存使用情况直接影响系统性能和稳定性,特别是 RocksDB 作为核心存储引擎,其内存占用需要精确监控以避免内存溢出和性能下降。

资源指标

指标名称描述
used_memory_bytes已用内存字节数
rocksdb_used_memory_bytesrocksdb 内存占用

集群状态指标

集群状态指标提供了系统整体健康状况的实时视图,对保障高可用性和数据一致性至关重要。通过监控 Worker 节点状态和复制任务执行情况,可以快速发现节点故障、数据不一致等问题,确保分布式缓存系统的可靠运行。

集群状态

指标名称描述
worker_numworker 数量(按状态分类)
replication_staging_number等待复制的块数量
replication_inflight_number正在进行复制的块数量
replication_failure_count累计复制失败的总次数

性能指标

性能指标是衡量系统响应能力和处理效率的核心指标,对性能优化和容量规划具有关键作用。RPC 请求的总计数和总耗时可以计算出平均响应时间,直接反映系统的处理能力,而各类操作的耗时分析有助于识别性能瓶颈,指导系统优化。

性能指标

指标名称描述
rpc_request_total_countRPC 总请求计数
rpc_request_total_timeRPC 总请求时间
operation_duration操作耗时(按类型分类,不包括心跳)

Journal 系统指标

Journal 系统是保证数据一致性和故障恢复的关键组件,其性能直接影响系统的写入性能和数据可靠性。监控 Journal 队列长度和刷新性能可以及时发现写入瓶颈,预防数据丢失风险,确保系统在高并发写入场景下的稳定性。

journal指标

指标名称描述
journal_queue_lenJournal 队列长度
journal_flush_countJournal 刷新次数
journal_flush_timeJournal 刷新时间

Client 指标(Fuse/S3 Gateway)

Fuse 和 S3 Gateway 的指标通过 Client 收集

缓存指标

缓存指标直接反映了缓存系统的核心价值——提升访问性能。挂载缓存的命中率是衡量缓存效果的关键指标,高命中率意味着更少的后端访问和更快的响应速度。这些指标对评估缓存策略有效性、优化缓存配置至关重要。

缓存指标

指标名称描述
client_mount_cache_hits挂载缓存命中数
client_mount_cache_misses挂载缓存未命中数

I/O 指标

I/O 指标是评估系统读写性能的核心数据,对性能调优和容量规划具有指导意义。通过监控读写字节数和耗时,可以计算出读写吞吐量,准确评估系统的 I/O 性能瓶颈,优化存储策略,确保在高并发访问场景下的稳定性能。

I/O指标

指标名称描述
client_write_bytes写入字节数
client_write_time_us写入时间(微秒)
client_read_bytes读取字节数
client_read_time_us读取时间(微秒)

元数据操作指标

元数据操作性能直接影响文件系统的响应速度,对提升用户体验和系统整体性能至关重要。元数据操作的耗时分析有助于识别元数据管理瓶颈,优化目录结构,提升文件系统操作效率。

元数据操作指标

指标名称描述
client_metadata_operation_duration元数据操作耗时

Worker 节点指标

Worker 节点作为数据存储节点,提供全面的存储和性能指标:

容量指标

Worker 节点的容量指标是数据存储管理的核心,对负载均衡、数据迁移和容量规划具有关键作用。通过监控各节点的存储使用情况,可以实现智能的数据分布,防止单点过载,确保整个缓存集群的存储资源得到最优利用。

容量指标

指标名称描述
capacity总存储容量
available可用存储空间
fs_used文件系统已用空间
num_blocksblock 总数
num_blocks_to_delete待删除 block 数

I/O 指标

Worker 节点的 I/O 指标反映了数据存储的实际性能,对评估存储硬件效率、优化数据访问模式至关重要。详细的读写统计信息有助于识别热点数据、优化数据布局,提升整体存储性能和响应速度。

I/O指标

指标名称描述
write_bytes写入字节数
write_time_us写入时间(微秒)
write_count写入次数
write_blocks写入块数(按类型分类)
read_bytes读取字节数
read_time_us读取时间(微秒)
read_count读取次数
read_blocks读取块数(按类型分类)

资源指标

Worker 节点的资源使用情况直接影响数据存储服务的稳定性和性能,对资源调度和性能优化具有重要意义。合理的内存使用是保证数据缓存效率的基础,需要精确监控以避免资源竞争和性能下降。

资源指标

指标名称描述
used_memory_bytes已用内存字节数

硬件状态指标

硬件状态指标是保障数据可靠性和系统可用性的重要监控维度,对预防性维护和故障快速响应至关重要。通过实时监控磁盘健康状态,可以提前发现硬件故障风险,及时进行数据迁移和硬件更换,确保缓存系统的数据安全和持续可用。

硬件状态指标

指标名称描述
failed_disks异常存储数量
total_disks存储磁盘数量

全局面板

Master

Master

Worker

Worker

Client

Client

总结

Curvine 分布式缓存系统的可观测性设计覆盖了从元数据管理到数据存储的完整链路,通过细粒度的指标收集实现了:

  • 全链路监控: 从客户端请求到数据存储的完整监控,确保每个环节的性能和状态都可观测
  • 多维度观测: 涵盖性能、容量、状态等多个维度,提供系统健康度的全面视图
  • 实时告警: 基于关键指标的实时监控和告警,及时发现异常并快速响应
  • 故障诊断: 详细的指标数据支持快速故障定位,缩短故障恢复时间
  • 性能优化: 通过持续监控和分析,为系统性能调优提供数据支撑
  • 容量规划: 基于历史趋势和实时数据,为容量扩展和资源优化提供决策依据

通过这套完善的监控体系,Curvine 能够在复杂的分布式环境中保持高可用性和高性能,为用户提供稳定可靠的缓存服务。