RSS

cacti网络流量数据导出工具

最近研究 rrd 文件结构,想用工具将 rrd 文件内的数据导出到一个 csv 文件,以便统计和以后插件。最近看了点 golang 的基础,于是就边学边查,写了个小程序,希望对大家有用。

工具要求:

  • rrdtool 1.4 版本以上,1.3 以下版本不能用(rrdtool -v,可查看 rrdtool 版本)
  • linux 系统,win 版本和 freebsd 版本目前还没有做出来

功能概括:

  • 读取指定 rrd 文件最后 288 条数据到 csv 文件(也就是一天,5 分钟一次)
  • 导出文件名为执行命令时间向前 86400 秒(24 小时)
  • 导出文件内容为时间,流出,流入,单位 Mbps

导出文件如图

11

下载地址:

32 位:https://dl.cactifans.com/tools/rrd_csv.x32.tar.gz
63 位:https://dl.cactifans.com/tools/rrd_csv.x64.tar.gz

更新历史

2014-04-23 更新:

1.添加 conf.json 配置文件
2.可以在 conf.json 里配置导出 csv 文件前缀,方便区别
3.导出流量单位设置为 Mbps,保留 4 位小数
4.可在 conf.json 里配置要读取的 rrd 文件及路径
 

使用方法:

1.下载对应版本文件任意目录下,并赋予可执行权限(以 32 版本为例)

wget https://dl.cactifans.com/tools/rrd_csv.x32.tar.gz
tar zxvf rrd_csv.x32.tar.gz
chmod +x rrd_csv/fetch

2.移动并编辑 conf.json 文件
移动 conf.json 到/etc 目录下

cp rrd_csv/conf.json /etc

conf.json 文件内容
2014-04-23_165103
deviename 为导出 csv 文件前缀
dbfile 为需要导出的 rrd 文件名以及路径

  1. 执行导出
./fetch

4.查看导出结果。
执行后没有报错,可在当前目录下查看,已生成以时间命名的 cvs 文件,形如

2014-04-23_181351

定时导出一天数据

1.下载导出工具到任意目录(我以 opt 目录为例)

cd /opt
wget https://dl.cactifans.com/tools/rrd_csv.x32.tar.gz
tar zxvf rrd_csv.x32.tar.gz
cp rrd_csv/conf.json /etc
chmod +x rrd_csv/fetch

2.添加计划任务

echo "6 12 * * * root /opt/rrd_csv/fetch">> /etc/crontab

注:建议每天凌晨 12 点 6 分导出,这样就可以导出前一天的完整数据
本人第一个 golang 程序,问题多多,以后会不断完善,希望大家多多指教啊。