CollServerConnexityBySsh.java 2.81 KB
package com.sitech.ismp.coll.centercoll.ServerConnectivity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class CollServerConnexityBySsh {
    private com.sitech.ismp.coll.CollBase collBase = null;   //获取封装四元组的Vector
    private com.sitech.ismp.app.coll.RPCTarget rpcTarget = new com.sitech.ismp.app.coll.RPCTarget();   //像被采集机器发送脚本
    ArrayList<String> connexityResult = null;   //保存返回并已解析好的指标

    private String resourceId = null;   //指标resourceId
    private String baseMQServerKbp = "10-12-51-12";   //MQ服务器KBP
    private String Connexity = null;   //连通性所有指标
    private String IP = null;   //需要检查连通性的ip

    //获取MQ服务器的联通性指标
    private void getRMANColAndContent(HashMap<String, String> params) {
        IP = params.get("IP");
        Connexity = rpcTarget.getKPIValue("sh linux/getNetConnexity.sh "+IP);
        resourceId = params.get("resourceId");
    }

    public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> getRMANLogReportCol(HashMap<String, String> params) {
        collBase = new com.sitech.ismp.coll.CollBase();   //获取封装四元组的Vector

        //如果新生成的容器不为空,则将其清空
        if(!collBase.getKPISet().isEmpty()) {
            collBase.getKPISet().clear();
        }

        connexityResult = new ArrayList<String>();

        getRMANColAndContent(params);

        connexityResult = getConnexity(Connexity);

        String UNIT_ID = baseMQServerKbp+":"+resourceId+"-"+IP;

        collBase.addKPI(UNIT_ID, "CM-58-01-001-01", connexityResult.get(0));   //发包数
        collBase.addKPI(UNIT_ID, "PM-58-01-001-02", connexityResult.get(1));   //收包数
        collBase.addKPI(UNIT_ID, "FM-58-01-001-03", connexityResult.get(2));   //丢包率
        collBase.addKPI(UNIT_ID, "PM-58-01-001-04", connexityResult.get(3));   //发包耗时
        collBase.addKPI(UNIT_ID, "CM-58-01-001-05", IP);   //ip

        return collBase.getKPISet();
    }

    public ArrayList<String> getConnexity(String Connexity) {
        ArrayList<String> connexityIndex = new ArrayList<String>();

        String regEx = "\\d+";   //用于提取指标值的正则表达式
        Pattern pattern = Pattern.compile(regEx);
        Matcher matcher = pattern.matcher(Connexity);   //将需要解析的字串与正则关联

        while(matcher.find()) {
            connexityIndex.add(matcher.group());
        }

        if(connexityIndex.size()!=4) {
            int i=3;

            for(; i<connexityIndex.size(); i++) {
                connexityIndex.set(i-1,connexityIndex.get(i));

            }
            connexityIndex.remove(i-1);
        }

        return connexityIndex;
    }
}