Authored by zhanxuan

增加服务器通断行监控功能

package com.sitech.ismp.coll.centercoll.ServerConnectivity;
import java.util.HashMap;
import java.util.Vector;
public class CollServerConnexity implements CollServerConnexityMBean {
CollServerConnexityBySsh collServerConnexityBySsh = null;
public CollServerConnexity() {
collServerConnexityBySsh = new CollServerConnexityBySsh();
}
@Override
public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> collServerConnexityIndex(HashMap<String, String> params) throws Exception {
return collServerConnexityBySsh.getRMANLogReportCol(params);
}
public static void main(String[] args) throws Exception {
HashMap<String, String> params = new HashMap<String, String>();
CollServerConnexity collMQServerConnexity = new CollServerConnexity();
params.put("IP", args[0]);
params.put("resourceId", args[1]);
Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> results = collMQServerConnexity.collServerConnexityIndex(params);
for(com.sitech.ismp.coll.basic.TblATO_KPIDETAIL res:results) {
System.out.println(res);
}
}
}
\ No newline at end of file
... ...
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;
}
}
\ No newline at end of file
... ...
package com.sitech.ismp.coll.centercoll.ServerConnectivity;
import java.util.HashMap;
import java.util.Vector;
public interface CollServerConnexityMBean {
/*
获取MQ服务器连通性指标
*/
public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> collServerConnexityIndex(HashMap<String, String> params) throws Exception;
}
\ No newline at end of file
... ...