获取CACTI RRD文件每天峰值的SHELL

本文介绍了一个使用RRDTool进行流量数据抓取及分析的Shell脚本。该脚本能够从指定的RRD文件中获取过去几天的最大流量值,并将数据转换为易于理解的单位(如M或G)。此外,还展示了如何通过一系列复杂的命令处理和格式化数据,最后将结果保存到文本文件中供进一步分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
url="/var/www/html/rra/150/9517.rrd
/var/www/html/rra/256/11345.rrd
/var/www/html/rra/150/9518.rrd"
 
fff=`echo $url | awk '{print NF}'`
 
for((i=1;i<=3;i++))
do
criqi=`date +%s -d "2016-04-11 00:00:00"`
eriqi=`date +%s -d "2016-04-11 23:59:00"`
ccriqi=`echo "$criqi - 86400 * $i" bc`
eeriqi=`echo "$eriqi - 86400 * $i" bc`
dt=`date -d "1970-01-01 UTC $eeriqi seconds" +%F`
 
for((x=1;x<=$fff;x++))
do
uu=`echo $url | awk -v a=${x} '{print $a}'`
/usr/local/rrdtool/bin/rrdtool fetch $uu MAX --start $ccriqi --end $eeriqi | sed -e '/^$/d' grep -v "traffic_out" awk '{printf "%f\n",$2}' sed 's/\-nan/0.0000000000e+00/g' >> /tmp/test${x}
done
 
                          ff=`cat /tmp/test1 wc -l`
                          for((n=1;n<=$ff;n++))
                           do
                                for((y=1;y<=$fff;y++))
                                do
                                tt=`cat /tmp/test${y} | sed -n ${n}p`
                                echo $tt >> /tmp/fud
                                done
                                aa=`cat /tmp/fud awk '{sum+=$0}END{print sum}'`
                                re=`echo "$aa" awk '{sum=$0*8/1000000}END{printf "%.2f",sum}'`
                                echo $re >> /tmp/testz
                                rm -rf /tmp/fud
                          done
                                td=`cat /tmp/testz sort -nr |  sed -n 1p`
                                if [ `echo "$td > 1000"|bc` -eq 1 ];then
                                tpt=`echo "scale=3;$td / 1000" bc awk '{printf "%.2f",$0}'`
                                echo $tpt"G" $dt
                                echo "$tpt"G" $dt" >> /root/qz.txt
                                else
                                echo $td"M" $dt
                                echo "$td"M" $dt" >> /root/qz.txt
                                fi
 
for((b=1;b<=$fff;b++))
do
rm -rf /tmp/test${b}
done
rm -rf /tmp/testz
done;

运行结果如下:

1
2
3
4
5
[root@cacti]# sh get_in
2.35G 2016-04-10
3.69G 2016-04-09
6.84G 2016-04-08
[root@cacti]#




      本文转自flyingzf  51CTO博客,原文链接:http://blog.51cto.com/flyingzf/1767273,如需转载请自行联系原作者




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值