3月 252015
 

接上一版本工具,对工具进行改进,发布新版本。

工具要求:

  • rrdtool 1.4版本以上,1.3以下版本不能用(rrdtool -v,可查看rrdtool版本)
  • linux系统,win版本和freebsd版本不打算做
  • 导出rrd文件为网络设备流量

功能概括:

  • 读取rrd文件最近更新288条数据到csv文件(也就是一天,5分钟一次)
  • 导出文件名为执行命令时间向前86400秒(24小时)
  • 导出文件内容为时间,流出,流入,单位Mbps
  • 支持参数设置导出目录,导入rrd文件列表,支持自定义step(导出数据可能减少),支持自定义log文件,纪录导出日志
  • 支持多文件同时导出

导出效果
图新
2

csv文件内容

1

下载地址:
https://dl.cactifans.com/tools/rrd_fetch.tar.gz (x32&x64)

使用方法

下载并解压

wget https://dl.cactifans.com/tools/rrd_fetch.tar.gz
tar zxvf rrd_fetch.tar.gz
mv rrd_fetch/fetch_x64 .
chmod +x fetch_x64

查看帮助 ./fetch_x64 –help

[root@proxy rra]# ./fetch_x64 --help
Usage of ./fetch_x64:
  -list="list.csv": the list files of rrd files
  -log="/var/log/fetchinfo.log": Log file name
  -outdir="/opt/": the export files directory
  -step=300: the step of rrd files
[root@proxy rra]

解释一下:

-list为要导入rrd文件的列表文件,默认为程序目录下的list.csv文件
-log 为导出工具的日志文件,默认为/var/log/fetchinfo.log
-outdir为导出的csv文件目录,默认为/opt/
-step=为rrd文件的步进,默认为300

上述参数可自己设置,也可不带参数,不带将按照默认参数执行
编写要导出的rrd文件列表

vi list.csv

文件内容

/var/www/html/rra/9306_traffic_in_21.rrd,DX9306_ETH-Trunk1
/var/www/html/rra/9306_traffic_in_22.rrd,DX9306_ETH-Trunk2
/var/www/html/rra/9306_traffic_in_23.rrd,DX9306_ETH-Trunk3

第一列为要导出的rrd文件名称及路径,第二列为要导出csv文件的名称前缀
执行导出

./fetch_x64

执行后,可查看日志文件判断是否导出成功

cat /var/log/fetchinfo.log

2015/03/25 15:38:54 afetch.go:104: fetch rrd file:/var/www/html/rra/9306_traffic_in_21.rrd to csv files:/opt/DX9306_ETH-Trunk1_2015-03-24_10:20:02.csv successfully!
2015/03/25 15:38:54 afetch.go:104: fetch rrd file:/var/www/html/rra/9306_traffic_in_22.rrd to csv files:/opt/DX9306_ETH-Trunk2_2014-12-14_13:05:02.csv successfully!
2015/03/25 15:38:54 afetch.go:104: fetch rrd file:/var/www/html/rra/9306_traffic_in_23.rrd to csv files:/opt/DX9306_ETH-Trunk3_2015-03-24_10:20:02.csv successfully!

出现如下,表示导出成功,可查看导出的csv文件
3
至此导出成功。

实际使用

此工具可导出每一天流量数据,由于默认cacti只保存2天5分钟数据,因此设计此工具导出每天流量到csv文件以便以后查看,可在每天凌晨0点06分执行导出动作,这样就可以导出前一天的完整数据。
编写导出脚本

vi /opt/fetch.sh
/opt/fetch_x64 -list=/opt/list.csv -log=/var/log/fetch.log -outdir=/opt/export/

赋予执行权限并添加到计划任务

chmod +x /opt/fetch.sh 
echo "6 12 * * * root /opt/fetch.sh ">> /etc/crontab

这样就在每天凌晨0点06读取/opt/list.csv里的rrd文件并导出了前一天的数据到/opt/export/(目录要存在,结尾的“/”不可少)目录下,log文件在/var/log/fetch.log里,可查看导出是否成功。
欢迎大家使用,提出问题也建议。
PS:如何查看某一图新的rrd文件
4

打赏

  18 Responses to “cacti网络流量数据导出工具[第二版]”

  1. ./fetch_x64: symbol lookup error: ./fetch_x64: undefined symbol: rrd_info_r

  2. [root@cactifans home]# ./fetch_x64
    panic: runtime error: index out of range

    goroutine 1 [running]:
    main.main()
    /home/mygo/src/afetch.go:81 +0x16c6

    goroutine 17 [syscall, locked to thread]:
    runtime.goexit()
    /usr/local/go/src/runtime/asm_amd64.s:2232 +0x1

    这是什么问题呢?请问下大神

  3. 博主你好,感谢你分享的网络流量数据导出工具,对我非常有帮助,恰好我也正在学习go。
    方便的话,能分享一下此工具的源码学习一下吗,谢谢了。

  4. 博主你好,你分享的网络流量数据导出工具对我挺有帮助的,恰巧我也正在学习go,方便的话,能分享下找个工具的源码提供学习下嘛,谢谢了。

  5. 你好,文件不能下载了

  6. [root@cacti rra]# ./fetch_x64 –help
    ./fetch_x64: error while loading shared libraries: librrd.so.4: cannot open shared object file: No such file or directory
    这是什么问题啊。

  7. 搞一个月的流量还需要文件进行处理下,命令方面是不是看可以灵活一点

  8. 为什么数据和fetch得到的结果有出入,请问Mbps是怎么计算出来的。

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)