CollHostSeparatedKpi.java 2.83 KB
package com.sitech.ismp.coll.tivoli;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.HashMap;

import org.apache.log4j.Logger;

import com.sitech.util.Formater;
/**
 * 2012-1-28
 * CollHost类采集,是对多个指标采集的,此处针对单个指标进行采集。
 * 
 * @author zhurz
 *
 */
public class CollHostSeparatedKpi {
	
	private boolean debug = false;
	private SoapClient soapClient = null;
	private Logger logger = Logger.getLogger("COLL");
	/**
	 * 构造函数,初始化soap连接对象
	 */
	public CollHostSeparatedKpi()
	{
		String url = SoapParam.getString("SOAP_URL");
		soapClient = new SoapClient(url);
	}
	/**
	 * 获取cpu使用律
	 * @param params
	 * @return
	 */
	public Vector getCpuUtilizationRaste(HashMap params,String pre_unitid)
	{
		String host_name = (String) params.get("HOST_NAME");
		String neat_host_name = Formater.neatenunitid(host_name);
		String soap_host_name = SOAPITCMNameHelper.getSoapHostName(host_name);
		com.sitech.ismp.coll.CollBase collResult = new com.sitech.ismp.coll.CollBase();
		String Used_Real_Mem_Pct = "";
		try {
			// 采集PM-00-01-01-01/02/03/04/05
			// object=SMP_CPU
			System.out.println(new Date());
			String soap_cpu_SMPCPU = CollHostSoapHelperSeparatedKpi.getSoap_cpu_Busy(soap_host_name); // soap消息
			System.out.println("soap_cpu_SMPCPU:"+soap_cpu_SMPCPU);
			String soap_cpu_SMPCPU_res = soapClient.getSoapStringResponse(soap_cpu_SMPCPU);
			System.out.println("soap_cpu_SMPCPU_res:"+soap_cpu_SMPCPU_res);
			System.out.println(new Date());
			if (debug)
				System.out.println(new Date() + soap_cpu_SMPCPU_res);
			if (soap_cpu_SMPCPU_res.indexOf("faultstring") != -1) {
				collResult.addKPI("10-10-991:" + neat_host_name + "-kux",
						"FM-10-10-991-01", "DOWN");
			} else {
				collResult.addKPI("10-10-991:" + neat_host_name + "-kux",
						"FM-10-10-991-01", "UP");
			}

			List cpu_results = CollHostXmlHelper
					.parseSoapResponse(soap_cpu_SMPCPU_res);
			System.out.println("cpu_results:"+cpu_results);
			Map cpu_aggregate = null;
			// 得到 CPU_ID=aggregate 的那个 aggregate
			for (int i = 0; i < cpu_results.size(); i++) {
				Map cpu = (Map) cpu_results.get(i);
				System.out.println("Map cpu:"+cpu);
				String cpu_id = (String) cpu.get("CPU_ID");
				if (cpu_id.equals("aggregate")) {
					cpu_aggregate = cpu;
					break;
				}
			}
			if (cpu_aggregate == null) {
				System.out.println("@tivoli , no cpu info got by tivoli in collCpu "+ new Date());
			} else {
				System.out.println("cpu_aggregate:"+cpu_aggregate);				
				collResult.addKPI(
						pre_unitid + "-11:" + neat_host_name + "-cpu",
						"PM-00-01-001-052", (String) cpu_aggregate
								.get("CPU_Busy"));
			}

		} catch (Exception e) {
			logger.error("collhost cpu error");
			e.printStackTrace();
		}
		
		return collResult.getKPISet();
	}

}