CollWindows.java
3.65 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.sitech.ismp.coll.host;
import com.sitech.base.AgentProperties;
import com.sitech.base.WinConf;
import com.sitech.ismp.app.coll.RPCTarget;
import com.sitech.ismp.coll.CollBase;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.jmx.MasterAgentWin;
import org.apache.log4j.Logger;
import java.io.*;
import java.util.Date;
import java.util.HashMap;
import java.util.Vector;
/**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 14-2-21
* Time: 下午1:55
* To change this template use File | Settings | File Templates.
*/
public class CollWindows extends CollBase implements CollWindowsMBean {
private Logger logger = Logger.getLogger(CollWindows.class);
private static String COMMAND = "cmd /c " + WinConf.AGENT_HOME + "/masteragent/bin/" + "coll.bat";
private static String KPI_FILE_NAME = WinConf.AGENT_HOME + "/masteragent/data/local.txt";
@Override
public Vector<TblATO_KPIDETAIL> coll(HashMap<String, String> paramHashMap) {
exec_coll();
analy_result();
return this.getKPISet();
}
private void exec_coll() {
logger.info("****windows采集开始");
new RPCTarget().execute(COMMAND);
//execute(COMMAND);
logger.info("*****生成指标文件完成");
}
private void analy_result() {
logger.info("****analy_result 开始");
File kpiFile = new File(KPI_FILE_NAME);
if(!kpiFile.exists() || !kpiFile.canRead()){
return;
}
FileInputStream fis = null;
BufferedReader bfd = null;
DataInputStream in = null;
try {
fis = new FileInputStream(kpiFile);
in = new DataInputStream(fis);
bfd = new BufferedReader(new InputStreamReader(in,"GBK"));
String line = "";
while ((line = bfd.readLine()) != null) {
String[] context = line.split("#");
String unit_id = context[0].trim();
String kpi_id = context[1].trim();
String kpi_value = context[4].trim();
logger.info("---test---" + kpi_value + "--" + unit_id + "--" +
kpi_id);
setResult(kpi_value, unit_id, kpi_id);
}
} catch (Exception e) {
logger.error("Exception while analy_result", e);
} finally {
try {
bfd.close();
in.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
logger.info("****analy_result 结束");
}
private void setResult(String kpiValue, String unitId, String kpiId) {
this.addKPI(unitId, kpiId, kpiValue);
}
private void execute(String shellCommand) {
logger.info("excute command: \n" + shellCommand);
StringBuffer sb = new StringBuffer();
try {
Process process = Runtime.getRuntime().exec(shellCommand);
BufferedReader reader = null;
reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line = reader.readLine();
while (line != null) {
sb.append(line + "\n");
line = reader.readLine();
System.out.print(line);
}
reader.close();
} catch (Exception e) {
logger.error("在本机上可能没有 " + shellCommand + " 命令!", e);
} finally {
Runtime.getRuntime().freeMemory();
Runtime.getRuntime().gc();
}
}
public static void main(String[] args){
new CollWindows().coll(null);
}
}