Skip to content

Grafana 监控指标说明 —— RocksDB & ToplingDB 部分

GuKaifeng edited this page Sep 5, 2022 · 3 revisions

Todis 部分指标查看这里

1. engine DB Properties

1.1. common

监控项 含义
engine:num_immutable_mem_table 尚未被 flush 的不可变 memtables 的数量
engine:num_immutable_mem_table_flushed 已经 flush 完成的不可变 memtables 的数量
engine:num_running_flushes 正在运行的 flush 数量
engine:num_running_compactions 正在运行的 compactions 数量
engine:cur_size_active_mem_table 当前活跃的 memtable 的大概大小(字节)
engine:cur_size_all_mem_tables 当前活跃的 memtable 和暂未 flush 的不可变 memtable 的总的大概大小(字节)
engine:size_all_mem_tables 所有 memtable 的总大小(字节),包含活跃的 memtable、未 flush 的不可变 memtable 和 pinned 的不可变的 memtable
engine:num_entries_active_mem_table 当前活跃的 memtable 中的条目数量
engine:num_entries_imm_mem_tables 没有 flush 的不可变 memtable 中的条目数量
engine:num_deletes_active_mem_table 当前活跃的 memtable 中的删除的条目数量
engine:num_deletes_imm_mem_tables 在尚未 flush 的不可变 memtable 中的删除的条目数量
engine:estimate_num_keys 估计的在活跃的 memtable、未 flush 的不可变 memtable 和存储介质中的 key 的数量
engine:estimate_table_readers_mem 读 SST 时使用的内存的大概大小,不包括块缓存(如 filter 和 index 块)
engine:estimate_live_data_size 返回以字节为单位的活动数据量的估计值。对于BlobDB,它还在 version 的 blob 文件中包含活动字节的确切值。
engine:estimate_pending_compaction_bytes 估计的压缩需要重写的字节总数,以使所有级别减小到低于目标大小。除基于级别的压缩外,对其他压缩无效。
engine:is_file_deletions_enabled 如果允许删除废弃的文件,其值为 0,否则为非零值。
engine:background_errors 后台错误的总数
engine:num_live_versions 当前版本的数量。' Version '是一个内部数据结构。详情请参阅 version_set.h。更多的当前版本通常意味着更多的SST文件被迭代器或未完成的压缩删除。
engine:total_sst_files_size 所有 SST 文件的总大小(字节)
engine:live_sst_files_size 属于最新 LSM 树的所有 SST 文件的总大小(字节)。
engine:base_level L0 的数据将被压缩至的 level 数
engine:num_snapshots 未释放的快照数
engine:oldest_snapshot_time 代表最旧的未释放的快照的 unix 时间戳的数字
engine:oldest_snapshot_sequence 代表最旧的未释放的快照的序列数
engine:num_files_at_level 第 N 层的文件数
engine:compression_ratio_at_level 第 N 层的数据压缩率(数据压缩率=未压缩的数据大小/压缩后的数据大小,值若为 -1.0 表示该层没有打开的文件)
engine:actual_delayed_write_rate 当前实际的延迟写速率,0 表示不延迟。

1.2. cfstat

