Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pika观测性支持 #1218

Closed
wanghenshui opened this issue Dec 13, 2022 · 5 comments
Closed

pika观测性支持 #1218

wanghenshui opened this issue Dec 13, 2022 · 5 comments
Assignees

Comments

@wanghenshui
Copy link
Collaborator

No description provided.

@wanghenshui wanghenshui self-assigned this Dec 13, 2022
@wanghenshui wanghenshui mentioned this issue Dec 13, 2022
78 tasks
@pourer
Copy link

pourer commented Mar 7, 2023

目前在生产环境中,关于pika的log、metrics、trace这三方面的监控方案大家都是怎么做的?

可以结合实际情况,从以下几个方面阐述下:

  • 使用pika时的整体架构是怎样的?

  • 对于请求链路以及pika本身的监控,会关注哪些指标?使用了怎样的技术方案对指标数据进行采集、存储、展示和告警的?

  • 在搭建以及运维整个pika监控体系的过程中,有遇到过哪些问题吗?后续期望如何?

@dongdongwcpp
Copy link

dongdongwcpp commented Mar 8, 2023

1.可视化每个rocksdb instance的每个CF的每个level大小信息,可以快速诊断是否出现倒三角 LSM树等问题。

    std::vector<rocksdb::ColumnFamilyHandle*> cf = dbins->()->getCFH();
        
    int total_lev = db->NumberLevels();
    for(auto&item:cf){
        std::map<std::string, std::string> prop;
        db->GetMapProperty(item,"rocksdb.cfstats", &prop);
        cout<< "cf:" << item->GetName() <<endl;
        for(int i=0;i<total_lev;i++){
            string key = "compaction.L"+to_string(i)+".SizeBytes";
            auto iter = prop.find(key);
            if(iter !=prop.end()){
                string key = "L"+to_string(i);
                cout <<"\t"<< key << "\t" << iter->second <<endl;
            }
        }
        cout << "sum:" << prop["compaction.Sum.SizeBytes"] <<endl;
    }

2.可视化每个rocksdb instance的 block cache usage,包括writebuffer、index、filter使用比例,可快速了解性能原因,内存使用情况,目标是在饼图上展示,可用下面代码获取

std::map<std::string, std::string> values;
db->GetMapProperty(cf_handle,rocksdb::DB::Properties::kBlockCacheEntryStats, &values);
//具体包括:
bytes.data-block
deprecated-filter-block
bytes.filter-block
filter-meta-block
bytes.index-block 
bytes.other-block
bytes.write-buffer
  1. rocksdb 配置可在页面reload 和设置

4.pika暴露http接口给grafna等监控系统抓数据(参考brpc的bvar),pika也应该有自己的 monitor ,用go写一个出来,里面自带UI,可以抓取pika的输出 ,UI 实现了几个关于基本性能的可视化显示。

@Gjj455
Copy link

Gjj455 commented Mar 8, 2023

1、使用pika时的整体架构是怎样的?

有直接使用的classic模式 v3.4.0
也有内部自己改的codis+pika(sharding)模式 v3.4.0

2、对于请求链路以及pika本身的监控,会关注哪些指标?使用了怎样的技术方案对指标数据进行采集、存储、展示和告警的?

自写python脚本采集(info all+slowlog),借助telegraf的exec插件采集数据。数据存入Victoria-Metrics数据库,grafana展示。
通过n9e配置告警策略告警

3、在搭建以及运维整个pika监控体系的过程中,有遇到过哪些问题吗?后续期望如何?

sharding模式info 信息中 没有lag信息,只能通过pkcluster info slot去查
没有类似redis maxmemory 的配置,pika实例目前存储水位之类的无法清晰明了的看到
希望有获取类似pika 执行各命令耗时之类的数据统计,类似p99耗时之类的更好
希望增加关于底层rocksdb相关的一些数据采集,compact耗时,原因,SST 文件相关,是否处于write stall/stop状态 原因等

@AlexStocks
Copy link
Collaborator

        *  0408 尚未合入
        *  0415 目前baitao还在doing 相关工作
        *  0429 liuyuecai & cjg 一块 review https://github.com/OpenAtomFoundation/pika/pull/1388/ 需要清楚观测了哪些指标
        *  0520 已合并,后面检查metrics全不全,yuecai 后续与 henshui、chuande 交流讨论,整理文档
        *  0527 胤楠 梳理了 Pika 常见的 Metrics 指标,待讨论:https://github.com/OpenAtomFoundation/pika/discussions/1549

@yaoyinnan
Copy link
Contributor

在 v3.5.0 版本我们新加了 pika_exporter 工具来监测 Pika 的可观测性指标,并在后期添加了一些新的指标来完善 Pika 的可观测性

#1388 #1733 #1751 #1736 #1560 #1696

@chenbt-hz @yaoyinnan @Mixficsol

  1. 新增 Pika 可观测系统 pika_exporter
  2. 新增网络 I/O 流量监控指标
  3. 新增命令统计耗时指标
  4. 新增 estimate_pending_compaction_bytes 度量来分析碎片率指标
  5. 新增 RocksDB 指标

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants