CollServerConnexityBySsh.java
2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
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;
}
}