open-falcon / falcon-plus

An open-source and enterprise-level monitoring system.
Apache License 2.0
7.27k stars 1.53k forks source link

关于rrd存储方式 #501

Open clt85046 opened 6 years ago

clt85046 commented 6 years ago

在查看图像数据时候遇到一个问题,我counter的step设定为60s,但是实际传输时120传一次,这样在一开始查看图像时是有断点的,但是当写入rrd文件之后,他似乎直接把断点都附上了值,所以出现的图像就练成了线,想请教一下这是为什么?

MistShi commented 6 years ago

为了降低io压力,graph组件里面有个cache层,并按照一个周期进行写rrd的动作。所以当你query最近的数据的时候,会从内存cache中返回。由于定义的step是60s,所以会按照这个step进行数据返回,看起来就是有断点的。而rrd落盘的时候,会有一些处理策略,所以看起来就又连续了。

MistShi commented 6 years ago

细节的代码逻辑,可以看modules/graph相关的代码。

clt85046 commented 6 years ago

感谢,关于处理策略这块是在graph/rrdtool这下面吗,可否告知主要是在那几个方法下进行处理的

duyawen8 commented 6 years ago

是的,graph在创建rrd文件时会指定数据源的heartbeat,该值为counter的两个step,断点间隔小于heartbeat就会补值,heartbeat的详细说明请参考https://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html,

GaoJiasheng commented 6 years ago

赞 @juesexingqiu

jianvhen commented 6 years ago

追问个问题, 如果在step周期内,多次上传了数据,那么falcon的数据采集是如何区别和判断的? 我通过实验发现只存储了第一个值。这是在falcon服务端做了处理还是rrd落盘的时候进行处理。 谢谢 @MistShi

MistShi commented 6 years ago

@jianvhen 是falcon的处理逻辑,同一step中只保留第一个到的