Curve块存储使用grafana+promethues的方式实现监控可视化,grafan面板上的监控项含义如下。
MDS
DashBord | Mean | Pannel |
进程资源 | 进程的运行时间,对cpu的占用,对内存的占用 | 进程运行时间 |
进程cpu使用情况 | ||
内存占用 | ||
逻辑池状态 | 记录了逻辑池空间分配的一些情况 | logical_pool_metrics |
chunkserver状态 | chunkserver相关的统计信息。其中_bps指的单个chunkserver上每秒带宽;_iops指的单个chunkserver上每秒请求数量;这两个数据是chunkserver上报给mds的,是mds进行调度的依据之一 | chunkserver_leader_num_series 每个chunkserver上leader的数量,可以看到随时间的变化趋势 |
chunkserver_current_leader_count 每个chunkserver上leader的数量,用于判断leader在集群中的分布是否均衡 | ||
chunkserver_current_copyset_num 每个chunkserver上copyset的数量 | ||
chunkserver_current_scatterwidth 每个chunkserver的scatterwidth值,用于判断copyset在集群中的分布集中度 | ||
chunkserver_current_write_bps | ||
chunkserver_current_write_iops | ||
chunkserver_current_read_bps | ||
chunkserver_current_read_iops | ||
调度监控 | 用于统计当前集群中配置变更的情况 | operator num 当前进行中和等待执行的配置变更任务个数 |
add_peer_num 复制组新增一个peer的任务个数 | ||
transfer_leader_num 复制组leader变更的任务个数 | ||
remove_peer_num 复制组减少一个peer的任务个数 | ||
remove_peer_num 普通优先级任务个数(remove_peer/transfer_leader) | ||
remove_peer_num 高先级任务个数(add_peer) | ||
RPC层指标 | 用于统计mds接受到的请求情况。其中_qps指每秒接受到的请求个数;_concurrency指接受请求的并发度;_lat指处理请求的延迟 | total_rpc_qps |
total_rpc_concurrency | ||
request_rpc_qps | ||
request_rpc_lat | ||
HeartBeat指标 | 用于统计chunkserver和mds之间心跳请求的情况。其中_qps/_concurrency和RPC层指标类似;lat_avg指处理请求的平均时延;_lat_percentile指的是请求的百分位点延迟(50/80/90/99分位点) | total_rpc_qps |
heartbeat_qps | ||
heartbeat_concurrency | ||
heartbeat_lat_avg | ||
heartbeat_lat_percentile |
ChunkServer
DashBord | Mean | Pannel |
进程资源占用 | 进程的运行时间,对cpu的占用 | 进程运行时间 |
porcess_cpu_usage | ||
rpc层读写指标 | 这是brpc对service的一些统计指标,rpc层的请求包括了rpc接受-数据处理-数据发送三个阶段。其中_qps指的是每秒处理的请求数量;_eps指的是每秒请求处理返回error的数量;_concurrency指的是并发度;_lat指的是请求延迟;_lat_percentile指的是请求的百分位点延迟(50/80/90/99分位点) | total_rpc_qps |
iobuf_memory | ||
read_chunk_eps | ||
read_chunk_concurrency | ||
read_chunk_qps | ||
write_chunk_eps | ||
write_chunk_concurrency | ||
write_chunk_qps | ||
avg_read_lat | ||
read_chunk_lat_percentile | ||
avg_write_lat | ||
write_chunk_lat_percentile | ||
chunkserver层读写指标 | 这是chunkserver的处理时间,和rpc层读写指标最大的区别是不包括rpc的接受和发出两个阶段。其中_eps指的是每秒请求处理返回error的数量;_qps指的是每秒处理请求数量;_rps指的是每秒接受到的请求数量,rps-qps就是当前正在等待处理的请求数量;_lat指的是请求延迟;_lat_percentile指的是请求的百分位点延迟(50/80/90/99分位点);特别要说明的是*_io_size_percentile指的是读写请求的IO大小 | read_chunk_eps |
read_chunk_iops | ||
read_chunk_rps | ||
write_chunk_eps | ||
write_chunk_iops | ||
write_chunk_rps | ||
read_io_latency_percentile | ||
write_io_latency_percentile | ||
avg_read_lat | ||
avg_write_lat | ||
read_bps | ||
write_bps | ||
read_io_size_percentile | ||
write_io_size_percentile | ||
copyset指标 | 主要指的是单个copyset对读写请求的处理统计指标。其中_eps/_iops/_rps跟chunkserver层读写指标或者rpc层读写指标含义相同;_bps指的是每秒处理IO的带宽 | selected copyset count |
selected copyset chunk sum | ||
copyset_chunk_num | ||
copyset_read_chunk_eps | ||
copyset_read_chunk_iops | ||
copyset_read_chunk_rps | ||
copyset_write_chunk_eps | ||
copyset_write_chunk_iops | ||
copyset_write_chunk_rps | ||
copyset_read_chunk_bps | ||
copyset_write_chunk_bps | ||
copyset_avg_read_lat | ||
copyset_avg_write_lat | ||
chunkserver关键指标 | chunkserver上关于容量的一些统计数据 | total_chunk_num 文件池中所有的(已经使用和未使用的)chunk的数量 |
chunkfilepool_left_chunks 文件池中剩余的chunk个数 | ||
copyset_count copyset的数量 | ||
Raft关键指标 | 数据复制过程中关键步骤的指标 | raft_num_log_entries 复制组内存中日志的数量 |
raft_apply_tasks_batch_counter 复制组每次apply任务的数量 | ||
raft_send_entries_latency 复制组leader发送数据给follower+follower收到数据进行日志持久化+follower回复复制成功这三个阶段的时间总和 | ||
raft_send_entries_qps 复制组leader发送数据给follower的每秒请求数量 | ||
raft_service_append_entries_latency 复制组中follower处理请求的时延 | ||
raft_service_append_entries_qps 复制组中follower每秒接受请求的数量 | ||
raft_install_snapshot_qps 复制组的副本每秒接受到安装快照请求的数量 | ||
storage_append_entries_latency 复制组中的副本日志写盘的延迟 | ||
install_snapshot_bps 复制组的副本执行安装快照时的带宽 | ||
raft_get_file_qps 复制组每秒处理获取文件请求的个数 | ||
leader_need_install_snapshot_task_num 复制组中leader处理快照任务的并发度(一个copyset上可能有多个leader在进行) | ||
follower_install_snapshot_task_num 复制组中follower正在下载快照的任务数量(一个copyset最多一个任务) | ||
线程指标 | brpc中线程相关的一些指标,一定程度上可以反应当前服务的压力情况 | bthread_worker_count chunkserver服务brpc组件中配置的线程数量/td> |
bthread_worker_usage chunkserver服务brpc组件中线程的实际使用数量 | ||
bthread_count chunkserver服务brpc组件中协程的数量 | ||
bthread_execq chunkserver服务brpc组件中可执行队列的数量 |
Client
DashBord | Mean | Pannel |
进程资源 | 进程的运行时间,对cpu的占用 | 客户端运行时间 |
client_cpu_usage | ||
客户端配置 | 客户端的所有配置项 | 客户端配置 |
用户接口层指标 | 从客户端向外提供的接口相关的性能统计数据。其中_qps指的是每秒处理请求数量;_rps指的是每秒接受到的请求数量,rps-qps就是当前正在等待处理的请求数量;_latency指的是请求延迟;_bps指的是每秒处理IO的带宽;特别要说明的是*_io_size_percentile指的是请求的IO大小 | client_read_qps |
client_write_qps | ||
client_read_rps | ||
client_write_rps | ||
client_read_bps | ||
client_write_bps | ||
client_read_latency | ||
client_write_latency | ||
write_io_size_percentile | ||
中间业务层指标 | IO过程中的两个重要指标项 | inflight_rpc_num 正在处理中的IO请求的个数 |
get_leader_retry_rpc 从chunkserver获取复制组当前leader的重试rpc的次数 | ||
rpc层指标 | client和chunkserver进行IO交互过程中的指标,主要包括client发送请求+chunkserver处理请求+client收到请求三个阶段的时间。其中_qps/_bps/_latency和用户接口层指标中的含义类似 | read_rpc_qps |
write_rpc_qps | ||
read_rpc_bps | ||
write_rpc_qps | ||
read_rpc_latency | ||
write_rpc_latency | ||
timeout_qps | ||
与MDS通信指标 | client和mds所有rpc每秒请求次数统计 | client2mds_rpc_qps |