视频网站为什么有人做随便来一个公司邮箱
视频网站为什么有人做,随便来一个公司邮箱,wordpress随机调用页面,制作图片的软件免费RRDtool作为一个合格的运维工程师#xff0c;监控技能必须是要掌握的#xff0c;当然监控的软件很多很多(cacti,nagios,zabbix...)。而生产环境中一般只运用1、2种而已。所以全部掌握这些有点不靠谱。所以选择其中一种掌握之即可#xff0c;当工作环境变化后还可以以之为跳板… RRDtool 作为一个合格的运维工程师监控技能必须是要掌握的当然监控的软件很多很多(cacti,nagios,zabbix...)。而生产环境中一般只运用1、2种而已。所以全部掌握这些有点不靠谱。所以选择其中一种掌握之即可当工作环境变化后还可以以之为跳板进行别的监控的学习。。。 笔者不记得什么时候收集的rrdtool的用法了所以参考的地址也不能贴出来了。忘原作者看到相似的地方见谅。 笔者老师为马哥教育的马老师。这篇文章也参考了其讲课视频。大家可以通过链接到马哥那观看其cacti视频。一、建立RRD数据库.rrd文件rrdtool [options] command command_options而commands包括create, update, updatev, graph, dump, restore,last, first, info, fetch, tune, resize, xport这一讲我们将着重介绍一下creat命令的使用123456rrdtool create filename[--start|-b start time][--step|-s step][DS:ds-name:DST:heartbeat:min:max]// DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max[RRA:CF:xff:steps:rows]我们用一个例子对整个语法进行解释以下都用这个例子说明参数的使用123456rrdtool create target.rrd--start 1023654125--step 300DS:mem:GAUGE:600:0:671744RRA:AVERAGE:0.5:12:24RRA:AVERAGE:0.5:288:31简单的先说吧create 很容易理解就是创建一个新的Round Robin Database (RRD) 数据库文件以存储信息。filename习惯上会以 .rrd 结尾请记住这个数据库文件的名字。--start 这个参数可以指定 filename 的数据记录起始日期,你可以指定为 1970 年至今的秒数参数为-b date -d 1970/01/01 %s如果你不指定那么起始时间默认就是现在。--step 采集数据的间隔时间,习惯上我们会设 300 (秒)当然你可以自行调整这也是RRD的优势所在。但是采集周期不应该过短也不应小于你的update rrd文件周期否则可能会造成服务器负载过重。后面两个参数需要慢慢理解我把语法和例子拿下来对比一下大家就可能明白了。[DS:ds-name:DST:heartbeat:min:max]// DS:ds-name:GAUGE | COUNTER | DERIVE | ABSOLUTE:heartbeat:min:max对比例子DS:mem:GAUGE:600:0:671744下面以例子来说明DS用来声明数据源的也可以理解为声明数据变量的关键字。这个是必须写的不能按照你的意愿修改成其他表述方式。DS-NAME变量名可以理解为你给这个数据源起的助记符简称DSN。当每一个刷新周期到来的时候数据文档中各变量对应的值就会被更新。这个变量对应的值在官方文档中也叫做主要数据点――PDPPrimary Data Point。DSTDS的类型通常有GAUGE, COUNTER, DERIVE, 和ABSOLUTE 四种下面依次介绍GAUGE我们用的最多的就是GAUGE了它的中文解释是测量。在这里它表示实际的值。比如说输入次序为98 100 98那么输出顺序也是98 100 98。COUNTER累计值自己进行计算比如说输入次序为98 100 98那么输出顺序也是2 -2怎么出来的这两个数值呢100-98 98-100其实就是两个差值它表示的是经过一个刷新周期的变化率。DERIVE也是累计值和COUNTER一样的唯一不同的是它不存在负值最小的是0不如-2那么它就只划0结果为 2 0ABSOLUTE如同COUNTER但COUNTER可能overflow(数值过大),所以会取绝对值补充COUNTER/DERIVE/AVSOLVTE 虽然都是取差值,但会再除以两次间隔间的秒数。例,两次间隔间为300秒,那画出来的就是 2/300,-2/300 的值再给出一个例子帮助大家理解Values 300, 600, 900, 1200 实际值输入值每隔300S输入一个Step 300 seconds 刷新周期COUNTER DS 1, 1, 1, 1 COUNTER定义的DS的值DERIVE DS 1, 1, 1, 1 DERIVE定义的DS的值ABSOLUTE DS 1, 2, 3, 4 ABSOLUTE定义的DS的值GAUGE DS 300, 600, 900, 1200 GAUGE定义的DS的值heartbeat 心跳有效期比如在例子中我们定义了心跳有效时间是600秒也就是两个刷新周期。举个例子在12点的时候没有产生数据那么前后300S共600S的平均值就 会绘成12点的值但如果在两个刷新周期内都没有接收到数据更新那么这个时候必须往数据文档中写入一个UNUNKNOWN值。这是 RRDTool的一个特别的地方。要知道MRTG在处理网络中断的时候记录的是0值。这个0和UN还是有一定区别的。min:max 记录数据的最小值和最大值DS数值的有效范围超出就是UN喽。也可以写成 U:U 代表不限范围。小技巧将数据源建立方式记为 三文字,三数字DS讲完了就该讲RRA了那么什么是RRA呢RRA 更简单它的作用就是定义更新的数据是如何记录的RRA 即 Round Robin ArchiveArchive是什么存档。比如我们每5分钟 产生一条刷新的数据那么一个小时就是12条。每天就是288条。这么庞大的数据量一定不可能都存下来。肯定有一个合并consolidate数据 的方式那么这个就是RRA的作用了。 下面具体介绍怎么应用RRA使用方法RRA:AVERAGE | MIN | MAX | LAST:xff:steps:rowsRRA用以声明RRAs的关键字CFconsolidation function 合并方式包含四类AVERAGE, MIN,MAX, LAST //平均值最大值最小值最后一笔上面说过了经过一个刷新周期会获得一个主数据点PDP将若干个PDPs使用合并方式CF合并后会产生一个合并数据点CDPconsolidated data point。xffxfiles factor 和unkown数据有关很多资料都取0.5step有step条PDP合并形成一条CDProw记录的合并数据点CDP条数我们在例子中对RRA是这样定义的RRA:AVERAGE:0.5:12:24 //1天RRA:AVERAGE:0.5:288:31 //1月对于第一个RRA12条的PDP每经过一个刷新周期产生一个PDP经过CFedAVERAGE也就是取平均值产生一个CDP24个 CDPs存档。我们一起来计算一下时间如果一个周期是300秒那么12个PDP的产生时间就是一个小时也就是一个小时产生一个CDP。24个 CDPs时间就是一天。说明这条通过这条RRA我们可以取得一天的数据值。一天后又经过一个小时。就会产生第25条那么如何记录这个第25条数据 呢根据我们这个RRA的定义它将会替代第一条CDP的位置。实例检测某核心交换的端口create_nic_7609.sh/usr/local/rrd/bin/rrdtool create /www/rrd/NIC_7609.rrd -s 300 \DS:ifInOctets1:COUNTER:600:U:U \DS:ifInOctets2:COUNTER:600:U:U \DS:ifInOctets9:COUNTER:600:U:U \DS:ifInOctets11:COUNTER:600:U:U \DS:ifInOctets14:COUNTER:600:U:U \DS:ifInOctets53:COUNTER:600:U:U \DS:ifOutOctets1:COUNTER:600:U:U \DS:ifOutOctets2:COUNTER:600:U:U \DS:ifOutOctets9:COUNTER:600:U:U \DS:ifOutOctets11:COUNTER:600:U:U \DS:ifOutOctets14:COUNTER:600:U:U \DS:ifOutOctets53:COUNTER:600:U:U \RRA:AVERAGE:0.5:1:4800 \RRA:AVERAGE:0.5:6:2400 \RRA:AVERAGE:0.5:24:1200 \RRA:AVERAGE:0.5:288:600 \RRA:MAX:0.5:1:4800 \RRA:MAX:0.5:6:2400 \RRA:MAX:0.5:24:1200 \RRA:MAX:0.5:288:600我们举例来看RRA:AVERAGE:0.5:1:603 \RRA:AVERAGE:0.5:6:603 \RRA:AVERAGE:0.5:24:603 \RRA:AVERAGE:0.5:288:800 \RRA:MAX:0.5:1:603 \RRA:MAX:0.5:6:603 \RRA:MAX:0.5:24:603 \RRA:MAX:0.5:288:800解释一下首先你要记得step我们设置为300秒那么0.5:1:603因为我们将step设置为300秒若原计算时间点为12:00记录时11:57:30~12:02:30的平均值为主这个值若在此时间点內只有一笔资料的话其意即是平均值所以此一值即表共要记录几笔603是指要存603笔超过603筆則最早一笔將被移出。0.5:6:603 仅就6解释取6笔资料(每笔为step值在此意即5分钟)为平均值( 30 分钟), 存 603 笔0.5:24:603 24 即2小时0.5:288:800 288 即1天请注意,不是0.5:1:603中的1 就是五分钟这个是依据你的--step值而定如果--step 3600,那0.5:6:603这一行就是六小 时合起來的平均值了。若将 AVERAGE 换成MIN/MAX 的意义则是取该时间点中 (如上例之5min/30min/2hr..)之最大值或最小 值而通常在监测系统时最大值与平均值是比较有实际意义的。下面这个图来帮助你记忆。RRA:MIN:0.5:1:600 \RRA:MIN:0.5:6:700 \RRA:MIN:0.5:24:775 \RRA:MIN:0.5:288:797 //一般可按cacti标准取值第二讲rrd数据的更新update在创建好文档后我们要用程序定时更新数据文档.rrd然后才能根据数据文档画图。以采集核心交换流量为例首先我们要抓到各端口的流量可以通过 snmp协议来取得数据。如果你机器上没有snmp那么安装最新的net-snmp包PS被监控端一般上安装的是net-snmp, 监控端安装的是net-snmp-utils,当然如果你需要被监控端添加通知故障功能的话也需要安装net-snmp安装完成后测试snmp在提示符下键入12345678910$ snmpwalkNo hostname specified.Usage: snmpwalk [options...] hostname {community} [objectID]UCD-snmp version: 5.1.2-h thishelp message.-H Display configuration file directives understood.-V display version number.-v 1|2c|3specifies snmp version to use.SNMP Version 1or 2c specific……出现以上信息表示net-snmp安装成功。snmp的使用# snmpwalk -v 2c 核心交换IP地址 设备的community_string OID具体的snmp用法及系统默认的OID还有Shell文件的执行方法可参考 cacti 中文论坛 的相关文档这里我就不废话了。我们这一讲将主要说说如何更新rrd文件信息。语法1rrdtool{update|updatev} filename [--template|-t ds-name[:ds-name]...] N|timestamp:value[:value...] at-timestampvalue[:value...] [timestamp:value[:value...] ...]例如$ rrdtool update tcpdump.rrd 1061811856:114:0:50:1199:0:821073上面的 1061811856 即时间值,如果就是要现在的时间值可以 N 代表但要转换成秒值通常我們都会用$ timestampdate %s 来转现在秒数,如果是某些特定时间,则可以$ timestampdate -d 2003/08/15 12:00 %s后面跟着所有的更新的数据按照DS定义的顺序用冒号格开。关于更新的数据需要你写个小程式取数据,或用snmpget/snmpwalk抓资料来做rrdtool update然后用crontab根据你在rrdtool create 时的step决定执行的时间点。这里就应该用到shell的知识了最常见的就是用Shell的正则表达式过滤通过 snmp取得的信息我们看到了通过snmp取得的核心交换的信息是非常之多的这些信息当然不可能都用到我们要从中选取我们要的信息。我们使用正则表达式对字符流进行过滤并排列成我们需要的方式。对于正则表达式这里不做解释大家可以通过参考一些书辅助一些例子学习。我们要取得的是端口的流入和流出的数据所以我们使用snmp中的两个选项ifInOctets和ifOutOctets 。分别对应的是端口的流入流量和流出流量。特别地对于采集100M及其以下的端口流量这两个参数是完全正确的但是如果是1000M的端口就会出现流量和实际值相差甚远。在查过很多资料后发 现原因是这样方式的计数模式计数字长为32bit如果采集1000M端口数据会发生数据溢出。我们要使用64bit的字长来计数。所以我们应该选用 的OID参数为ifHCInOctets和ifHCOutOctets。让我们来看个例子RRD_FILE/www/rrd/NIC_7609.rrd .rrd数据文档的位置sec300 //睡眠时间也就是采集周期while [ 1 ] //用一个循环dorrd_data //下面实际用到的是正则表达式的串拼接rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.1 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.2 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.9 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.11 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.14 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCInOctets |grep .*ifHCInOctets.53 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.1 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.2 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.9 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.11 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.14 | sed -e s/.*: \(.*\)$/\1/| tr \n :rrd_data $rrd_datasnmpwalk -v 2c IP地址 -c snmp团体名 ifHCOutOctets |grep .*ifHCOutOctets.53 | sed -e s/.*: \(.*\)$/\1/| tr \n \0nowdate %s //当前时间距离1970的秒数/usr/local/rrd/bin/rrdtool update $RRD_FILE $now:${rrd_data} //调用更新指令sh ./NIC_7609_Graph.sh //调用绘图脚本画图下面一节就介绍sleep $sec //休息等待下一个周期的到来done //循环体结束[补充]如果你得到了如下提示IF-MIB::ifHCInOctets No Such Object available on this agent at this OID有可能你的网卡是100M那么就用ifOutOctets来测试就可以了。rrdtool第三讲画图画图的语法很多我只把最有用的列出来有兴趣的朋友可以到官方网站上去查Manual。方法rrdtool graph p_w_picpath-filename参数介绍如下p_w_picpath-filename:图的文件名,比如test.png等[-s|--start seconds]绘图起始时间预设是一天前(-1d)可用-s date …来指定时间[-e|--end time]绘图结束时间, 预设是现在(now),除date 的应用外,可用 -e -1w 表示绘图的时间结束于一周前[-t|--title title]图上显示的标题[-v|--vertical-label text]Y轴上的说明文字[-w|--width pixels]绘图区域画图区宽的大小[-h|--height pixels]绘图区域画图区高的大小-uY轴正值高度-lY轴负值高度--no-minor 不要副格线DEFDefine就是定义一个变量语法DEF:vnamerrd_filename:DS_name:CF用如下表示更清楚一些DEF:vnamerrd_filename:DS_name:[AVERAGE|MAX..]主要用处在于您要取出哪个 RRD 档案的 DSN 到这个 graph 來。从上很容易看出你要定义一个虚拟的变量变量从.rrd数据文件中取得数据源DS经过数据合并CF后的数据。看到这里大家应该知道前面在定义文档中为什么有那么多的参数其实都是为了绘图做准备的。① vname虚拟变量名我们自己取的以后还要用到。② rrd_filename:DS_name:CF 数据文件.rrd的全路径数据源变量合并方法。举个例子吧DEF:in_bytes_1$RRD_PATH:ifInOctets1:AVERAGE然而我们觉得光有记录的数据源变量还是不够的我们希望这些数据源变量可以计算。比如我希望把某两个端口的流量加在一起作为一个变量画图那么这是我们就需要CDEFCDEF 一個虚拟的变数,其值为 DEF 的某些运算,语法如下语法CDEF:vnamerpn-expression先举一个例子我们从例子中说明问题。我们取得某端口流入流量的字节数我们希望画在图上的是bit为单位很明显我们要将字节数乘以8。例DEF:in_bytes_1$RRD_PATH:ifInOctets1:AVERAGE //这句刚刚说过了CDEF:in_bits_1 8,in_bytes_1,* //将DEF中定义的in_bytes_1×8放在in_bits_1很好理解吧那为什么不写成in_bits_1 in_bytes_1* 8现在我们回到语法解释rpnReverse Polish Notation逆波兰表达式它的语法规定表达式必须以逆波兰表达式的方式给出。那么什么是逆波兰表达式呢逆波兰表达式又叫做后缀表达式。哈哈google吧。正常的表达式 逆波兰表达式ab a,b,a(b-c) a,b,c,-,a(b-c)*d a,d,b,c,-,*,那么a13 就写成 a1,3 了。http(smtphttptelnet)/1024 写成什么呢http1024,smtp,http,telnet,,,/下面终于到画图了最常用的是线和区域。从图中可以看出有两种表示流量的方式流入用绿色的区域AREA流出用蓝色的线LINE。这就是画图的几个元素。我们还是先看一下语法。AREA:vname[#rrggbb[:legend]]LINE{1|2|3}:vname[#rrggbb[:legend]]STACK:vname[#rrggbb[:legend]]① vname根据虚拟变量vname画图。② #rrggbb颜色的16进制表示可以找个软件来看。③ legend对该颜色的提示最后会写在图上的。④ 特别的画线有粗细之分所以有LINE1LINE3line1最细LINE3最粗。⑤ AREA 可以画出资料数值至0之间的区块图⑥ STACK 是表现在的图的值,叠在上一个值上例子AREA:in_bits_1#00cc00: Current InLINE1:out_bits_1#0000ff: Current Out 请注意,如果使用 AREA/STACK 则需特別注意图盖图的问题,一定要先画大的值, 再画小的值,才会有层次的效果,不然,最大的数据若最后画,你就看不到前面的值了都被最后一个图给压过去了。关于图下面的提示怎么画呢我们必须使用这两条指令GPRINT和COMMENT语法GPRINT:vname:CF:formatCOMMENT:text没有什么难点有点像C语言的表达式举两个例子大家就会很好理解的。例COMMENT: Hello World .\c 以居中的方式显示Hello worldGPRINT:in_bits_1:AVERAGE:Average Current\:%8.2lf %S bps//显示in_bits_1的值精确到小数点后面两位这些说明性文字都可以用 \n 等换行符号例如:GPRINT:telnet:AVERAGE:%10.0lf \n意即要输出这段时间中 (-s ~ -e 中,telnet的平均值,%10.0lf 则是为了好算位置)例子1#tcpdump.shRRD_PATH/root/study/tcpdump.rrdp_w_picpath_path/root/study/htmlsec300killall tcpdumpmv ip.packet ip.packet.1tcpdump -w ip.packet tcp or udp or icmp scan_port23 25 53 80 110rrd_datafor sport in $scan_portdoporttcpdump -r ip.packet.1 port $sport -v | sed -e s/.*, len \(.*\))/\1/g | tr \n portecho ${port}0| bcportexpr $port / $secrrd_data$rrd_data$port:donetotaltcpdump -r ip.packet.1 -v |grep -v config| sed -e s/.*, len \(.*\))/\1/g | tr \n total echo ${total}0 | bcnowdate %secho rrdtool update tcpdump.rrd $now:$rrd_data$total tcpdump.cmdrrdtool update tcpdump.rrd $now:$rrd_data$totalp_w_picpath_path/home/httpd/html/enum/studynowdate %Y/%m/%d %H:%M:%Sstart_timedate -d 2003/08/12 19:00 %stimehour day week month yearfor t in $timedo/usr/local/bin/rrdtool graph $p_w_picpath_path/example-$t.png \--title 本機重要 port 流量 \DEF:t1$RRD_PATH:telnet:AVERAGE \DEF:t2$RRD_PATH:smtp:AVERAGE \DEF:t3$RRD_PATH:domain:AVERAGE \DEF:t4$RRD_PATH:http:AVERAGE \DEF:t5$RRD_PATH:total:AVERAGE \CDEF:v1t1,t2,t3,t4,,, \CDEF:v2t1,t2,t3,, \CDEF:v3t1,t2, \CDEF:v4t1 \CDEF:v5t5,1024,/ \COMMENT:各 PORT 流量统计---最大------平均-------最小-------?#123;在\n \AREA:v1#339966:HTTP \GPRINT:t4:MAX: %12.0lf \GPRINT:t4:AVERAGE:%12.0lf \GPRINT:t4:MIN:%12.0lf \GPRINT:t4:LAST:%12.0lf \n \AREA:v2#ffff00:DNS \GPRINT:t3:MAX: %12.0lf \GPRINT:t3:AVERAGE:%12.0lf \GPRINT:t3:MIN:%12.0lf \GPRINT:t3:LAST:%12.0lf \n \AREA:v3#FF0000:SMTP \GPRINT:t2:MAX: %12.0lf \GPRINT:t2:AVERAGE:%12.0lf \GPRINT:t2:MIN:%12.0lf \GPRINT:t2:LAST:%12.0lf \n \AREA:v4#0000ff:TELNET \GPRINT:t1:MAX: %12.0lf \GPRINT:t1:AVERAGE:%12.0lf \GPRINT:t1:MIN:%12.0lf \GPRINT:t1:LAST:%12.0lf \n \LINE2:v5#000000:全部(Kb) \GPRINT:v5:MAX: %12.0lf \GPRINT:v5:AVERAGE:%12.0lf \GPRINT:v5:MIN:%12.0lf \GPRINT:v5:LAST:%12.0lf \n \COMMENT:\n \COMMENT:\n \COMMENT: Last Updated: $now \-v per second (bytes) -M -U 10 \-Y -X b -h 200 -w 480 -s date -d -1 $t %sdone例子2NIC_7609_Graph.sh绘图的时候我们还特别画出了采集端口的日流量、周流量、月流量和年流量。配合Shell脚本的使用可以达到很好的效果。p_w_picpath_path/www/web/nicp_w_picpathsRRD_PATH/www/rrd/FJNUNIC_7609.rrdport1 2 9 11 14 53 端口列表for p in $port 对每个端口的循环doDEFinDEF:in_bytes_$p$RRD_PATH:ifInOctets$p:AVERAGEDEFoutDEF:out_bytes_$p$RRD_PATH:ifOutOctets$p:AVERAGECDEFCDEF:in_bits_$p8,in_bytes_$p,* CDEF:out_bits_$p8,out_bytes_$p,*ddatedate 取得当前日期以下流入DRAW_INCOMMENT:\Last updated time : $ddate\c\ #最后更新DRAW_IN${DRAW_IN} COMMENT:\\n\ 换行DRAW_IN${DRAW_IN} AREA:in_bits_$p#00cc00:\ Current In \n\ 流入流量DRAW_IN${DRAW_IN} COMMENT:\ \ GPRINT:in_bits_$p:LAST:\Last Current\:%.2lf%S bps\ 流入当前流量文字提示DRAW_IN${DRAW_IN}GPRINT:in_bits_$p:AVERAGE:\Average Current\:%.2lf%S bps\ 流入平均流量文字提示DRAW_IN${DRAW_IN} GPRINT:in_bits_$p:MAX:\Max Current\:%.2lf%S bps\n\流入最大流量文字提示以下流出DRAW_OUTLINE1:out_bits_$p#0000ff:\ Current Out\n\ 流出流量DRAW_OUT${DRAW_OUT}COMMENT:\ \ GPRINT:out_bits_$p:LAST:\Last Current\:%.2lf%S bps\ 流出当前流量文字提示DRAW_OUT${DRAW_OUT}GPRINT:out_bits_$p:AVERAGE:\Average Current\:%.2lf%S bps\ 流出平均流量文字提示DRAW_OUT${DRAW_OUT} GPRINT:out_bits_$p:MAX:\Max Current\:%.2lf%S bps\n\ 流出最大流量文字提示ttimed w m y 时间列表d日w周m月y年for t in $ttime 对每个时间循环dosecdate -v-1$t %s 绘图起始时间的确定cmd/usr/local/rrd/bin/rrdtool graph \$p_w_picpath_path/FJNUNIC_7609_IF${p}_${t}.png \--title ${ttitle} \-v Bits Per Second \-s $sec \-l 0 -h 150 -w 500 $DEFin $DEFout $CDEF $DRAW_IN $DRAW_OUT--color CANVAS#ffffff--color BACK#ffffff \--color FONT#000000 \--color MGRID#80C080 \--color GRID#808020 \--color FRAME#808080 \--color ARROW#ff0000 \--color SHADEA#404040 \--color SHADEB#404040eval $cmd 执行画图done 时间循环结束done 端口循环结束 转载于:https://blog.51cto.com/liyanxin/1342837
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/89140.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!