Cacti是一个开源的监控工具,基于mysql、php、apache、rrdtools,3z学堂在日常工作中经常使用其来监控网络流量。
近期在日常工作中遇见一个问题,在监控100GE网络端口时,发现监控到的流量数据在大于30多G左右的时候会出现无法显示的现象,如下图所示:
通过对监控的数据源进行debug发现,在创建初始监控数据的时候,Cacti通过rrd命令创建了监控数据的原始rrd文件并定义了其支持的最大值。此最大值通过snmp采集的时候获取端口speed数据写入,应该是在获取100GE端口的带宽数据时出现了错误。
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文件进行最大值修改
具体命令为:
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即可。
上千个rrd文件,1分钟内全部搞定,改完后效果:
此次3z学堂给大家分享的时平时工作中遇到的一些维护问题,后续也会继续给大家分享,希望能够帮助到遇到同样问题的朋友。