cacti修改rrd监控数据

cacti介绍

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据php货币使用 RRDtool绘画图形,而且你php7完全可以不需要了解RRDtool复杂的参数。因此,snmphp文件用什么软件打开p和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关html系着数据存储和图表的生成。

snmp抓到数据不是存储在mylinuxsql中,而是存在rrdtool生成的rrd文件中(在c喜马拉雅听书免费版官方下载acti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,一五计划任务rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。


                                            cacti修改rrd监控数据

rrdtool介绍,以及使用

RRDtool 代表 “Round Robin D系统运维包括哪些内容atabase tool” ,作者同时也是 MRTG 软件的发明人。官方站点位于http://oss.html文件怎么打开oet星门老鹰iker.ch/rrdtohtml5ol/ 。
所谓的“Round Robin”php什么意思 其实是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。我们可以把用于存储数 据的数据库的空间看成一个圆,上面有很多刻度数据分析。这些刻度所在的位置就代表用于存储数据的地方。所谓指针,可以认为是从圆心指向这些刻度的一条直线。指针会厦门理工学院 随着数据分析数据的读写自动移动。要注意的是,这个圆没有起点和终点,所以指针可以一直移动,而不用担心到达终点后就无法前进的问题。在一段时间后,当所有的空间 都存满了数据,就又从头开始存放。这样整数据废土个存储空间的大小就是一个固定的数值。所以RRDtool 就是系统运维工资一般多少使用类似的方式来存放数据的工具, RRDtoolphp中文网 所使用的数据库文件的后缀名是'.rrd’。

关键命令


                                            cacti修改rrd监控数据

查询数据


                                            cacti修改rrd监控数据

导出数据


                                            cacti修改rrd监控数据

冬日计划任务入数据


                                            cacti修改rrd监控数据

rrd文件的导出及数据修改

cacti中,rrd文件一般数据透视表保存在/var/www/html/rra/路径下。

可以在图形php是什找到使用的rrd文件,如下所示:


                                            cacti修改rrd监控数据


                                            cacti修改rrd监控数据

确定了一五计划任务rrd文件,就可以准备导出修改了。

在修改之前,先要关闭cacti的计划任务,如下所示:


                                            cacti修改rrd监控数据


第一条,10分钟执行一次,ntp同步;
第二条,5分执行一linux操作系统基础知识次,采集数据。
导出和修改之前,建议吧第二条计划任务删php中文网除,这样避免了在修改数据的时候还在执行更新html标签导致异常。在完成修改导入后,在恢复此计划任务。
为了不出现数据丢失等问题,导出修改数据和导入动作,最好在5分钟内完成。

按照如下方式导厦门理工学院出rrd为xml格式

cp 316.rrd 316.rrd.bak #备份
rrdtool dump 316.rrd > 316.xml #导出为xml

导出的xml文件如下所示:


                                            cacti修改rrd监控数据


                                            cacti修改rrd监控数据


其中,xml文件中<dadabase>&l计划任务t;/php是前端还是后端datbase>节点就是保存的数据,采用科学计数法
说明:
1.rrd中,是以unix时间戳的方式记录数据的,它记录了从1970年以来现在所有保存的数据。所以很多时间的数据是NaN,空值;
2.xml中,<!--->是注释,注释的内容就是时系统运维主要做什么间,如2021-11-11,是给人看的,但是在xml和rrd中不会被执行或者显示。
3.从xml中可以看出,rrd是以时序来保存数据,以300秒为步长,依次按照时间戳记录从1970年以来的的数据。

关于xml中其他节点,无需我们考虑,我们只要考虑<row><v>节点数值就可以了。

修改xml

1.使用记事本,或者notepad软件,直接搜索替换。比如找到所有2021-11-11的数据,一条一条的修改。这种方式时候修改空值,数据库其他时候无能为力。

2.使用excel读取xml,可以做phpmyadmin到批量修改。如下所示:


                                            cacti修改rrd监控数据

可以批量用公式修改,但是没有显示时间(<!---->表示注释),所有无法修改指定时间段的数据。

导入修改数据

修改完成后按照如下方式导入

rm 316.rrd #删除旧数据
rrdtool restore 316.xml 316.rrd  #导入修改后的数据

修改完成后,可以查询以下数据是否存在

rrdtool fetch 316.rrd AVERAGE --start $(date -d '1 days ago' +%s) --end $(date -d now +%s) 


                                            cacti修改rrd监控数据


                                            cacti修改rrd监控数据


确定数据存在后,恢复计划任务,重建采集器,这样就把数据改好计划任务自动关机

修改前:


                                            cacti修改rrd监控数据

修改后:


                                            cacti修改rrd监控数据

自动修改rrd脚本

小米路由们虽然能够导出数据修改,但厦门旅游必去十大景点是修改的时候很不方便,所以我就写了个脚本,全自动导出导入修改,修改一个月数据数据指标为php中文网80%
以下为脚本:

#coding=utf-8
#解析修改数值
#python2版本
#查询指定1个月数据,按照比例修改为80%
#使用前请先关闭*/5 * * * * php /var/www/html/poller.php > /dev/null 2>&1 计划任务
#修改完成后,再启动*/5 * * * * php /var/www/html/poller.php > /dev/null 2>&1 计划任务
#使用前先请安装rrdtool
#使用方式 python modity_xml_new.py /var/www/html/rra/1/333.rrd
#杨超 v1.0
import re
import os
import sys
import time
def percent(matched):
"""
对于匹配的数值比例
"""
value=float(matched.group('value'))
# value=int(format(value,'.10f')) #保留计算10位小数
return str(value*0.8) #80%的比例
def modify_xml(rrd_xml,rrd_xml_out,timerange):
"""
rrd_xml:原有数据
rrd_xml_out:修改后的数据
"""
with open (rrd_xml,'r') as f:
lines=f.readlines()
#print(lines)
with open (rrd_xml_out,'a') as f1:
for line in lines:
if timerange in line:
line_new= re.sub('(?P<value>\d.\d{8,20})',percent,line)
print line_new
f1.write(line_new)
else:
line_new=line
f1.write(line_new)
def modify_data(rrd_file,rrd_xml_out):
"""
删除原有rrd文件,不然无法导入
导入新数据
查询数据是否更改
"""
os.remove(rrd_file)
try:
cmdline_modify="rrdtool restore "+rrd_xml_out+" "+rrd_file
os.system(cmdline_modify)
except Exception as e:
print e
sys.exit(0)
time.sleep(5)
cmd_fetch="rrdtool fetch "+rrd_file+" AVERAGE --start $(date -d '1 month ago' +%s) --end $(date -d now +%s)"
os.system(cmd_fetch)
print "ok"
if __name__ == '__main__':
try:
rrd_file=sys.argv[1]
except FileNotFoundError:
sys.exit(0)
(name,ext)=os.path.splitext(rrd_file)
rrd_txt=name+'.txt'
rrd_xml=name+'.xml'
rrd_xml_out=name+'.new_xml'
rrd_file_bak=name+'.rrd.bak'
if os.path.exists(rrd_xml_out):
os.remove(rrd_xml_out)
if os.path.exists(rrd_file_bak):
os.remove(rrd_file_bak)
if os.path.exists(rrd_xml):
os.remove(rrd_xml)
timerange="<!-- 2021-11-"  #此处修改为要指定的时间范围
try:
cmd_line_bak="cp "+rrd_file+" "+rrd_file+".bak" #备份rrd文件
os.system(cmd_line_bak)
except Exception as e:
print e
sys.exit(0)
time.sleep(3)
try:
cmd_line_xml="rrdtool dump "+rrd_file+">"+rrd_xml #导出xml
os.system(cmd_line_xml)
except Exception as e:
print e
sys.exit(0)  #失败后退出
time.sleep(5)    #等待5秒,导出
modify_xml(rrd_xml,rrd_xml_out,timerange)
modify_data(rrd_file,rrd_xml_out)

执行效果如下:


                                            cacti修改rrd监控数据


                                            cacti修改rrd监控数据

真的,感觉工作又轻松了