weblogic中snmp的使用

简介:
一些概念:
 SNMP: 简单网络管理协议,SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。目前, SNMP 有 3 种: SNMPV1 、 SNMPV2 、 SNMPV3。第 1 版和第 2 版没有太大差距,但 SNMPV2 是增强版本,包含了其它协议操作。与前两种相比, SNMPV3 则包含更多安全和远程配置。为了解决不同 SNMP 版本间的不兼容问题, RFC3584 种定义了三者共存策略。
SNMP OID: SNMP Object Identifiers(对象标示符),SNMP对象标识符(OID)是定义在特定MIB模式中的值,来定义一个特定的在MIB数据库中SNMP目标。SNMP OID是划界序列数字组成a.b.c...x.y.z的周期。它对信息的一个项目是一个独特的标识符,其是一个MIB的一部分。典型的OIDs能够有与它们相关的名字。OIDs在自然中是分等级的。因此1.2.3出现在1.3之前但是在1.2之后。MIB 会为其描述的每个受管对象分配一个唯一的、不可变的编号,称为对象标识符(Object Identifier,简称 OID)。每个 OID 包含一个从左到右的整数序列。此序列定义 MIB 树中的对象的位置,并指定通过树到达此对象的唯一路径。此路径中的每个节点均有一个编号和一个与编号关联的名称。 
    路径 .1.3.6.1.4.1 定义 private.enterprises OID,树上此节点下的每个编号代表树中为特定供应商(如 BEA)保留的分支。BEA MIB 注册在树中的位置 .1.3.6.1.4.1.140,WebLogic Server MIB 包含 .1.3.6.1.4.1.140.625 下的所有 OID
管理信息库(MIB) 是一个具有分层特性的信息的集合,我们可以通过 SNMP 去存取它。MIB 的成员是一些被管理的对象(Managed Object),以对象标示符(Object Identifiers)来区分它们。 


在bea目录下有一个BEA-WEBLOGIC-MIB.asn1文件,保存了snmp的配置,具体配置的含义可以参照:http://e-docs.bea.com/wls/docs81/snmp/index.html

如果想加入自己的OID,可以将将OID 相应的包放到 %WL_HOME%\server\lib\mbeantypes 目录下就可以了(这个我也没有试过)

要使用weblogic的snmp功能首先要在weblogic的控制台中启用snmp功能,然后就可以使用oid来获得堆栈、内存等使用信息了
在Services/SNMP下:


在weblogic中提供了1万多的oid可以给第三方软件使用,我们也可以使用unix自带的snmpwalk命令去取得各个oid的值,以下列出几个例子:
# jvm runtime Heap size
snmpwalk 
- v 2c  - public   192.168 . 88.160 : 161  . 1.3 . 6.1 . 4.1 . 140.625 . 340.1 . 30

#host used memory (by jrockit jdk)
snmpwalk 
- v 2c  - public   192.168 . 88.160 : 161   1.3 . 6.1 . 4.1 . 140.625 . 302.1 . 40

#The number of idle threads assigned to the queue
snmpwalk 
- v 2c  - public   192.168 . 88.160 : 161   1.3 . 6.1 . 4.1 . 140.625 . 180.1 . 25.32 . 48.101 . 49.102 . 50.102 . 52.97 . 51.101 . 102.102 . 100.98 . 57.56 . 55.53 . 57.54 . 56.98 . 98.101 . 51.53 . 54.100 . 101.52 . 57.53

#The date and time that the longest waiting request was placed 
in  the queue  -- 900563304
snmpwalk 
- v 2c  - public   192.168 . 88.160 : 161  . 1.3 . 6.1 . 4.1 . 140.625 . 180.1 . 30.32 . 48.101 . 49.102 . 50.102 . 52.97 . 51.101 . 102.102 . 100.98 . 57.56 . 55.53 . 57.54 . 56.98 . 98.101 . 51.53 . 54.100 . 101.52 . 57.53

其中第二个oid和jrockit有关,所有和jrockit有关的oid在默认情况下都是不可以使用的,必须在weblogic启动时将jdk改为jrockit jdk才可以,这个是bea公司自己的jdk

在java中我们也可以使用snmp4j去存取snmp的值,进行远程控制,下面一段代码就是用来取得所有的oid的:

package test;

