php rrd update,通过shell脚本批量更新Cacti的RRD数据库文件

Cacti是一个开源的监控工具,基于mysql、php、apache、rrdtools,3z学堂在日常工作中经常使用其来监控网络流量。

近期在日常工作中遇见一个问题,在监控100GE网络端口时,发现监控到的流量数据在大于30多G左右的时候会出现无法显示的现象,如下图所示:

382ac2041f845413ae3a48f36d05dac6.png

通过对监控的数据源进行debug发现,在创建初始监控数据的时候,Cacti通过rrd命令创建了监控数据的原始rrd文件并定义了其支持的最大值。此最大值通过snmp采集的时候获取端口speed数据写入,应该是在获取100GE端口的带宽数据时出现了错误。

bd863e3a421e0eb408360d660d04133e.png

Data Source Debug

/usr/bin/rrdtool create \

/var/www/html/rra/202/4344.rrd \

--step 60 \

DS:traffic_in:COUNTER:120:0:4294967295 \

DS:traffic_out:COUNTER:120:0:4294967295 \

找到原因后,查阅rrd官方文档,发现可以通过rrdtoo tune的命令格式对已建立的rrd文件进行最大值修改

52893aacced296ed93256ca586ffcdd3.png

具体命令为:

rrdtool tune xxxx.rrd --maximum traffic_out:1000000000000

直接修改rrd文件的最大值为1000G。

由于监控的数据比较多,有近千个rrd文件,如果一个一个去修改得改到猴年马月去,于是写了个shell脚本来进行批量操作。

代码如下:

#!/bin/bash

for line in ` ls -F |grep '/$'`

do

cd $line

for file in `ls -l | grep rrd | awk '{print $9}'`

do

rrdtool tune $file --maximum traffic_out:1000000000000

rrdtool tune $file --maximum traffic_in:1000000000000

echo "$file ok"

done

cd ..

done

脚本通过ls列出目录和目录中的rrd文件,然后通过两个for循环,进入cacti的rra数据库目录,并通过rrdtool tune命令对rrd文件进行最大值修改。

将脚本命名为changemax.sh放在cacti的rra文件目录下,位于/var/www/html/rra/,使用chmod +x changemax.sh赋予执行权限,然后运行./changmax.sh即可。

4786c6229f8672aceaf4779e44e30736.png

d12ebaaff0ccc8e845dfbd593f124d37.png

上千个rrd文件,1分钟内全部搞定,改完后效果:

237d668d0e2dcf8eacbc46c5699b68d3.png

此次3z学堂给大家分享的时平时工作中遇到的一些维护问题,后续也会继续给大家分享,希望能够帮助到遇到同样问题的朋友。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值