监控项 含义
compaction.L<N>.AvgSec L<N> 平均每次 Compact 耗时
compaction.L<N>.CompCount L<N> Compact 累计的次数
compaction.L<N>.CompMergeCPU L<N> compaction 中占用的 CPU 时间,单位秒
compaction.L<N>.CompSec L<N> Compact 累计耗时,单位秒
compaction.L<N>.CompactedFiles L<N> 已完成 compact 的文件数
compaction.L<N>.KeyDrop L<N> compact 中删除的 key 数量
compaction.L<N>.KeyIn L<N> compaction 过程中比较的记录数量
compaction.L<N>.MovedGB L<N> compaction 过程中,移动到 level n+1 的字节数。
compaction.L<N>.NumFiles L<N> 的全部的 sst 文件数
compaction.L<N>.RblobGB L<N> compaction 从 blob 文件中读取的数据大小,单位 GB。
compaction.L<N>.ReadGB L<N> 读取的大小,单位 GB
compaction.L<N>.ReadMBps L<N> 的读取速率,单位 MBps
compaction.L<N>.RnGB L<N> 进行 compact 时,读当前层文件的大小,单位 GB
compaction.L<N>.Rnp1GB L<N> 进行 compact 时,读下一层文件的大小,单位 GB
compaction.L<N>.Score L<N> 的分数,分数越高越优先 compact
compaction.L<N>.SizeBytes L<N> SST 总大小,单位字节
compaction.L<N>.WblobGB L<N> compaction 期间写入 blob 文件的大小,单位 GB。
compaction.L<N>.WnewGB L<N> Wnp1 - Rnp1
compaction.L<N>.WriteAmp (写入 level<N+1>的总字节)/(从 level<N> 读取的总字节)
compaction.L<N>.WriteGB L<N> compaction 期间写入表文件的大小,单位 GB。
compaction.L<N>.WriteMBps compaction 中的数据写入速率
io_stalls.level0_numfiles 由于 level0_stop_writes_trigger 导致的 io stop 次数
io_stalls.level0_numfiles_with_compaction 由于 level0_stop_writes_trigger 导致的 compaction 中的 io stop 次数
io_stalls.level0_slowdown 由于 level0_slowdown_writes_trigger 导致的 io stall 次数
io_stalls.level0_slowdown_with_compaction 由于 level0_slowdown_writes_trigger 导致的 compaction 中的 io stall 次数
io_stalls.memtable_compaction 由于所有的 memtable 都满了,flush 进程没跟上导致的 io stop 次数。
io_stalls.memtable_slowdown 由于所有的 memtable 都满了,flush 进程没跟上导致的 io stall 次数。
io_stalls.slowdown_for_pending_compaction_bytes compaction 中填充字节时 slowdown 的次数
io_stalls.stop_for_pending_compaction_bytes compaction 中填充字节时 stop 的次数
io_stalls.total_slowdown 发生 slowdown 的总次数

1.3. level

监控项 含义
data_size 数据大小(压缩后的)
index_size 索引大小(压缩后的)
num_data_blocks 数据块的数量
num_deletions 删除的条目数量
num_entries 现存的条目数量
raw_key_size 原始的 key 大小(即压缩前的)
raw_value_size 原始的 value 大小(即压缩前的)

2. engine statistic

2.1. histogram

2.1.1. compaction

监控项 含义
engine:compaction:outfile:sync:micros compact中outfile->Sync操作耗时统计
engine:compaction:times:cpu_micros compact操作消耗cpu时间统计,每个单核会相加
engine:compaction:times:micros compact操作耗时
engine:subcompaction:setup:times:micros GenSubcompactionBoundaries执行耗时
engine:memtable:compaction:count 未发现调用
engine:db:flush:micros flush 操作持续的时间,单位 μs
engine:dcompaction:input:raw:bytes dcompaction 中输入的 kv 原始数据大小
engine:dcompaction:input:zip:bytes dcompaction 中输入的磁盘上的数据大小
engine:dcompaction:output:file:raw:size dcompaction 中每个文件的原始 kv 数据大小
engine:dcompaction:output:file:zip:size dcompaction 中每个文件在磁盘上的大小
engine:lcompaction:input:raw:bytes lcompaction 中输入的 kv 原始数据大小
engine:lcompaction:input:zip:bytes lcompaction 中输入的磁盘上的数据大小
engine:lcompaction:output:file:raw:size lcompaction 中每个文件的原始 kv 数据大小
engine:lcompaction:output:file:zip:size lcompaction 中每个文件在磁盘上的大小
engine:numfiles:in:singlecompaction 单个 compaction 的输入文件数量
engine:num:subcompactions:scheduled 已经设定好边界的、准备压缩的 sub-compactions 的数量

2.1.2. common

监控项 含义
engine:bytes:per:read Get() 方法读到的 value 的大小
engine:bytes:per:write Write() 方法写入的 value 的大小
engine:bytes:per:multiget MultiGet() 方法读到的所有 value 的总大小
engine:cond:wait:nanos 等待 db 的 condition 的时间,单位 ns
engine:hard:rate:limit:delay:count 未发现调用
engine:l0:slowdown:count 未发现调用
engine:num:files:stall:count 未发现调用
engine:soft:rate:limit:delay:count 未发现调用
engine:db:get:micros Get() 方法的耗时,单位 μs
engine:db:multiget:micros MultiGet() 方法的耗时,单位 μs
engine:db:seek:micros DBIter 类(Iterator 类的派生类)的 Seek() 方法的耗时,单位 μs
engine:db:write:micros Write() 方法的耗时,单位 μs
engine:db:write:stall 延迟写方法 DelayWrite() 的耗时,包含延迟时间,单位 μs
engine:error:handler:autoresume:retry:count 可恢复的后台 IO 错误的自动恢复尝试次数
engine:manifest:file:sync:micros manifest 文件 sync 的时间,单位 μs
engine:memtab:construct:nanos 构建一个新的 memtable 的时间,单位 ns
engine:memtab:write:kv:nanos 在 memetable 写入 kv 的时间,单位 ns
engine:mutex:wait:nanos 等待 db 的 mutex 的时间,单位 ns
engine:table:open:io:micros 构建 table reader 时,打开 table 过程中 io 的时间,单位 μs
engine:table:sync:micros table 的 sync 时间,单位 μs
engine:wal:file:sync:micros wal 的 sync 时间,单位 μs
engine:write:wal:nanos 写 wal 的时间,单位 ns
engine:num:sst:read:per:level MultiGet() 在每个 level 读取的 sst 文件数
engine:number:per:multiget 每次 MultiGet() 读取的 key 数量
engine:sst:batch:size MultiGet() 中在单个 sst 文件中查找的 key 的数量,包含了有墓碑的 key 等
engine:sst:read:micros Get() 或 MultiGet() 读 sst 的时间,不包含 Get() 延迟读的延迟时间,单位 μs
engine:switch:wal:nanos 切换 wal 文件的时间,单位 ns