import java.io.IOException;
import java.net.InetAddress;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.
event .ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
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  test1 {

    
public static void main(String[] args)
    
{
        
try{
            Snmp snmp 
= new Snmp(new DefaultUdpTransportMapping());
            CommunityTarget target 
= new CommunityTarget();//agent对象
            target.setCommunity(new OctetString("public"));//设置共同体名,没发现设置RWCommnity的方法,大概只能设一个.
            
            target.setVersion(SnmpConstants.version1);
//设置版本
            target.setAddress(new UdpAddress("127.0.0.1/161"));//设置IP地址和端口号,这里竟然用'/'来分隔,当初确实没有料到,JDOC的说明等于没有.
            target.setRetries(1);                      //设置重试次数
            target.setTimeout(5000);             //设置超时
            
            snmp.listen();                                 
//监听
            
            String m_oid 
= "1.3.6.1.4.1.140.625.10.1.0";
            
int w=0;
            
while(true{
                w
++;
                
//set pud type and set oid
                PDU request = new PDU();         //new request PDU包
                request.setType(PDU.GETNEXT); //设置PDU类型,
                
//            request.add(new VariableBinding(new OID("1.3.6.1.2.1.1"))); //OID添加
                
//            request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1"))); //OID添加
                request.add(new VariableBinding(new OID(m_oid)));
//                System.out.println("request UDP:" + request);//请求包内内容输出,
                PDU response = null;//定义response包
                ResponseEvent responseEvent = snmp.send(request, target); //发出request PDU
                
//接收response PDU
                response = responseEvent.getResponse();

                
//response PDU包解析
                if (response != null{
                    
if (response.getErrorIndex() == response.noError
                            
&& response.getErrorStatus() == response.noError) {
//                        System.out.println("no error.");
                        String pause = responseEvent.getResponse()
                                .getVariableBindings().toString();
                        String getvalue 
= pause.substring(
                                pause.indexOf(
""+ 2, pause.indexOf(']'));
                        String oid 
= pause.substring(pause.indexOf("VBS["+ 2,
                                pause.indexOf(
"="- 1);
                        System.
out.println(oid);
//                        System.out.println(response);
                        m_oid = oid;

                    }
 else {
                        System.
out.println("get error:"
                                
+ response.getErrorStatusText());
                        
break;
                    }


                }
 else {
                    System.
out.println("get response error");
                    
break;
                }

                
                
if (m_oid.equals("1.3.6.1.4.1.140.625.10.1.0")) {
                    
break;
                }

            }

            System.
out.println(":::::::" + w);
            
        }
 catch (IOException e){
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
    }

}


要特别注意ip、端口、版本号、community和配置的一致



    本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2007/09/24/904285.html,如需转载请自行联系原作者

相关文章
|
3月前
|
Java 应用服务中间件 Linux
centos7安装weblogic
centos7安装weblogic
|
负载均衡 Java 应用服务中间件
Weblogic的了解、安装及其使用(三)
Weblogic的了解、安装及其使用
1379 0
|
Oracle Java 关系型数据库
Weblogic的了解、安装及其使用(二)
Weblogic的了解、安装及其使用
1013 0
|
开发框架 Kubernetes 监控
Weblogic的了解、安装及其使用(一)
Weblogic的了解、安装及其使用
2469 0
|
安全 Oracle Java
Oracle Weblogic--CentOS Linux 8.5.2安装weblogic11G
Weblogic在centos上详细安装步骤及安装过程中可能遇到的问题
340 0
Oracle Weblogic--CentOS Linux 8.5.2安装weblogic11G
|
Oracle 关系型数据库 Java
EOS Platform 7.2下安装weblogic插件
在实际工作中,需要用到EOS Platform,这是一个基于Eclipse的开发工具,自带了Tomcat,可以满足大部分需要,但是有时候需要使用Weblogic,这就得手动安装Weblogic插件了。这个过程与Eclipse相同(Eclipse下安装weblogic插件),本文中在EOS Platform 7.2中安装Weblogic插件。
193 0
EOS Platform 7.2下安装weblogic插件
|
Oracle 关系型数据库 Java
Eclipse下安装weblogic插件
安装好weblogic dev版本(Windows下安装weblogic dev版本),可以在Eclipse中安装weblogic server tools插件,直接连接到weblogic server,发布、部署、调试都变得简单些。
691 0
Eclipse下安装weblogic插件
|
Oracle 关系型数据库 Java
Windows下安装weblogic dev版本
在开发过程中,有一种情况是比较尴尬的:需要用到某个软件,但是只需要用到这个软件中的一小部分功能,这样既浪费的磁盘空间,又浪费了CPU空间。比如Weblogic,完整版包括很多功能,但是开发过程中,只是需要创建数据源、部署项目,然后进行测试即可。所以开发过程中,需要一款简化的Weblogic(Weblogic开发版)是挺有必要的(如果电脑配置比较壕,也可以任性的使用完整版)。
332 0
Windows下安装weblogic dev版本
|
XML SQL 开发框架
Weblogic安装与配置详解
Weblogic安装与配置用Eclipse MyEclipse WebLogic8.1开发第一个Web程序1.安装jreEclipse虽然由java开发,但本身并不自带jre。所以你必须先自己安装,去http://java.sun.com/downloads下载最新J2SE1.4.2_03的jre安装文件j2re-1_4_2_03-windows-i586-p.exe。安装成功后,重启机器,并将jre的bin文件夹路径添加到系统环境变量PATH中,如:C:\Program Files\Java\j2re1.4.2_03\bin。
448 0
|
Java Linux 应用服务中间件
Linux安装weblogic服务
Linux安装weblogic服务 一、环境准备: Linux系统 jdk-7u75-linux-x64.tar.gz(http://pan.baidu.com/s/1kTh5Vx1) wls1212_dev.zip(http://pan.baidu.com/s/1nttDkq1) 二、安装步骤: 1、首先创建weblogic用户、用户组并设置主目录 [root@localhost ~]# useradd -d /weblogic weblogic [root@localhost ~]# passwd weblogic 更改用户 weblogic 的密码。
2830 0