Replies: 4 comments
-
上面的指标挺多的,不过我感觉还是要做减法,就像报警一样,多了等于没有。最主要的还是是黄金三指标吧,QPS、时延、请求成功率。我经常看的一些指标如下: rocksdb层 |
Beta Was this translation helpful? Give feedback.
-
我们这边使用TiDB的一点体验,如有以下rocksdb指标监控,在异常定位处理时比较方便: |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
除了metrics,pika是不是可以提供接口,通过客户端获取rocksdb的指标,比如像properties,方便使用人员分析rocksdb |
Beta Was this translation helpful? Give feedback.
-
待讨论的问题
为了更精确反馈 RocksDB 调优需求,我们发起本次讨论:Pika 需要哪些必要的 RocksDB 指标?
目前梳理了 Pika 现有的 metrics 指标,主要包括 Pika 本身的指标和 RocksDB 的指标。
情况如下:
资料概览
本文中根据下列资料,提取了部分指标的情况,如需详细了解,请阅读原文。
Pika 现有 metrics 获取方式
Info 命令获取 metrics
通过执行
INFO
命令可以获取到全部 metrics:Exporter 获取 Pika Info
pika_exporter 通过 Pika Info 命令获取统计信息,再根据 metrics 定义的字段,解析出所需的 Metrics。如 pika_exporter/exporter/metrics/data.go 中定义了 pika_exporter 需要获取的 RocksDB 的 Metrics:
RocksDB 指标
Properties
RocksDB 中的 DB 类中定义了一个结构体 Properties,里面是许多 RocksDB 的属性。具体代码在 db.h 中。结构体 Properties 中的每个成员都对应一个 rocksdb 属性,我们可以通过 GetProperty() 或 GetMapProperty() 等方法来获取其中的内容。
结合 RocksDB 源码对 Properties 的描述,参考 RocksDB -- DB::Properties 中的属性详解 一文整理了所有 Properties 的参数和含义。内容如下:
statistics
statistics —— 把这个设置给rocksdb::CreateDBStatistics()。任何时候,通过调用options.statistics.ToString(),你可以得到一个人类可读的Rocksdb统计信息。
stats_dump_period_sec ——我们每 stats_dump_period_sec 秒就会把统计信息导出到日志文件。默认为600,意味着每10分钟导出一次。你可以在应用里调用 db->GetProperty(“rocksdb.stats”) 得到相同的数据。
每db->GetProperty(“rocksdb.stats”),会在日志文件里找到这样的数据:
Pika 现有 RocksDB 指标
pika/src/pika_admin.cc
:参考资料
RocksDB & ToplingDB 监控指标
1. engine DB Properties
1.1. common
1.2. cfstat
1.3. level
2. engine statistic
2.1. histogram
2.1.1. compaction
2.1.2. common
2.2. ticker
2.2.1. simple
2.2.2. aggregate
Todis 监控指标
1. length histogram
2. time histogram
Beta Was this translation helpful? Give feedback.
All reactions