CollCiscoPixWithSNMP.java 6.96 KB
/*
 * Created on 2006-8-8
 *
 * 
 * Window - Preferences - Java - Code Style - Code Templates
 */
package com.sitech.ismp.coll;

/**
 * PIX平台 () 系统 OID
 * 
 * PIX 506 .1.3.6.1.4.1.9.1.389
 * 
 * PIX 515 .1.3.6.1.4.1.9.1.390
 * 
 * PIX 520 .1.3.6.1.4.1.9.1.391
 * 
 * PIX 525 .1.3.6.1.4.1.9.1.392
 * 
 * PIX 535 .1.3.6.1.4.1.9.1.393
 * 
 * 其它 .1.3.6.1.4.1.9.1.227 (初始PIX 防火墙OID)
 */
import java.util.Date;
import java.util.HashMap;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.adventnet.snmp.beans.SnmpTarget;
import com.adventnet.snmp.snmp2.SnmpOID;
import com.sitech.ismp.app.coll.RPCTarget;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;

/**
 * @author Administrator
 * 
 * 
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class CollCiscoPixWithSNMP implements CollCiscoPixMBean {
	SnmpTarget target = null;

	String ObjectIP = null;

	private boolean DEBUG = false;

	RPCTarget rpctarget = null;

	static Logger logger = Logger.getLogger("LOGER");

	String hostname = "";

	String community = null;

	String ip = null;

	int port = 0;

	String servicename = null;

	private Vector result = new Vector();

	public Vector coll(HashMap params) {

		String hostname = (String) params.get("HOSTNAME"); // 局域网内对应采集的主机名
		String ip = (String) params.get("IP"); // 要采集的weblogic7.0 IP
		int port = Integer.parseInt((String) params.get("PORT")); // SNMP端口
		this.hostname = hostname;
		this.ip = ip;
		this.port = port;

		logger.info(ip); // 记录日志
		coll();
		return result;
	}

	private void coll() {
		try {

			pix506();
			pix515();
			pix520();
			pix525();
			pix535();
			pixOther();

			String unitID = "10-12-11-10-10:" + hostname + "-total";
			// FM-00-04-003-03 主机状态 true 连接正常 false 连接失败可能宕机
			setResult("true", unitID, "FM-00-04-003-03");

		} catch (Exception e) {
			String unitID = "10-12-11-10-10:" + hostname + "-total";
			// FM-00-04-003-03 主机状态 true 连接正常 false 连接失败可能宕机
			setResult("false", unitID, "FM-00-04-003-03");
			logger.error(e);
		}
	}

	// pix506
	private void pix506() {
		System.out.println("Begin pix506()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.389", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pix506", "CM-00-02-001-10");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pix506()");
	}

	// pix515
	private void pix515() {
		System.out.println("Begin pix515()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.390", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pix515", "CM-00-02-001-11");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pix515()");
	}

	// pix515
	private void pix520() {
		System.out.println("Begin pix515()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.391", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pix520", "CM-00-02-001-12");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pix520()");
	}

	// pix525
	private void pix525() {
		System.out.println("Begin pix525()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.392", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pix525", "CM-00-02-001-13");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pix525()");
	}

	// pix535
	private void pix535() {
		System.out.println("Begin pix535()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.393", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pix535", "CM-00-02-001-14");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pix535()");
	}

	// 其它 (初始PIX 防火墙OID)
	private void pixOther() {
		System.out.println("Begin pixOther()");
		boolean bool = true;
		Vector vc_active = walkKPIInfo(".1.3.6.1.4.1.9.1.227", bool);
		if (vc_active.size() > 0) {
			String count = (String) vc_active.elementAt(0);
			setResult(count, "pixOther", "CM-00-02-001-15");
			// setResult((String)params.get("WEBLOGIC.server")+"@"+(String)params.get("WEBLOGIC.IP"),"serverListenAddress","CM-10-13-10-11");
		}
		System.out.println("End pixOther()");
	}

	private void setResult(String value, String unitID, String kpiID) {
		try {
			TblATO_KPIDETAIL record;
			record = new TblATO_KPIDETAIL();
			record.setCLL_TIME(new java.util.Date()); // 采集所消耗的时间
			record.setKPI_ID(kpiID); // kpi编号
			record.setKPI_VALUE(value); // 具体采集得到的值信息
			record.setUNIT_ID(unitID); // unit
			record.setCLL_TIME(new Date()); // 日期
			result.add(record);
		} catch (Exception e) {
			logger.error(e);
		}
	}

	//
	public Vector walkKPIInfo(String oid, boolean bool) {
		Vector tmp_result = new Vector();
		try {
			Vector tmp_oid = new Vector();
			target.setObjectID(oid);
			target.oidList[0] = new com.adventnet.snmp.snmp2.SnmpOID(oid);
			// Each
			// entry
			// contains
			// objects
			// for a
			// particular
			// file
			// system.(HP)
			int maxtry = 0;
			com.adventnet.snmp.snmp2.SnmpOID[] oidList = target
					.getSnmpOIDList();
			// System.out.println("oidList.length="+oidList.length);

			if (oidList == null) {
				System.out.println("oidList is null");
				return null;

			} else {
				SnmpOID rootoid = oidList[0];
				SnmpOID curroid = null;

				while (maxtry++ < 3000) { // limit the max getnexts to 5000

					String result1[] = target.snmpGetNextList();
					if (result1 == null) {
						target.oidList[0] = curroid;

						continue;
						// break;
					}
					if (!SnmpTarget.isInSubTree(rootoid, target.getSnmpOID()))
						break; // check first column
					// System.out.println("result1.length=" +result1.length);
					for (int i = 0; i < result1.length; i++) { // print the
						// values
						// System.out.println(target.getObjectID(i) + ": "
						// + result1[i]);
						tmp_result.add(result1[i]);
						tmp_oid.add(target.getObjectID(i));

					}

					if (result1[0].compareTo("NULL") == 0)
						break;
				}

				if (maxtry == 1) { // we did not get a valid row
					System.err
							.println("Request failed, timed out or no available data("
									+ oid + "). \n " + target.getErrorString());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tmp_result;
	}
}