修改绘图曲线精度
默认的,Open-Falcon只保存最近12小时的原始监控数据,12小时之后的数据被降低精度、采样存储。
如果默认的精度不能满足你的需求,可以按照如下步骤,修改绘图曲线的存储精度。
第一步,修改graph组件的RRA,并重新编译graph组件
graph组件的RRA,定义在文件 graph/rrdtool/rrdtool.go中,默认如下:
// RRA.Point.Size
const (
RRA1PointCnt = 720 // 1m一个点存12h
RRA5PointCnt = 576 // 5m一个点存2d
// ...
)
func create(filename string, item *cmodel.GraphItem) error {
now := time.Now()
start := now.Add(time.Duration(-24) * time.Hour)
step := uint(item.Step)
c := rrdlite.NewCreator(filename, start, step)
c.DS("metric", item.DsType, item.Heartbeat, item.Min, item.Max)
// 设置各种归档策略
// 1分钟一个点存 12小时
c.RRA("AVERAGE", 0.5, 1, RRA1PointCnt)
// 5m一个点存2d
c.RRA("AVERAGE", 0.5, 5, RRA5PointCnt)
c.RRA("MAX", 0.5, 5, RRA5PointCnt)
c.RRA("MIN", 0.5, 5, RRA5PointCnt)
// ...
return c.Create(true)
}
比如,你只想保存90天的原始数据,可以将代码修改为:
// RRA.Point.Size
const (
RRA1PointCnt = 129600 // 1m一个点存90d,取值 90*24*3600/60
)
func create(filename string, item *cmodel.GraphItem) error {
now := time.Now()
start := now.Add(time.Duration(-24) * time.Hour)
step := uint(item.Step)
c := rrdlite.NewCreator(filename, start, step)
c.DS("metric", item.DsType, item.Heartbeat, item.Min, item.Max)
// 设置各种归档策略
// 1分钟一个点存 90d
c.RRA("AVERAGE", 0.5, 1, RRA1PointCnt)
return c.Create(true)
}
第二步,清除graph的历史数据
清除已上报的所有指标的历史数据,即删除所有的rrdfile。不删除历史数据,已上报指标的精度更改将不能生效。
第三步,重新部署graph服务
编译修改后的graph源码,关停原有的graph老服务、发布修改后的graph。
只需要修改graph组件、不需要修改Open-Falcon的其他组件,新的精度就能生效。你可以通过Dashboard、Screen来查看新的精度的绘图曲线。
注意事项:
修改监控绘图曲线精度时,需要:
- 修改graph源代码,更新RRA
- 清除graph的历史数据。不删除历史数据,已上报指标的精度更改将不能生效
- 除了graph之外,Open-Falcon的其他任何组件 不需要被修改
- 修改RRA后,可能会出现”绘图曲线点数过多、浏览器被卡死”的问题。请合理规划RRA存储的点数,或者调整绘图曲线查询时的时间段选择。