-
Notifications
You must be signed in to change notification settings - Fork 312
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
增加流量热点检测功能 #445
Labels
type/enhancement
Indicates new feature requests
Comments
Good job~ |
hotpot_calculator里的_name改成_app_name吧,不看你这边文章还以为是caculator的名字。
|
ok~ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
增加流量热点检测功能
1 背景
目前pegasus针对热点流量检测还是比较原始地罗列监控数值,使用人工的方式进行故障检测和故障排查,在运维上显得略微繁琐。为了使得数据能更加直观地呈现,我们增加了流量热点检测模块,将热点问题相关数值进行打分并反馈到falcon,减少了运维人员的负担。
此模块的功能为实时收集partition级别的信息,并根据对应算法,计算出每个partition的热点值并反馈到falcon上。通过各个partition热点值的变化曲线,运维人员可以更加迅速地推断出出现热点的位置。
同时此工作也为热点数据读写问题的解决方案的工作之一。
2 算法框架
2.1 调用关系
在info_collector.cpp中各个app中partition的数据将会按照
_app_stat_interval_seconds
的配置进行采集(默认间隔为10s)。2.2 数据结构
2.2.1 数据库级
使用了
std::map<std::string, hotpot_calculator *> _calculator_store
保存了所有app的hotpot_calculator的指针,以便在遍历app时使用对应的算法与数据进行运算。2.2.2 app级
在每个app对应的hotpot_calculator中存有:
其中
_app_name
为app名,_policy
为对应的算法,_hotpot_points
为当前app中输出到perf_counter的每个partition的热点值。data_stores
保存了当前app中每个partition的历史记录,queue则是将历史数据做了缓存,便于算法查询。2.2.3 paritition级
对于每个partition, 我们使用了一个data_store来存储单次采集收集的数据。目前确定可以收集到的信息为:
我们的算法将基于这些信息去做打分。
2.2.4 类图
2.3 使用方法
代码示例
The text was updated successfully, but these errors were encountered: