`
avery_leo
  • 浏览: 382684 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

以WEB方式监控平台运行情况

阅读更多

最近公司有个项目,其中有一块要求如下:


以WEB方式监控平台运行情况
监控对象包括:
监控对象 说明
ApplicationProgram 记录应用程序运行状态
CPU 记录cpu使用情况
Database 记录数据库运行状态
Disk 记录硬盘使用情况
Memory 记录内存使用情况
Network 记录网络运行状态
Service 记录服务运行状态
TableSpace 记录表空间使用情况

leader说要用到了SNMP,这方面以前没接触过,最近开始猛啃,但还是没有好的思路,各位兄弟多多指点,先谢过了。

 

需要系统开 snmp 服务,
写个网关采集信息保存到数据库,web浏览数据库。

snmp采集可用 uk.co.westhawk.snmp 或者 snmp4j

 

感谢hut给的思路

 

我找个例子,各位帮我看看:

package com.join.snmptext;


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

import java.awt.*;

import javax.swing.*;

import java.net.*;
public class SendSnmp extends JFrame 
{

	private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    
	private JLabel jLabel = null;
	private JLabel jLabel1 = null;
	private JLabel jLabel2 = null;
	private JLabel jLabel3 = null;
	
	private JTextField ipAddress = null;
	private JTextField Port = null;
	private JTextField Oid=null;
	private JTextArea  responseText=null;
	private JScrollPane jsp=null;
	
	private JComboBox version=null;
	private JButton Get=null;
	private JButton GetNext=null;
	private JButton End=null;

	private CommunityTarget target=new CommunityTarget();
	private static String ip="";//Ŀ��ip
	private int v;//�汾��
	
	public SendSnmp()
	{
		super();
		initialize();

	}
	private void initialize() 
	{
		this.setSize(428, 374);
		this.setContentPane(getJContentPane());
		this.setTitle("Send_Receive");
	}
	private JPanel getJContentPane()
	{
		if (jContentPane == null) {
			jLabel1 = new JLabel();
			jLabel1.setBounds(new Rectangle(0, 20, 107, 30));
			jLabel1.setText("����IP:");
			jLabel = new JLabel();
			jLabel.setBounds(new Rectangle(200, 20, 107, 30));
			jLabel.setText("Port:");
			
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.add(jLabel, null);
			jContentPane.add(getIpAddress(), null);
			jContentPane.add(jLabel1, null);
			jContentPane.add(getport(), null);
			
			jLabel2 = new JLabel();
			jLabel2.setBounds(new Rectangle(0, 60, 107, 30));
			jLabel2.setText("snmp�汾��:");
			jContentPane.add(jLabel2, null);
			
			jLabel3 = new JLabel();
			jLabel3.setBounds(new Rectangle(0, 150, 107, 30));
			jLabel3.setText("����OID:");
			jContentPane.add(jLabel3, null);
			
			jContentPane.add(getVersion(), null);
			jContentPane.add(getOid(), null);
           
			jContentPane.add(getGetNext(), null);
			jContentPane.add(getEnd(), null);
			jContentPane.add(getGet(), null);
			jContentPane.add(getJScrollPane(),null);
		}
		return jContentPane;
	}
	private JTextField getIpAddress() 
	{
		if (ipAddress == null) {
			ipAddress = new JTextField();
			ipAddress.setBounds(new Rectangle(40, 20, 100, 20));
         try{
         		InetAddress address=InetAddress.getLocalHost();
		       	String IP_name=address.getHostAddress();
		       	ipAddress.setText(IP_name);
		     }
		     catch(UnknownHostException e){ }
		}
		return ipAddress;
	}
	private JTextField getport()
{
		if (Port == null) {
			Port = new JTextField();
			Port.setBounds(new Rectangle(240, 20, 100, 20));
			Port.setText("161");
		}
		return Port;
	}
	private JTextField getOid()
	{
			if (Oid== null) {
				Oid = new JTextField();
				Oid.setBounds(new Rectangle(100, 150, 200, 20));
			}
			return Oid;
		}
	private JScrollPane getJScrollPane() {
		if (jsp == null) {
			jsp = new JScrollPane();
			jsp.setBounds(new Rectangle(100, 200, 250, 100));
			jsp.setViewportView(getReply());
		}
		return jsp;
	}
	private JTextArea getReply()
	{
			if (responseText== null) {
				responseText= new JTextArea();
				responseText.setLineWrap(true);
			}
			return responseText;
		}
	private JButton getGetNext() 
	{
	  if (GetNext == null) {
			GetNext = new JButton();
			GetNext.setBounds(new Rectangle(0, 230, 80, 20));
			GetNext.setText("GetNext");
			GetNext.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
				Set("GetNext");
			}});
		}
		return GetNext;
	}
	private JButton getEnd() 
	{
		if (End == null) {
			End = new JButton();
			End.setBounds(new Rectangle(0, 260, 80, 20));
			End.setText("End");
			End.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					System.exit(1);
				}
			});
		}
		return End;
	}
	private JButton getGet() 
	{
		if (Get == null) {
			Get = new JButton();
			Get.setBounds(new Rectangle(0, 200, 80, 20));
			Get.setText("Get");
			Get.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				Set("Get");
				}
			});
		}
		return Get;
	}
   	private JComboBox getVersion() 
   	{
		if (version== null) {
			String s[]={"SnmpV1","SnmpV2","SnmpV3"};
			version = new JComboBox(s);
			version.setBounds(new Rectangle(100, 60, 107, 20));
			version.addItemListener(new java.awt.event.ItemListener()  {
				public void itemStateChanged(java.awt.event.ItemEvent e) {
					if(version.getSelectedIndex()==0)
					{
						v=1;
					}	
					if(version.getSelectedIndex()==1)
					{
						v=2;
					}
					if(version.getSelectedIndex()==2)
					{
						v=3;
					}
				}
			});
		}
		return version;
	}
    public void Set(String type)
    {
       try{
       Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
       target = new CommunityTarget();
       target.setCommunity(new OctetString("public"));
       if(v==1)
       {
           target.setVersion(SnmpConstants.version1);
       }
       if(v==2)
       {
           target.setVersion(SnmpConstants.version2c);
       }
       if(v==3)
       {
           target.setVersion(SnmpConstants.version3);
       }
       ip=ipAddress.getText();
       String port=Port.getText();
       target.setAddress(new UdpAddress(ip+"/"+port));
       target.setRetries(1);
       target.setTimeout(1000);
       long l=System.currentTimeMillis();
       int iii=0;
       snmp.listen();
       PDU request = new PDU();
       String OID=Oid.getText();
       if(type.equals("Get"))
       {
    	   request.setType(PDU.GET);
           request.add(new VariableBinding(new OID(OID)));
       }
      if(type.equals("GetNext"))
      {
    	  request.setType(PDU.GETNEXT);
          request.add(new VariableBinding(new OID(OID)));
      }
      
    //request.setRequestID(new Integer32(-1111));
    //request.add(new VariableBinding(new OID(OID),new Integer32(Integer.parseInt("01111000011110000",2))));//����Ӧ�������Ҫ���õ�ֵ
    System.out.println("���͵�UDP:" + request);
    PDU response = null;
    ResponseEvent responseEvent = snmp.send(request, target);
    iii=1;
    long ll=System.currentTimeMillis()-l;
    System.out.println("����ʱ��<=>:"+ll+"    "+iii);
    response = responseEvent.getResponse();
    ll=System.currentTimeMillis()-l;
    if(response!=null){
        if(response.getErrorStatus()==response.noError){
            String pause=responseEvent.getResponse().getVariableBindings().toString();
            /*getvalue��ֵΪ��ӦOID��ֵ*/
            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);
            if(type.equals("Get"))
            {
            	responseText.setText("");
                responseText.append(change(getvalue));
            }
            if(type.equals("GetNext"))
            {
            	Oid.setText(oid);
            	responseText.setText("");
            	responseText.append(change(getvalue));
            }
        }
        
    }
   
    iii=0;
}
catch(Exception e){e.printStackTrace();}
}
    public String change(String ss){
        byte[] b=ss.getBytes();
        if(b.length==1){
            ss=String.valueOf(Integer.toHexString(b[0]));
        }
        return ss;
    }
	
  
	public static void main(String[] args) 
	{
		SendSnmp ss=new SendSnmp();
		ss.setVisible(true);
	}

}

 

运行后:

 

我的开发环境是winxp ,我配置snmp服务,运行上面的程序:

 

点击getnext按钮  在eclipse控制台显示结果如下:

 

RESPONSE[requestID=1884906071, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.9.1 = 0:00:00.00]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.9.1 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.9.2::
RESPONSE[requestID=2037320774, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.9.2 = 0:00:00.00]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.9.2 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.10.1::
RESPONSE[requestID=2119481164, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.10.1 = 160092]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.10.1 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.10.2::
RESPONSE[requestID=2024271974, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.10.2 = 8659471]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.10.2 = Null]]
???????<=>:16    1
1.3.6.1.2.1.2.2.1.11.1::
RESPONSE[requestID=802354818, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.11.1 = 5319]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.11.1 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.11.2::
RESPONSE[requestID=1494985237, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.11.2 = 8265]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.11.2 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.12.1::
RESPONSE[requestID=1804022706, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.12.1 = 0]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.12.1 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.12.2::
RESPONSE[requestID=2093407011, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.12.2 = 2983]]
?????UDP:GETNEXT[requestID=0, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.12.2 = Null]]
???????<=>:0    1
1.3.6.1.2.1.2.2.1.13.1::
RESPONSE[requestID=1788293473, errorStatus=Success(0), errorIndex=0, VBS[1.3.6.1.2.1.2.2.1.13.1 = 0]]

 

 

 如何解析上述的OID(对象标识符)和返回状态值,

 

 如何获取:

ApplicationProgram 记录应用程序运行状态
CPU 记录cpu使用情况
Database 记录数据库运行状态
Disk 记录硬盘使用情况
Memory 记录内存使用情况
Network 记录网络运行状态
Service 记录服务运行状态
TableSpace 记录表空间使用情况

 

各位帮忙分析一下,我对这不太熟悉,非常谢谢

分享到:
评论
1 楼 alphones 2008-06-24  
我也在看SNMP协议,关注ing

相关推荐

    WEB服务器运行状况监控

    搜藏了很久的web服务器监控程序,设定每隔一段时间访问一下网站,如果访问不到,就会发出报警。网站管理很有用的

    WEB服务器运行状况监控 v2.1

    可以实时监控您的WEB服务器的运行状况,并将运行数据实时显示在客户端。

    探测URL监控系统运行情况

    #功能:探测URL监控系统运行情况 #参数:URL地址,应用中文名称,唯一识别码(访问url后返回的特定字符串) #依赖脚本:数据库操作脚本dbExecurteSQL.sh #数据库操作脚本资源:...

    海康监控平台容器,通过web访问的方式整合几个不同时期建设的监控平台以及一大堆nvr。

    对不同时期建设的监控平台,通过web访问的方式进行了整合。使用了c#,webbrowser,指定了webbrowser的版本,在win10X64,win7 32的环境中测试通过。结构相当简单,就是一个有单点登录功能的容器而已,在首页的列表中...

    WEB服务器运行状况监控 v1.3.3

    可以实时监控您的WEB服务器的运行状况,并将运行数据实时显示在客户端服务器端功能:程序随系统启动,启动最小化,自动登陆Windows操作系统!锁定桌面与鼠标,输入密码解锁,禁用本地WINDWOS信使,发送运行数据至...

    Web服务器运行状态实时监控 v2.0.rar

    服务器端和监控端可独立运行,也可配合使用 服务器端主要功能: 服务器端的主要功能是对服务器自己提供的服务进行实时监控。一旦监控的服务出现问题,监控程序将按事先设定的操作来恢复服务,包括自动重启IIS服务...

    污水处理监控管理平台解决方案

    通过配置逻辑策略,在本地硬件策略引擎方式,使得可脱离于云平台在本地自动运行。通过边缘计算,采集控制终端可根据外界采集信息快速处理达到快速控制的需求。 ④、云策略控制功能 用户可在通过手机app、电脑WEB...

    Webserver.rar_cgi web_webserver_web页面 监控_嵌入式 webserver_监控 设备 管理

    基于Web方式的应用成为目前的主流,这种程序结构也就是大家非常熟悉的B/S结构,即在 嵌入式设备上运行一个支持脚本或CGI功能的Web服务器,能够生成动态页面,在用户端只需要通过Web浏览器就可以对嵌入式设备进行管理...

    Web服务器运行状态实时监控 v2.0

    服务器端和监控端可独立运行,也可配合使用服务器端主要功能: 服务器端的主要功能是对服务器自己提供的服务进行实时监控。一旦监控的服务出现问题,监控程序将按事先设定的操作来恢复服务,包括自动重启IIS服务,按...

    WebKeeper(自动监控Web服务器运行情况) V2.0.1 汉化绿色版

    一款可以自动监控Web服务器运行情况的软件,如果运行出现问题,软件将会通过email,信息或者声音等不同方式来提醒管理员,并且也会将事件记录到Log中去。 注册码: 用户名:HuYuFeng 序列码:594A24660598D757CABC1F...

    WEB服务器运行状况监控V1.6

    这是一个免费强大的web服务器运行监控工具。本人以测试过,安全无毒。有防止病毒篡改主页,自动恢复主页功能,防止iis假死。保证iis 的正常运作

    超详细大华视频监控web端调用demo_32_64_内涵完整说明文档

    内涵大华监控web端调用demo以及实例说明、绝对可用,内含32,64版本

    Web车辆监控系统网站源代码

    地图采用google地图API2.0,程序能够编译运行。功能有最后位置、实时监控、历史轨迹、地图标注、设置围栏、指令下发、里程统计、地图搜索、报警管理、用户和组管理、报表查询等功能。由于上传空间有限,数据库及配置...

    基于Go语言的ISM web组态监控软件源码

    项目名称:基于Go语言的ISM Web组态监控软件 核心技术:Go语言,辅以JavaScript、CSS、HTML 文件构成:总计4532个文件,包括但不限于以下类型: - 图像资源:PNG格式3519个,SVG格式328个 - 脚本文件:JavaScript...

    基于嵌入式Web的舰船电站运行参数网络监控系统研究.pdf

    基于嵌入式Web的舰船电站运行参数网络监控系统研究.pdf

    基于Silverlight的矿山监控系统的WEB发布

    遵循完整性、先进性和开放性的系统开发原则,本文通过NET开发平台,使用Silverlight技术及Web RIA Service技术,以"感知矿山"为基础,设计了全新的监控系统的WEB发布,实现了UI开发与设备开发的迭代。通过运行测试表明,该...

    汉光HOVA-SCADA-WEB电力监控系统 变配电电力监控系统.pdf

    运行可靠、性能稳定、功能可模块组合、部署云平台的电力监控系统,可帮助单位供配电运行管理部门随时随地在线掌握电力设备运行状态,计划性预防性安排维护更换,减少意外停电,保障可靠供电,提高供配电可靠性,降低...

    WebServices网站服务监控程序源码 1.0.rar

    这个是我以前写的一个我公司的WebServices服务监控程序,功能是:每隔5秒就访问一次web服务,如果登录不上去,则立刻发送邮件通知相关人员,保证服务器和服务的正常运行。 注意: 开发环境为Visual Studio 2010 ...

    大华web端调用监控-ocx插件 64位+32位

    大华视频集成平台OCX插件 64位+32位,目前发现的最新版本。 大华dvr的IE浏览器播放插件,安装后就能实时显示大华DVR监控视频了,可以实时查看或者回放视频等等。 解压后打开开始--运行--输入regsvr32 X:...

    WebChecker网站运行监控精灵6.0

    3、全面监控,无论是网络连接出现问题、服务器问题、web程序问题、网络攻击等,都可以监控 到并做出相应处理; 4、可以结合短信网关在网站出现问题时给指定手机发短信; 5、网站出现问题时可以运行指定程序或重启...

Global site tag (gtag.js) - Google Analytics