用JAVA和SNMP实现流量统计.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用JAVA和SNMP实现流量统计

用JAVA和SNMP实现流量统计(二)计算流量统计的思路是:采集两次设备数据,用流量值的差值,除以时间的差值,即是当前的流量值,时间间隔我用的是5秒。这里需要注意的是,时间间隔不能太长。我们可以计算一下:2^32*2^3/(1024*1024*1024)=32???OID采集的是字节,要换成bit也就是说,OID值最多累积到32Gbit就会归零。对于一般的千兆级的网络设备来说,5秒的时间,最多也就累积5~6.25Gbit的流量,但对于万兆级的设备来说,5秒的时间,可能累积超过50Gbit的流量,这将导致OID值发生一次或两次归零,这就情况下,就要缩短间隔时间了,3秒就更适合一些。其实采集数据的间隔时间越短,就越容易采集到峰值,时间越长,计算出来的数据就越平均。由于我们还没有哪个设备的端口流量能在5秒内超过32Gbit,选5秒做为时间间隔还是很适合的。采集OID值的代码如下:import?java.io.IOException;import?.InetAddress;import?java.text.SimpleDateFormat;import?java.util.ArrayList;import?java.util.Calendar;import?java.util.Vector;import?org.snmp4j.AbstractTarget;import?org.snmp4j.CommunityTarget;import?org.snmp4j.PDU;import?org.snmp4j.Snmp;import?org.snmp4j.TransportMapping;import?org.snmp4j.event.ResponseEvent;import?org.snmp4j.mp.SnmpConstants;import?org.snmp4j.smi.Address;import?org.snmp4j.smi.GenericAddress;import?org.snmp4j.smi.OID;import?org.snmp4j.smi.OctetString;import?org.snmp4j.smi.UdpAddress;import?org.snmp4j.smi.VariableBinding;import?org.snmp4j.transport.DefaultUdpTransportMapping;//统计流量的类,取时间与流量public?class?Flow?{final?String?OCTER_STRING?=?admin;//?共同体final?String?TIME_OID?=?...0;//?时间OID,所有设备一样String?IpAddress;//?设备IP地址ArrayListString?FlowOidGroup;//?流量OID,可能有多个private?String?NowTime;//?端口流量的采集时间private?long?FlowValue;//?端口流量的值public?boolean?isSuccess?=?true;//?构造器:IP地址和流量OID组(因为可能需要多个端口的流量加在一起)public?Flow(String?IpAddress,?ArrayListString?FlowOidGroup)?{this.IpAddress?=?IpAddress;this.FlowOidGroup?=?FlowOidGroup;this.calc();}//?取当前时间public?String?getNowTime()?{return?NowTime;}//?取端口流量public?long?getFlowValue()?{return?FlowValue;}//?计算端口流量@SuppressWarnings(unchecked)private?void?calc()?{try?{Snmp?snmp;TransportMapping?transport;Address?targetAddress?=?GenericAddress.parse(udp:?+?IpAddress+?/161);transport?=?new?DefaultUdpTransportMapping();snmp?=?new?Snmp(transport);transport.listen();//?监听CommunityTarget?target?=?new?CommunityTarget();target.setCommunity(new?OctetString(OCTER_STRING));//?设置共同体名target.setAddress(targetAddress);//?设置目标Ag

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档