CollIBMWithPerl.java 3.38 KB
package com.sitech.ismp.coll.centercoll;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.sitech.ismp.coll.CollBase;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;
import com.sitech.util.upload.TnPerl;

/**
 * IBM主机集中采集
 * 
 * 2012-12-05 LINXC代码整理优化
 */
public class CollIBMWithPerl extends CollBase{
	public Vector<TblATO_KPIDETAIL> getConfig(HashMap<String, String> params) {				
		init(params);
		
		List<String> cmds= new ArrayList<String>();
		cmds.add("prtconf |grep 'Number Of Processors:'");	
		cmds.add("prtconf |grep 'Processor Type:'");
		cmds.add("prtconf |grep 'Processor Clock Speed:'");	
		cmds.add("prtconf |grep 'Good Memory Size:'");					
		cmds.add("oslevel");	
		cmds.add("lspv");	
		cmds.add("swap -l | awk '{print $4}'");
		cmds.add("lsps -s | grep -v 'Paging Space'");
		cmds.add("netstat -in | grep  127.0.0.1");
		cmds.add("netstat -in |  grep -v Mtu |  grep -v 127.0.0.1");
		cmds.add("df -k | grep -v Filesystem");
		
		TnPerl tp = new TnPerl();
		try {
			List<List<String>> rsts = tp.doCommand(ipAddr, tnPort, username, password, cmds);
			
			String totalUnitId = preUnitId + "-10:" + deviceId + "-total";

			// 增加采集时间指标
			addKPI(totalUnitId, "CM-00-01-001-22", Formater.datetimeToString(new Date()));

			// 常用ip,用于告警标题
			addKPI(totalUnitId, "CM-00-01-001-50", params.get("IP_ADDR"));

			// 主机名称
			addKPI(totalUnitId, "CM-00-01-001-01", deviceName);

			// 主机类型
			addKPI(totalUnitId, "CM-00-01-001-03", "IBM");

			// CPU个数
			try{
				// prtconf |grep 'Number Of Processors:'
				String cpuNum = rsts.get(0).get(0);
				addKPI(totalUnitId, "CM-00-01-001-04", split(cpuNum, 3));
			}catch(Exception e){
				logger.warn("error", e);
			}
			

			// CPU类型
			try{
				// prtconf |grep 'Processor Type:'
				String cpuType = rsts.get(1).get(0);
				addKPI(totalUnitId, "CM-00-01-001-05", split(cpuType, 2));
			}catch(Exception e){
				logger.warn("error", e);
			}
			
			// CPU主频
			try{
				// prtconf |grep 'Processor Clock Speed:'
				String cpuClock = rsts.get(2).get(0);
				addKPI(totalUnitId, "CM-00-01-001-06", split(cpuClock, 2));
			}catch(Exception e){
				logger.warn("error", e);
			}
			
			// 内存大小
			try{
				// prtconf |grep 'Good Memory Size:'
				String cpuClock = rsts.get(2).get(0);
				addKPI(totalUnitId, "CM-00-01-001-07", split(cpuClock, 2));
			}catch(Exception e){
				logger.warn("error", e);
			}
			
		} catch (Exception e) {
			logger.error("Exception while CollIBMWithPerl.getConfig:" + JSONUtil.toJSON(params), e);
		}
		return KPISet;
	}
	
	
	private Logger logger = Logger.getLogger(CollIBMWithPerl.class);
	private String preUnitId = "10-10-20";
	private String deviceName = "";
	private String deviceId = "";
	private String ipAddr;
	private String username;
	private String password;
	private String tnPort;
	
	private void init(HashMap<String, String> params) {
		ipAddr = params.get("IP_ADDR");
		deviceName = params.get("HOST_NAME");
		deviceId = Formater.neatenunitid(deviceName);
		
		username = params.get("USERNAME");
		password = DES3.decrypt(params.get("PASSWORD"));
		
		tnPort = params.get("PROTOCOL_PORT") == null ? "23" : params.get("PROTOCOL_PORT").trim();
	}
}