继续探讨snmp在网络监控中的作用,通过对出口的流量数据的计算可以实现对互联网出口的监测,主要利用上一章的方法来实现,本章主要获得交换机端口的oid,我的设备是思科的6509。
string mcpu_oid="1.3.6.1.4.1.9.2.1.58.0"; //cpu利用率
string mram_used_oid1 = "1.3.6.1.4.1.9.9.48.1.1.1.5.1"; //内存使用情况(Processor)
string mram_unused_oid1 = "1.3.6.1.4.1.9.9.48.1.1.1.6.1"; //内存空闲情况
string mram_used_oid2 = "1.3.6.1.4.1.9.9.48.1.1.1.5.2"; //内存使用情况(I/O)
string mram_unused_oid2 = "1.3.6.1.4.1.9.9.48.1.1.1.6.2"; //内存空闲情况
string mFlow_bz1_Oid_In = "1.3.6.1.2.1.2.2.1.10.29"; //端口的In流量
string mFlow_bz1_Oid_Out = "1.3.6.1.2.1.2.2.1.16.29"; //端口的out流量
根据采集到的数据对端口流量值通过流量对时间的导数进行计算和归纳整理
private void bz1_Tick()
{
basic_snmp.Stop();
if (bz1_tq == 0)
{
bz1_t0 = GetFlow(mFlow_bz1_Oid_In);
bz1_tq = 1;
}
else
{
bz1_t1 = GetFlow(mFlow_bz1_Oid_In);
bz1_tq = 0;
if (bz1_t1 > bz1_t0) //从思科设备采集的数据是一个累计值,计数器是32位的,到达2^32次方是数据归零,图形类似尖波。
{
chart1.Series["bz1"].Points.AddY((bz1_t1 - bz1_t0) / timer_bz1.Interval * 1000 / 100000);
chart1.Series["sw2"].Points.AddY(t0/10240); //单独一条线显示
chart1.Series["sw3"].Points.AddY(t1/10240);
chart_bz1.Series["Series1"].Points.AddY((bz1_t1 - bz1_t0) / basic_snmp.Interval * 1000 / mMbps);
bz1_sms = 0; //初始化报警参数
}
if (bz1_t1 == bz1_t0) //前后获得数据相等时即可判断线路断
{
if (bz1_sms == 0)
{
SendSingleInfo("(Gi2/25)出口断,监测到流量为0");
bz1_sms = 1;
}
}
}
}
以图形化进行展示和