2.2. ticker

2.2.1. simple

监控项 含义
engine:bloom:filter:useful 在 block_based_table 中读取时,使用 bloom filter 过滤掉的 key 数目
engine:bloom:filter:full:positive 在 block_based_table 中读取时,使用 bloom filter 过滤后留下的 key 数目
engine:bloom:filter:full:true:positive 在 block_based_table 中读取时,使用 bloom filter 过滤后留下的 ,并且真实存在的 key 数目
engine:bloom:filter:micros 未发现调用
engine:memtable:hit Get() 或 MultiGet() 在 memtable 中找到 key 的次数
engine:memtable:miss Get() 或 MultiGet() 在 memtable 中未找到 key 的次数
engine:l0:hit Get() 或 MultiGet() 在 L0 找到 key 的次数
engine:l1:hit Get() 或 MultiGet() 在 L1 找到 key 的次数
engine:l2andup:hit Get() 或 MultiGet() 在 L2 及以上 找到 key 的次数
engine:compaction: key:drop:new compaction 中用被更新的值覆盖原来值的旧 key 的数量
engine:compaction: key:drop:obsolete compaction 中的废弃的 key 的数量
engine:compaction: key:drop:range_del compaction 中由范围墓碑覆盖的 key 的数量
engine:compaction: key:drop:user compaction 中由用户 compaction 方法删除的 key 的数量
engine:compaction:range_del:drop:obsolete compaction 中范围删除的 key 数量
engine:compaction:optimized:del:drop:obsolete 由于文件间隙优化,在底层之前删除过时的内容的数量。
engine:compaction:cancelled 因为没有足够的空间而取消的 compaction 次数
engine:number:keys:written 通过 Put() 和 Write() 调用写入数据库的 key 数量
engine:number:keys:read Get() 的 key 的数量
engine:number:keys:updated 原地更新了 value 的 key 的数量(如果启用了原地更新)
engine:bytes:read DB::Get() 读取的未压缩字节数,可以来自 memtables、cache 或 table文件
engine:number:db:seek DBIter::Seek() 的调用次数
engine:number:db:next DBIter::Next() 的调用次数
engine:number:db:prev DBIter::Prev() 的调用次数
engine:number:db:seek:found 返回了数据的 DBIter::Seek() 的调用次数
engine:number:db:next:found 返回了数据的 DBIter::Next() 的调用次数
engine:number:db:prev:found 返回了数据的 DBIter::Prev() 的调用次数
engine:db:iter:bytes:read 通过 Iterator 读到的未压缩的字节数,key 和 value 都算
engine:no:file:closes 未发现调用
engine:no:file:opens 构建 table reader 和 bolb file reader 时,打开的文件数
engine:no:file:errors 构建 table reader 和 bolb file reader 时,打开失败的文件数
engine:l0:slowdown:micros 已弃用
engine:memtable:compaction:micros 已弃用
engine:l0:num:files:stall:micros 已弃用
engine:stall:micros 延迟写的延迟时间。
engine:db:cond:wait:nanos 等待 db 的 condition 的时间,单位纳秒
engine:db:mutex:wait:nanos 等待 db 的 mutex 的时间,单位纳秒
engine:rate:limit:delay:millis 未发现调用
engine:num:iterators 已弃用
engine:number:multiget:get DB::MultiGet() 调用的次数
engine:number:multiget:keys:read DB::MultiGet() 读取的 key 数量
engine:number:multiget:bytes:read DB::MultiGet() 读取的字节数
engine:number:deletes:filtered 未发现调用
engine:number:merge:failures 失败的 Merge 操作数量
engine:bloom:filter:prefix:checked 在文件上创建迭代器之前检查 bloom 的次数
engine:bloom:filter:prefix:useful 在文件上创建迭代器之前检查 bloom 中,避免了创建迭代器的次数。
engine:number:reseeks:iteration 在一次迭代中,为了跳过大量具有相同 userkey 的 key,我们必须 reseek 的次数。
engine:getupdatessince:calls GetUpdatesSince() 的调用次数,用于跟踪事务日志迭代器刷新。
engine:wal:synced 完成 wal 文件 sycn 的次数
engine:write:timeout 未发现调用
engine:compact:read:marked:bytes compact 由 DB::SuggestCompactRange() 标记要 compact 的文件时读的字节数
engine:compact:read:periodic:bytes compact 过旧的 sst 文件时读的字节数
engine:compact:read:ttl:bytes 基于 TTL 的 compaction 读的字节数
engine:compact:write:marked:bytes compact 由 DB::SuggestCompactRange() 标记要 compact 的文件时写的字节数
engine:compact:write:periodic:bytes compact 过旧的 sst 文件时写的字节数
engine:compact:write:ttl:bytes 基于 TTL 的 compaction 写的字节数
engine:number:direct:load:table:properties 不用创建 table reader,直接就能从文件加载获得的 table 属性数量
engine:merge:operation:time:nanos Merge 操作的总耗时,单位 ns
engine:filter:operation:time:nanos compaction 中 filter 操作的总耗时,单位 ns
engine:read:amp:estimate:useful:bytes 写放大实际用到的字节数
engine:read:amp:total:read:bytes 写放大全部读取的字节数
engine:number:rate_limiter:drains 速率限制器的字节被完全消耗的重新填充间隔数。
engine:number:iter:skip DBIter::Next() 跳过的 key 的数量
engine:number:multiget:keys:found MultiGet() 实际找到的 key 的数量
engine:num:iterator:created 已创建的 iterator 数量
engine:num:iterator:deleted 已删除的 iterator 数量
engine:files:marked:trash 被 sst 文件 manager 标记为垃圾的文件数
engine:files:deleted:immediately 被 sst 文件 manager 通过 DeleteScheduler 立即删除的文件数
engine:error:handler:bg:errro:count bg error handler 的数量
engine:error:handler:bg:io:errro:count bg io error handler 的数量
engine:error:handler:bg:retryable:io:errro:count bg retryable io error handler 的数量
engine:error:handler:autoresume:count ErrorHandler 自动恢复 bg error 的次数
engine:error:handler:autoresume:retry:total:count ErrorHandler 自动恢复中重试的次数
engine:error:handler:autoresume:success:count ErrorHandler 自动恢复成功的次数
engine:bytes:written DB::Put()、DB::Delete()、DB::Merge()、DB::Write() 发出的未压缩字节数。
engine:wal:bytes 已写入 wal 的字节数
engine:flush:write:bytes flush 期间写入的字节数
engine:write:self 通过请求线程处理完成的写操作数量。
engine:write:other 通过写入队列头部的线程处理完成的写操作数量
engine:write:wal 请求 WAL 的 Write 调用数
engine:compact:read:bytes compaction 期间读取的字节数
engine:compact:write:bytes compaction 期间写入的字节数
engine:lcompact:write:bytes:raw lcompact 中原始数据的大小,包括 key 和 value
engine:dcompact:write:bytes:raw dcompact 中原始数据的大小,包括 key 和 value
engine:remote:compact:read:bytes remote compaction 期间读取的字节数
engine:remote:compact:write:bytes remote compaction 期间写入的字节数
engine:superversion_acquires 获得的 superversion 数量
engine:superversion_cleanups 删除的 superversion 数量
engine:superversion_releases 释放的 superversion 数量

2.2.2. aggregate

监控项 含义
write bytes rocksdb.bytes.written
rocksdb.wal.bytes
rocksdb.flush.write.bytes
的相关速率,具体看图表 label。
write batch rocksdb.write.self
rocksdb.write.other
rocksdb.write.wal
的相关速率,具体看图表 label。
compact write rocksdb.compact.write.bytes
rocksdb.lcompact.write.bytes.raw
rocksdb.remote.compact.write.bytes
rocksdb.dcompact.write.bytes.raw
的相关速率,具体看图表 label。
compact read rocksdb.compact.read.bytes
rocksdb.remote.compact.read.bytes
的相关速率,具体看图表 label。
superversion rocksdb.number.superversion_acquires
rocksdb.number.superversion_releases
rocksdb.number.superversion_cleanups
的相关速率,具体看图表 label。