ProcessDisco.java
3.31 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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package com.sitech.ismp.topo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import org.apache.log4j.Logger;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.topo.bean.HostProcess;
import com.sitech.topo.bean.Node;
import com.sitech.util.JSONUtil;
/**
* 进程自动发现
* @author linxc
*
*/
public class ProcessDisco implements ProcessDiscoMBean {
private Logger logger = Logger.getLogger(ProcessDisco.class);
private Map<String, ProcessDiscoThread> threadMap = new HashMap<String, ProcessDiscoThread>();
@SuppressWarnings("unchecked")
public Vector<TblATO_KPIDETAIL> run(HashMap<String, String> params) {
String scheduleId = params.get("TASK_ID");
Map<String, Node> hostMap = new HashMap<String, Node>();
for(String key : params.keySet()){
if(key.startsWith("PROCESS_")){
String id = key.substring(key.indexOf("_") + 1);
String value = params.get(key);
Map<String,String> param = (Map<String, String>) JSONUtil.fromJSON(value);
String ip = param.get("hostIp");
String username = param.get("userName");
String password = param.get("passWord");
String cpuContain = param.get("cpuConst");
String memContail = param.get("memConst");
String keyword = param.get("keyWord");
String log = param.get("NotePath");
Node host = hostMap.get(ip + "_" + username);
if(host == null){
host = new Node();
host.setLoginUser(username);
// host.setLoginPwd(DES3.decrypt(password));
host.setLoginPwd(password);
host.setNodeIp(ip);
host.setCpuContain(cpuContain);
host.setMemContain(memContail);
host.setProcKeyList(new ArrayList<HostProcess>());
hostMap.put(ip + "_" + username, host);
}
List<HostProcess> keyList = host.getProcKeyList();
keyList.add(new HostProcess(id, keyword, log));
}
}
List<Node> hostList = new ArrayList<Node>();
for(Node host :hostMap.values()){
hostList.add(host);
}
ProcessDiscoThread thread = threadMap.get(scheduleId);
if (thread == null || !thread.isRun()) {
thread = new ProcessDiscoThread(scheduleId, hostList);
threadMap.put(scheduleId, thread);
new Thread(thread).start();
} else {
logger.info("Task[" + scheduleId + "] is Running, exit!");
}
return null;
}
public static void main(String[] args) {
HashMap<String, String> params = new HashMap<String, String>();
params.put("TASK_ID", "D7E36A1C474284FE1E0C2532157C50BB");
params.put("PROCESS_4a6pUyesySsrThtj0hkFP", "{\"ID\":\"4a6pUyesySsrThtj0hkFP\",\"TASK_ID\":\"D7E36A1C474284FE1E0C2532157C50BB\",\"cfgId\":null,\"chargMan\":\"\",\"cpuConst\":\"10\",\"cpuRate\":null,\"cpuValue\":null,\"daemonKeyWord\":null,\"deviceName\":null,\"diskConst\":\"500\",\"envId\":null,\"hostIp\":\"172.21.1.100\",\"hostUserName\":null,\"isDaemon\":null,\"kbpCaption\":null,\"kbpClass\":null,\"keyWord\":\"=linxc\",\"logModTime\":null,\"logSize\":null,\"loginType\":\"22\",\"memConst\":\"10\",\"memRate\":null,\"memValue\":null,\"notePath\":\"\",\"passId\":\"9\",\"passWord\":\"bnmsapp2\",\"port\":\"ssh\",\"procDesc\":null,\"procNum\":null,\"processId\":null,\"processType\":null,\"processUser\":null,\"updateTime\":null,\"userName\":\"bnmsapp2\"}");
ProcessDisco test = new ProcessDisco();
test.run(params);
}
}