Quantcast
Channel: 容器云计算,Devops,DBA,网络安全。
Viewing all articles
Browse latest Browse all 780

cacti图形数据RRD保存精度为5分钟

$
0
0

Cacti主要使用了rrdtool这个工具来绘图,所以看上去比zabbix的好看,其实cacti只是个构造比较合理的框架。

rrdtool 有一套自己的数据文件,供其绘图使用,cacti 主要使用了,rrdtool create, rrdtool graph, rrdtool update 三个功能,rrdtool的数据文件,和一般关系型数据库不同的地方在于,它是环形数据库,一个特别依赖时间的数据库。

在实际生产环境中,默认的cacti图形是以日、周、月、年 4个时间,每个时间都可以任意缩放查看,但是大家应该发现了,

默认的情况下,日图是5分钟频率,周是30分钟,月是2小时,年是1天,这些是表示什么意思呢?

大家在看当天的流量图的时候(5分钟) 会发现,它是5分钟一个点,两个点之间画一条直线的。这样一天下来会有288个点了,这样就形成了一天的流量图。

一般情况下,我们每天生成的数据,会一直不停的变.更新,会有N个288,数据文件会变的无限大的。rrd文件就不会这样,之前说过了,它是环形数据库,就在于他会合并数据。

比如看周图的时候,你绝对看不了5分钟一个点的,为什么呢?这个就是因为数据被合并了。6个5分钟的点,合并成为周图中的一个点,也就是说,12个5分钟点才画成周图中的一条线。月、年都是依次类推。合并之后是如何取值呢,默认情况下,是取平均的,也就是为什么时间越大,数据越小的原因了。

既然在当天可以看见5分钟的流量图,那么多久之后就看不了,只能看见30分钟的图了呢?在默认情况下,5分钟的图是保存50小时的,也就是说2天内,你还可以看见那天的5分钟图,比如8月1号的流量图在8月2号还可以看见,到了3号就只能看见30分钟了的。

在 Data Sources 中,-rras 下面有 日、周、月、年的循环归档,这个地方就可以决定我们数据保存周期。保存时间 = 时间 * rows 。我们来看看默认的cacti 5分钟的保存时间:
基于以上公式,我们算出来, (5 * 600) / 60m = 50h ≈ 2d

其它的时间都可以算出来。既然这样可以算出来的话,我们可以反过来想,我们要保存一个月的5分钟流量。应该怎么写rows呢?rows = (30d * 24h * 60m) / 5 ,这样写好rows之后,在一个月之内,你就可以看见那个月某一天的详细流量了。其中,要注意的是,时间,比如8月1号到8月31号 与8月1号到9月1号 是不同的概念的,到了9月1号才算是过了一个月,cacti用的是自然月。

这三个数值的关系是,steps为每多少时间绘图一次,timesspan为时间跨度,rows为在这个时间跨度里面保存多少个数据记录。

1、修改rrdtool的存储大小

首先先创建需要的5分钟RRA:

 “Console” -> “Management” -> “Data Sources” -> RRAs :


如下,比如采集一天的数据,按一分钟的精度

Name设置为:Daily (1 Minute Average)

Consolidation Functions设置为:max、min、avg和last

X-Files Factor修改为:0.5

Steps设置为:1

Rows设置为:1440

Timespan设置为:86400

如一天的参数:
steps设置为1:表示每分钟绘图一次;
rows设置为1440:表示这一天存储1440行数据;
Timespan设置为86400:表示一天的时间86400秒。



5分钟精度设置参数如下:


图上 5m开头的是导出图形数据,步进值为300s,即是5分钟一个数据值。

也就是说,所有参数,steps 都设成为1分钟。


2、修改数据索引

console-Management->Templates->data templates

1、在Associated RRA's添加刚刚创建的5个RRD模板
2、将step设置为300(每300秒绘图一次)
3、将Heartbeat设置为600(600为超时时间)

3、修改计划任务crontab

*/5 * * * * /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1


rows默认存储数据最大值为10000,要想存储超过10000行的数据,需要修改lib/rrd.php文件中的参数maxrows

参考如下:

   /* basic export options */
   $xport_opts =
       "--start=$xport_start" . RRD_NL .
       "--end=$xport_end" . RRD_NL .
       "--maxrows=2000000" . RRD_NL;

   $xport_defs = "";


在Cacti配置中修改Poller的轮询时间间隔

“Console” -> “Configuration” heading -> “Settings”,点击“Poller”标签

修改成5分钟


5、重建 Poller 缓存

“Console” -> “Utilities” heading -> “System Utilities”,点击“Rebuild Poller Cache”。

6、删除原本的 .rrd 文件,等5分钟后 cacti 重建。

# rm /var/lib/cacti/rra/*.rrd

原因是我们修改了所有的RRAs(默认的5分钟的也修改了 rows 数),原来使用旧的RRA生成的rrd文件的定义,还是旧的;用 rrdtool 命令可以查看rrd文件的信息:

