Authored by zhanxuan

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

  1 +package com.sitech.ismp.coll.centercoll.ServerConnectivity;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.Vector;
  5 +
  6 +public class CollServerConnexity implements CollServerConnexityMBean {
  7 + CollServerConnexityBySsh collServerConnexityBySsh = null;
  8 +
  9 + public CollServerConnexity() {
  10 + collServerConnexityBySsh = new CollServerConnexityBySsh();
  11 + }
  12 +
  13 + @Override
  14 + public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> collServerConnexityIndex(HashMap<String, String> params) throws Exception {
  15 + return collServerConnexityBySsh.getRMANLogReportCol(params);
  16 + }
  17 +
  18 + public static void main(String[] args) throws Exception {
  19 + HashMap<String, String> params = new HashMap<String, String>();
  20 +
  21 + CollServerConnexity collMQServerConnexity = new CollServerConnexity();
  22 +
  23 + params.put("IP", args[0]);
  24 + params.put("resourceId", args[1]);
  25 +
  26 + Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> results = collMQServerConnexity.collServerConnexityIndex(params);
  27 + for(com.sitech.ismp.coll.basic.TblATO_KPIDETAIL res:results) {
  28 + System.out.println(res);
  29 + }
  30 + }
  31 +}
  1 +package com.sitech.ismp.coll.centercoll.ServerConnectivity;
  2 +
  3 +import java.util.ArrayList;
  4 +import java.util.HashMap;
  5 +import java.util.Vector;
  6 +import java.util.regex.Matcher;
  7 +import java.util.regex.Pattern;
  8 +
  9 +public class CollServerConnexityBySsh {
  10 + private com.sitech.ismp.coll.CollBase collBase = null; //获取封装四元组的Vector
  11 + private com.sitech.ismp.app.coll.RPCTarget rpcTarget = new com.sitech.ismp.app.coll.RPCTarget(); //像被采集机器发送脚本
  12 + ArrayList<String> connexityResult = null; //保存返回并已解析好的指标
  13 +
  14 + private String resourceId = null; //指标resourceId
  15 + private String baseMQServerKbp = "10-12-51-12"; //MQ服务器KBP
  16 + private String Connexity = null; //连通性所有指标
  17 + private String IP = null; //需要检查连通性的ip
  18 +
  19 + //获取MQ服务器的联通性指标
  20 + private void getRMANColAndContent(HashMap<String, String> params) {
  21 + IP = params.get("IP");
  22 + Connexity = rpcTarget.getKPIValue("sh linux/getNetConnexity.sh "+IP);
  23 + resourceId = params.get("resourceId");
  24 + }
  25 +
  26 + public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> getRMANLogReportCol(HashMap<String, String> params) {
  27 + collBase = new com.sitech.ismp.coll.CollBase(); //获取封装四元组的Vector
  28 +
  29 + //如果新生成的容器不为空,则将其清空
  30 + if(!collBase.getKPISet().isEmpty()) {
  31 + collBase.getKPISet().clear();
  32 + }
  33 +
  34 + connexityResult = new ArrayList<String>();
  35 +
  36 + getRMANColAndContent(params);
  37 +
  38 + connexityResult = getConnexity(Connexity);
  39 +
  40 + String UNIT_ID = baseMQServerKbp+":"+resourceId+"-"+IP;
  41 +
  42 + collBase.addKPI(UNIT_ID, "CM-58-01-001-01", connexityResult.get(0)); //发包数
  43 + collBase.addKPI(UNIT_ID, "PM-58-01-001-02", connexityResult.get(1)); //收包数
  44 + collBase.addKPI(UNIT_ID, "FM-58-01-001-03", connexityResult.get(2)); //丢包率
  45 + collBase.addKPI(UNIT_ID, "PM-58-01-001-04", connexityResult.get(3)); //发包耗时
  46 + collBase.addKPI(UNIT_ID, "CM-58-01-001-05", IP); //ip
  47 +
  48 + return collBase.getKPISet();
  49 + }
  50 +
  51 + public ArrayList<String> getConnexity(String Connexity) {
  52 + ArrayList<String> connexityIndex = new ArrayList<String>();
  53 +
  54 + String regEx = "\\d+"; //用于提取指标值的正则表达式
  55 + Pattern pattern = Pattern.compile(regEx);
  56 + Matcher matcher = pattern.matcher(Connexity); //将需要解析的字串与正则关联
  57 +
  58 + while(matcher.find()) {
  59 + connexityIndex.add(matcher.group());
  60 + }
  61 +
  62 + if(connexityIndex.size()!=4) {
  63 + int i=3;
  64 +
  65 + for(; i<connexityIndex.size(); i++) {
  66 + connexityIndex.set(i-1,connexityIndex.get(i));
  67 +
  68 + }
  69 + connexityIndex.remove(i-1);
  70 + }
  71 +
  72 + return connexityIndex;
  73 + }
  74 +}
  1 +package com.sitech.ismp.coll.centercoll.ServerConnectivity;
  2 +
  3 +import java.util.HashMap;
  4 +import java.util.Vector;
  5 +
  6 +public interface CollServerConnexityMBean {
  7 + /*
  8 + 获取MQ服务器连通性指标
  9 + */
  10 + public Vector<com.sitech.ismp.coll.basic.TblATO_KPIDETAIL> collServerConnexityIndex(HashMap<String, String> params) throws Exception;
  11 +}