`
Josh_Persistence
  • 浏览: 1632822 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

Win7安装和配置SNMP - java使用SNMP4j获取监控信息

    博客分类:
  • snmp
阅读更多

一、配置和启动SNMP服务

 

通过SNMP监控Windows主机需要在被监控的服务器上安装简单网络管理协议(SNMP)的Windows组件,以Windows 7系统为例:

首先,在控制面板中找到“卸载程序”;
 

控制面板

在弹出的窗口中单击“打开或关闭Windows功能”;
 

添加功能

勾选弹出窗口中的“简单网络管理协议(SNMP)”项后单击“确定”并根据提示完成安装即可。
 

完成SNMP服务的安装并重启计算机后,右键单击“计算机”选择“管理”
 

在弹出的“计算机管理”窗口中左侧导航栏中找到“服务”,并在右侧找到“SNMP Service”项;
 

鼠标双击“SNMP Service”选项,在弹出的窗口中切换到“安全”选项卡中,如上图添加“接受的社区名称”和接收哪些主机发出的SNMP数据包,在本例中,为了方便测试,可以添加localhost。

“接受的社区名称”是自己定义的任意字符都可以,接收那些主机发出的SNMP数据包定义成你的Nagios服务器即可。

 

到这里被监控端的Windows主机的SNMP服务就配置完成了。
 
二、使用简单的SNMP4j来进行SNMP数据的抓取
 package com.ebay.tools;


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.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class SNMPTestExample {

   public static void main(String[] argsthrows Exception {
       System.out.println(" --------------- SNMPExample start ---------------");
       
       TransportMapping<UdpAddress> transportMapping = new DefaultUdpTransportMapping();
       Snmp snmp = new Snmp(transportMapping);
       transportMapping.listen();
       
       ResponseEvent response = null;
       
       PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.2.0")));
        pdu.setType(PDU.GET);
        
        String address = "localhost" + "/" + 161;
        
        Address targetAddress = new UdpAddress(address);
       CommunityTarget target = new CommunityTarget();
       
       target.setCommunity(new OctetString("public")); // 改字符串是我们在上面配置的
       target.setAddress(targetAddress);
       target.setRetries(2);
       target.setTimeout(3000);
       target.setVersion(SnmpConstants.version2c);
       
        response = snmp.get(pdu, target);
       
        System.out.println("result: " + response.getResponse());
    
        System.out.println(" --------------- SNMPExample ended ---------------");
   }
}

 
如果你的SNMP的版本是version3,必须加入安全机制相关的代码:
 
import org.snmp4j.PDU;
import org.snmp4j.ScopedPDU;
import org.snmp4j.Snmp;
import org.snmp4j.Target;
import org.snmp4j.TransportMapping;
import org.snmp4j.UserTarget;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.MPv3;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.security.AuthMD5;
import org.snmp4j.security.PrivDES;
import org.snmp4j.security.SecurityLevel;
import org.snmp4j.security.SecurityModels;
import org.snmp4j.security.SecurityProtocols;
import org.snmp4j.security.USM;
import org.snmp4j.security.UsmUser;
import org.snmp4j.smi.Address;
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 SNMPExampleVersion3 {

   public static void main(String[] argsthrows Exception {
       TransportMapping<UdpAddress> transportMapping = new DefaultUdpTransportMapping();
       Snmp snmp = new Snmp(transportMapping);
       
       USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0);
       SecurityModels.getInstance().addSecurityModel(usm);
       
       transportMapping.listen();
       
       
       ResponseEvent response = null;
       
       ScopedPDU pdu = new ScopedPDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.2.0")));
        pdu.setType(PDU.GETNEXT);
        
        String[] communities = {"private", "cur", "console", "public", "dashboard"};
        
        // String address = "10.14.228.24"; // phxlb129a.phx.ebay.com        big ip
        // String address = "10.10.66.82"; // sr-filer07b.smf.ebay.com    filer
        String address = "localhost";  // lvslb05a.lvs.ebay.com   netscaler
        address = address + "/" + 161;
        
        for (String communityString : communities{
            Address targetAddress = new UdpAddress(address);
           Target target = new UserTarget();
           
           
              //添加用户
           snmp.getUSM().addUser(
               new OctetString("MD5DES"),
               new UsmUser(new OctetString("MD5DES"), AuthMD5.ID,
                 new OctetString("MD5DESUserAuthPassword"), PrivDES.ID,
                 new OctetString("MD5DESUserPrivPassword")));
             
             //设置安全级别
           target.setSecurityLevel(SecurityLevel.AUTH_PRIV);
           target.setSecurityName(new OctetString("MD5DES"));
           target.setVersion(SnmpConstants.version3);
           pdu.setContextName(new OctetString(communityString));
           target.setAddress(targetAddress);
           target.setRetries(2);
           target.setTimeout(3000);
           target.setVersion(SnmpConstants.version3);
           
        // response = snmp.send(pdu, getTarget(), null);
            response = snmp.get(pdu, target);
           
            System.out.println("result: " + response.getResponse());
        }
    
       
   }
}
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics