如何批量修改Cacti数据
之前可能是由于虚拟机被挂起,恢复后系统时间出现偏差,导致 cacti 的图形在某五分钟出现了一个峰值,既影响查看图形,还影响数据统计,于是打算把这一段错误的数据删掉。
但由于有一百多的接口,三百多的 rrd 数据库文件,一个个改也未免太傻了点。花了半天来研究怎么批量修改数据,记录一下。
###单个文件的修改方式 ####转换 rrd 文件至 xml
rrdtool dump 1.rrd > 1.xml
####修改 xml 文件
vi 1.xml
vi 1.xml
/<!-- 2015-04-07 00:00:00+08:00:00 CST
dd
:x
####转换回 rrd 文件
rrdtool restore 1.xml 1.rrd
###批量处理文件 首先理一下顺序
- 停止 snmp、mysql 服务
- 备份 rra 文件
- 批量转换 rrd 文件为 xml
- 批量删除 xml 文件中问题行
- 批量转换 xml 文件回 rrd
- 覆盖原有数据
- 重启服务
####停止 snmp、mysql 服务 目的是避免新数据采集导致问题
service snmpd stop
service mysqld stop
####备份 rrd 文件
tar -cvf rrd.tar /var/www/html/cacti/rra/
cp /var/www/html/cacti/rra/ ~/rra
####批量转换 rrd 文件为 xml
# cat rra2xml.sh
#!/bin/bash
rrddump="/usr/bin/rrdtool dump"
xmldir=~/rraxml/
rradir=~/rra/*
for file in `find ${rradir} -mtime -2 |awk -F\/ '{print $NF}'`
# find rra directory 2 days change
do
${rrddump} ${rradir}${file} > ${xmldir}/${file}
done
# ./rra2xml.sh
这里 ~/rraxml/ 文件夹中的 rrd 文件已经是 xml 格式了,但是为了省事就没变。
这段代码抄自网络,具体哪一个站点现在也找不到了。
####批量删除 xml 文件中问题行
由于本人才疏学浅,不会写脚本,于是拖到 Windows 上来操作。
使用的是一款名为 UltraReplace 的国人作品。
首先要在设置里添加 rrd 文件类型,然后选择“特征替换
”,起始特征字符串为“<!-- 2015-04-07 00:00:00+08:00:00 CST
”,结束特征字符串为“</row>
”,选择“+文件夹
”,然后点击“开始
”。
然后传回 Linux 服务器。
####批量转换 xml 文件回 rrd
# cat rra2xml.sh
#!/bin/bash
rrdrestore="/usr/bin/rrdtool restore"
xmldir=~/n/rraxml2/
rradir=~/n/rrd2/
for file in `find ${xmldir} -mtime -2 |awk -F\/ '{print $NF}'`
# find rra directory 2 days change
do
${rrdrestore} ${xmldir}${file} ${rradir}${file}
done
# ./rra2xml.sh
####覆盖原有数据
mv -f ~/rraxml/* /var/www/html/cacti/rra/
####重启服务
service snmpd start
service mysqld start
看峰值是否已被删除,过十分钟左右如果有新图形说明成功了。
最后修改于 2015-04-07