首页 > 编程语言 > 详细

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

时间:2015-05-30 02:13:51      阅读:752      评论:0      收藏:0      [点我收藏+]

一、配置和启动SNMP服务

?

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

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

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

bubuko.com,布布扣

“接受的社区名称”是自己定义的任意字符都可以,接收那些主机发出的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[]?args)?throws?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[]?args)?throws?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());
? ? ? ??}
? ??
? ? ? ?
? ?}
}

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

原文:http://josh-persistence.iteye.com/blog/2215307

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!