CollSUNHost.java 4.78 KB
package com.sitech.ismp.coll.centercoll;

import java.util.HashMap;
import java.util.Scanner;
import java.util.Vector;

import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;

/**
 * SUN主机集中采集
 */
public class CollSUNHost implements CollSUNHostMBean {
	
	/**
	 * 采集全部指标
	 */
	public Vector<TblATO_KPIDETAIL> getAll(HashMap<String, String> params) {
		Vector<TblATO_KPIDETAIL> result = new Vector<TblATO_KPIDETAIL>();
		result.addAll(getConfig(params));
		result.addAll(getCpu(params));
		result.addAll(getMemory(params));
		result.addAll(getDisk(params));
		result.addAll(getFileSystem(params));
		return result;
	}

	/**
	 * 采集配置信息
	 */
	public Vector<TblATO_KPIDETAIL> getConfig(HashMap<String, String> params) {
		CollSUNWithCMD cmd = new CollSUNWithCMD();
		return cmd.getConfig(params);
	}

	/**
	 * 采集CPU性能指标
	 */
	public Vector<TblATO_KPIDETAIL> getCpu(HashMap<String, String> params) {
		CollSUNWithCMD cmd = new CollSUNWithCMD();
		return cmd.getCpu(params);
	}

	/**
	 * 
	 * PM-00-01-002-01 内存的使用率 vmstat 中的memory - free *4k 为空闲内存 
	 * PM-00-01-002-02 内存交换请求数 vmstat 中的page - fr 
	 * PM-00-01-002-03 内存交换页换进率 vmstat 中的page - pi
	 * PM-00-01-002-04 内存交换页换出率 vmstat 中的page - po 
	 * PM-00-01-002-05 内存队列数 等待内存的进程或线程数量vmstat 中的 kthr - r 
	 * PM-00-01-002-06 系统内存使用率 系统内存占所有物理内存的百分比 无此概念 
	 * PM-00-01-002-07 用户内存使用率 用户内存占所有物理内存的百分比 无此概念 
	 * PM-00-01-002-08 文件系统数据缓冲命中率 文件系统数据缓冲命中率
	 */
	public Vector<TblATO_KPIDETAIL> getMemory(HashMap<String, String> params) {
		CollSUNWithCMD cmd = new CollSUNWithCMD();
		return cmd.getMemory(params);
	}

	/**
	 * 采集磁盘性能指标
	 */
	public Vector<TblATO_KPIDETAIL> getDisk(HashMap<String, String> params) {
		CollSUNWithCMD cmd = new CollSUNWithCMD();
		return cmd.getDisk(params);
	}

	/**
	 * 采集文件系统性能指标
	 * PM-00-01-004-01 文件系统使用比率 文件系统已使用的空间与总空间的比值 
	 * PM-00-01-004-02 交换区使用百分比 交换区使用百分比 
	 * PM-00-01-004-03 逻辑卷(裸设备)文件系统使用率 各逻辑卷上文件系统的使用率
	 */
	public Vector<TblATO_KPIDETAIL> getFileSystem(HashMap<String, String> params) {
		CollSUNWithCMD cmd = new CollSUNWithCMD();
		return cmd.getFileSystem(params);
	}

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

	public static void main(String[] args) {
		System.out
				.println("***************Solaris Center Collect Test Begin*********************");
		String ipAddr = read("IP_ADDR(remote host ip):\n");
		String username = read("USERNAME:\n");
		String password = read("PASSWORD:\n");
		String prototal = read("PROTOTAL(ssh/telent):\n");
		String hostName = read("HOST_NAME(remote host name):\n");
		String specPrompt = read("SPEC_PROMPT(like /yfbnms>):\n");
		String methodStr = read("METHOD(0:getAll, 1:getConfig, 2:getCpu, 3:getMemory, 4:getDisk, 5:getFileSystem):\n");

		System.out.println("IP_ADDR=" + ipAddr + ", USERNAME=" + username
				+ ", PASSWORD=" + password + ", PROTOTAL=" + prototal
				+ ", HOST_NAME=" + hostName + ", METHOD=" + methodStr);

		HashMap<String, String> params = new HashMap<String, String>();
		params.put("IP_ADDR", ipAddr);
		params.put("USERNAME", username);
		params.put("PASSWORD", DES3.encrypt(password));
		params.put("PROTOCOL", prototal);
		params.put("HOSTNAME", hostName);
		params.put("SPEC_PROMPT", specPrompt);

		int method = Integer.parseInt(methodStr);
		Vector<TblATO_KPIDETAIL> result = new Vector<TblATO_KPIDETAIL>();

		CollSUNHost collector = new CollSUNHost();

		switch (method) {
		case 0:
			result.addAll(collector.getConfig(params));
			result.addAll(collector.getCpu(params));
			result.addAll(collector.getMemory(params));
			result.addAll(collector.getDisk(params));
			result.addAll(collector.getFileSystem(params));
			break;
		case 1:
			result.addAll(collector.getConfig(params));
			break;
		case 2:
			result.addAll(collector.getCpu(params));
			break;
		case 3:
			result.addAll(collector.getMemory(params));
			break;
		case 4:
			result.addAll(collector.getDisk(params));
			break;
		case 5:
			result.addAll(collector.getFileSystem(params));
			break;
		default:
			break;
		}

		System.out
				.println("***************Solaris Center Collect Test End*********************");
		System.out.println();
		for (int i = 0; i < result.size(); i++) {
			TblATO_KPIDETAIL record = (TblATO_KPIDETAIL) result.get(i);
			System.out.println(record.UNIT_ID + "\t" + record.KPI_ID + "\t"
					+ record.KPI_VALUE);
		}
	}

}