CollWebLogic.java 11.4 KB
package com.sitech.ismp.coll.middleware.weblogic;

import com.adventnet.snmp.beans.SnmpTarget;
import com.adventnet.snmp.snmp2.SnmpOID;
import com.sitech.ismp.check.downtime.CheckConnectionState;
import com.sitech.ismp.check.downtime.ParamterBean;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.ismp.coll.middleware.weblogic.impl.ICollWebLogic;
import com.sitech.ismp.coll.middleware.weblogic.impl.WebLogicCollFactory;
import com.sitech.util.Formater;

import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Vector;

public class CollWebLogic implements CollWebLogicMBean{

	SnmpTarget target = null;

	public Vector<TblATO_KPIDETAIL> getExecuteQueue(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getExecuteQueue(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getChannel(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getChannel(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getCluster(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getCluster(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getJDBC(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getJDBC(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getJMS(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getJMS(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getJVM(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getJVM(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getServers(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getServers(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getThreads(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getThreads(params);
		}
		return null;
	}

	@Override
	public Vector<TblATO_KPIDETAIL> getWebApps(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			return coll.getWebApps(params);
		}
		return null;
	}

	public void collWeblogic10WithJMX(HashMap<String, String> params) {
		WebLogicCollFactory factory = new WebLogicCollFactory();
		ICollWebLogic coll = factory.getCollInstance(params);
		if(coll != null){
			coll.collWeblogic10WithJMX(params);
		}
	}

    public Vector<TblATO_KPIDETAIL> collWeblogic10ForSXMobile(HashMap<String, String> params) {
        WebLogicCollFactory factory = new WebLogicCollFactory();
        ICollWebLogic coll = factory.getCollInstance(params);
        if(coll != null){
            return coll.collWeblogic10ForSX(params);
        }
        return null;
    }

    public Vector<TblATO_KPIDETAIL> getStatus(HashMap<String, String> params) {
        WebLogicCollFactory factory = new WebLogicCollFactory();
        ICollWebLogic coll = factory.getCollInstance(params);
        if(coll != null){
            return coll.getStatus(params);
        }
        return null;
    }

	@Override
	public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params) {
		String isPing = params.get("isPing"); // frank 2017-05-19 添加。Y进行ping操作,N不执行
		Vector<TblATO_KPIDETAIL> vector=new Vector<TblATO_KPIDETAIL>();
		if("Y".equals(isPing)){
			String kbp_class="10-12-11-20";
			String kpiId="FM-00-12-001-999";
			String serverip=params.get("SERVERIP");
			String servername = params.get("SERVERNAME");
			String unitId = kbp_class +":"+ Formater.neatenunitid(servername) + "-CONFIG";
			CheckConnectionState server=new CheckConnectionState();
			TblATO_KPIDETAIL kpidetail=new TblATO_KPIDETAIL();
			try {
				kpidetail.setUNIT_ID(unitId);
				kpidetail.setKPI_ID(kpiId);
				kpidetail.setKPI_VALUE(server.getPingState(new ParamterBean(serverip)));
				kpidetail.setCLL_TIME(new Date());
				vector.add(kpidetail);
			} catch (ParseException e){
				e.printStackTrace();
			}
		}
		return vector;
	}


	/**
	 * @author pc103
	 * @date 2006-07-21
	 * @param oid
	 * @param bool
	 * @return vector 参数说明书: oid-----对应weblogic控制台监控的性能指标id(关键) bool----无多大用处
	 *         功能:储存各采集结果 返回类型:vector
	 *
	 */
	private Vector<String> walkKPIInfo(String oid, boolean bool) {
		Vector<String> tmp_result = new Vector<String>();
		try {
			Vector<String> tmp_oid = new Vector<String>();
			target.setObjectID(oid);
			target.oidList[0] = new SnmpOID(oid);
			int maxtry = 0;
			SnmpOID[] oidList = target.getSnmpOIDList();
			if (oidList == null) {
				System.out.println("oidList is null");
				return null;
			} else {
				SnmpOID rootoid = oidList[0];
				SnmpOID curroid = null;
				while (maxtry++ < 3000) {
					String result1[] = target.snmpGetNextList();
					if (result1 == null) {
						target.oidList[0] = curroid;
						continue;
					}
					if (!SnmpTarget.isInSubTree(rootoid, target.getSnmpOID()))
						break;
					for (int i = 0; i < result1.length; i++) {
						tmp_result.add(result1[i]);
						tmp_oid.add(target.getObjectID(i));
					}
					if (result1[0].compareTo("NULL") == 0)
						break;
				}
				if (maxtry == 1) {
					System.err
							.println("Request failed, timed out or no available data("
									+ oid + "). \n " + target.getErrorString());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return tmp_result;
	}

	private static String read(String prompt) {
		Scanner scanner = new Scanner(System.in);
		System.out.print(prompt);
		return scanner.nextLine();
	}

	public static void main(String[] argv) {
		System.out.print("==========CollWebLogic==========");
		String ipAddr = read("IP_ADDR(remote host ip):");
		String port = read("PORT(console port):");
		String snmpV = read("SNMP_VERSION(1/2/3):");
		String serverName = read("SERVERNAME(weblogic domain):");
		String community = read("COMMUNITY(public):");
		String version = read("VERSION(weblogic version 8/9/10/11/10SX):");
//        String collsers = read("CollServers(AdminServer):");
//        String username = read("Username(weblogic10):");
//        String password = read("Password(weblogic10):");
//        String domain = read("Domian(base_domain):");
		String methodStr = read("METHOD(0:getAll, 1:getExecuteQueue, 2:getChannel, 3:getCluster, 4:getJDBC, 5:getJMS, " +
				"6:getJVM, 7:getServers, 8:getThreads, 9:getWebApps, 10:collWeblogic10ForSXMobile):");
        System.out.print("==========CollWebLogic==========");
//		String ipAddr = read("IP_ADDR(remote host ip):");
//		String port = read("PORT(console port):");
////		String snmpV = read("SNMP_VERSION(1/2/3):");
////        String serverName = read("SERVERNAME(weblogic domain):");
////        String community = read("COMMUNITY(public):");
//        String version = read("VERSION(weblogic version 8/9/10/11/10SX):");
//        String collsers = read("CollServers(AdminServer):");
//        String username = read("Username(weblogic10):");
//        String password = read("Password(weblogic10):");
//        String domain = read("Domian(base_domain):");
//		String methodStr = read("METHOD(0:getAll, 1:getExecuteQueue, 2:getChannel, 3:getCluster, 4:getJDBC, 5:getJMS, " +
//                "6:getJVM, 7:getServers, 8:getThreads, 9:getWebApps, 10:collWeblogic10ForSXMobile):");

      /*  String ipAddr = "172.201.0.201";
        String port = "16600";
        String snmpV = "2";
        String serverName = "admin_server";
        String community = "public";
        String version = "10SX";
        String collsers = "MookerAdminServer,Server20000";
        String username = "weblogic";
        String password = "weblogic123";
        String domain = "weblogic10SXtest";
        String jmxURL = "service:jmx:rmi:///jndi/rmi://172.21.0.201:7001/jmxrmi";
        String methodStr = "10";*/

		HashMap<String, String> params = new HashMap<String, String>();
		params.put("SERVERIP", ipAddr);
		params.put("PORT", port);
		params.put("SNMPV", snmpV);
		params.put("SERVERNAME", serverName);
		params.put("COMMUNITY", community);
		params.put("VERSION",version);


       /* params.put("JMXURL", jmxURL);
        params.put("VERSION", version);
        params.put("DOMAIN", domain);
        params.put("SERVER", ipAddr);
        params.put("COLLSERS", collsers);
        params.put("USERNAME", username);
        params.put("PASSWORD", password);*/

		Vector<TblATO_KPIDETAIL> result = new Vector<TblATO_KPIDETAIL>();
		CollWebLogic collector = new CollWebLogic();

		int method = Integer.parseInt(methodStr);
		switch (method) {
			case 0:
				result.addAll(collector.getExecuteQueue(params));
				result.addAll(collector.getChannel(params));
				result.addAll(collector.getCluster(params));
				result.addAll(collector.getJDBC(params));
				result.addAll(collector.getJMS(params));
				result.addAll(collector.getJVM(params));
				result.addAll(collector.getServers(params));
				result.addAll(collector.getThreads(params));
				result.addAll(collector.getWebApps(params));
				break;
			case 1:
				result.addAll(collector.getExecuteQueue(params));
				break;
			case 2:
				result.addAll(collector.getChannel(params));
				break;
			case 3:
				result.addAll(collector.getCluster(params));
				break;
			case 4:
				result.addAll(collector.getJDBC(params));
				break;
			case 5:
				result.addAll(collector.getJMS(params));
				break;
			case 6:
				result.addAll(collector.getJVM(params));
				break;
			case 7:
				result.addAll(collector.getServers(params));
				break;
			case 8:
				result.addAll(collector.getThreads(params));
				break;
			case 9:
				result.addAll(collector.getWebApps(params));
				break;
			case 10:
				result.addAll(collector.collWeblogic10ForSXMobile(params));
				break;
			case 11:
				collector.collWeblogic10WithJMX(params);
				break;
			default:
				break;
		}

		for (int i = 0; i < result.size(); i++) {
			TblATO_KPIDETAIL record = (TblATO_KPIDETAIL) result.get(i);
//            System.out.println(ato.UNIT_ID + " | " + ato.KPI_ID + " | " + ato.KPI_VALUE + " | " + ato.CLL_TIME);
			String insSql = "INSERT INTO TB_ATO_KPIDETAIL (KPI_ID, UNIT_ID, CLL_TIME, KPI_VALUE, EXT_INFO, DB_TIME, EXT_UNIT_ID, `INTERVAL`) " +
					"VALUES ('#KPI_ID#', '#UNIT_ID#', now(), '#KPI_VALUE#', null, now(), '10-12-11:weblogic10SXtest', #INTERVAL#);";
			insSql = insSql.replace("#KPI_ID#", record.KPI_ID);
			insSql = insSql.replace("#UNIT_ID#", record.UNIT_ID);
			insSql = insSql.replace("#KPI_VALUE#", record.KPI_VALUE);
			insSql = insSql.replace("#INTERVAL#", record.INTERVAL);
			System.out.println(insSql);
		}
	}

}