[root@administrator rra]# rrdtool info xy-dx-ce6810_traffic_in_71.rrd
filename = "xy-dx-ce6810_traffic_in_71.rrd"
rrd_version = "0003"
step = 300
last_update = 1498618201
ds[traffic_in].type = "COUNTER"
ds[traffic_in].minimal_heartbeat = 600
ds[traffic_in].min = 0.0000000000e+00
ds[traffic_in].max = 1.0000000000e+10
ds[traffic_in].last_ds = "579735131138372"
ds[traffic_in].value = 1.2565092036e+08
ds[traffic_in].unknown_sec = 0
ds[traffic_out].type = "COUNTER"
ds[traffic_out].minimal_heartbeat = 600
ds[traffic_out].min = 0.0000000000e+00
ds[traffic_out].max = 1.0000000000e+10
ds[traffic_out].last_ds = "3258571473168549"
ds[traffic_out].value = 7.2481209245e+08
ds[traffic_out].unknown_sec = 0
rra[0].cf = "AVERAGE"
rra[0].rows = 288
rra[0].cur_row = 207
rra[0].pdp_per_row = 5
rra[0].xff = 5.0000000000e-01
rra[0].cdp_prep[0].value = 2.4233873948e+08
rra[0].cdp_prep[0].unknown_datapoints = 2
rra[0].cdp_prep[1].value = 1.4449867732e+09
rra[0].cdp_prep[1].unknown_datapoints = 2
rra[1].cf = "AVERAGE"
rra[1].rows = 2016
rra[1].cur_row = 602
rra[1].pdp_per_row = 5
rra[1].xff = 5.0000000000e-01
rra[1].cdp_prep[0].value = 2.4233873948e+08
rra[1].cdp_prep[0].unknown_datapoints = 2
rra[1].cdp_prep[1].value = 1.4449867732e+09
rra[1].cdp_prep[1].unknown_datapoints = 2
rra[2].cf = "AVERAGE"
rra[2].rows = 8928
rra[2].cur_row = 7480
rra[2].pdp_per_row = 5
rra[2].xff = 5.0000000000e-01
rra[2].cdp_prep[0].value = 2.4233873948e+08
rra[2].cdp_prep[0].unknown_datapoints = 2
rra[2].cdp_prep[1].value = 1.4449867732e+09
rra[2].cdp_prep[1].unknown_datapoints = 2
rra[3].cf = "AVERAGE"
rra[3].rows = 105120
rra[3].cur_row = 80291
rra[3].pdp_per_row = 5
rra[3].xff = 5.0000000000e-01
rra[3].cdp_prep[0].value = 2.4233873948e+08
rra[3].cdp_prep[0].unknown_datapoints = 2
rra[3].cdp_prep[1].value = 1.4449867732e+09
rra[3].cdp_prep[1].unknown_datapoints = 2
rra[4].cf = "MAX"
rra[4].rows = 288
rra[4].cur_row = 260
rra[4].pdp_per_row = 5
rra[4].xff = 5.0000000000e-01
rra[4].cdp_prep[0].value = 1.2562185807e+08
rra[4].cdp_prep[0].unknown_datapoints = 2
rra[4].cdp_prep[1].value = 7.2480110036e+08
rra[4].cdp_prep[1].unknown_datapoints = 2
rra[5].cf = "MAX"
rra[5].rows = 2016
rra[5].cur_row = 360
rra[5].pdp_per_row = 5
rra[5].xff = 5.0000000000e-01
rra[5].cdp_prep[0].value = 1.2562185807e+08
rra[5].cdp_prep[0].unknown_datapoints = 2
rra[5].cdp_prep[1].value = 7.2480110036e+08
rra[5].cdp_prep[1].unknown_datapoints = 2
rra[6].cf = "MAX"
rra[6].rows = 8928
rra[6].cur_row = 372
rra[6].pdp_per_row = 5
rra[6].xff = 5.0000000000e-01
rra[6].cdp_prep[0].value = 1.2562185807e+08
rra[6].cdp_prep[0].unknown_datapoints = 2
rra[6].cdp_prep[1].value = 7.2480110036e+08
rra[6].cdp_prep[1].unknown_datapoints = 2
rra[7].cf = "MAX"
rra[7].rows = 105120
rra[7].cur_row = 56863
rra[7].pdp_per_row = 5
rra[7].xff = 5.0000000000e-01
rra[7].cdp_prep[0].value = 1.2562185807e+08
rra[7].cdp_prep[0].unknown_datapoints = 2
rra[7].cdp_prep[1].value = 7.2480110036e+08
rra[7].cdp_prep[1].unknown_datapoints = 2


也可以通过cacti的web界面查看。

datasource ---打开对应的监控端口 -------*Turn On Data Source Debug Mode

显示数据源测试数据如下:


Data Source Debug

/usr/bin/rrdtool create \
/usr/local/cacti/rra/3/141.rrd \
--step 300  \
DS:traffic_in:COUNTER:600:0:10000000000 \
DS:traffic_out:COUNTER:600:0:10000000000 \
RRA:AVERAGE:0.5:5:288 \
RRA:AVERAGE:0.5:5:2016 \
RRA:AVERAGE:0.5:5:8928 \
RRA:AVERAGE:0.5:5:105120 \
RRA:MAX:0.5:5:288 \
RRA:MAX:0.5:5:2016 \
RRA:MAX:0.5:5:8928 \
RRA:MAX:0.5:5:105120 \


当然建议修改后,直接删除所有数据,再重新配置 ,最方便。

重新生成图形后,再查看月图,周图时,导致数据,已经变成5分钟一个数据值了。


Viewing all articles
Browse latest Browse all 780