CollIBMWithPerl.java
3.38 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
package com.sitech.ismp.coll.centercoll;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Vector;
import org.apache.log4j.Logger;
import com.sitech.ismp.coll.CollBase;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;
import com.sitech.util.upload.TnPerl;
/**
* IBM主机集中采集
*
* 2012-12-05 LINXC代码整理优化
*/
public class CollIBMWithPerl extends CollBase{
public Vector<TblATO_KPIDETAIL> getConfig(HashMap<String, String> params) {
init(params);
List<String> cmds= new ArrayList<String>();
cmds.add("prtconf |grep 'Number Of Processors:'");
cmds.add("prtconf |grep 'Processor Type:'");
cmds.add("prtconf |grep 'Processor Clock Speed:'");
cmds.add("prtconf |grep 'Good Memory Size:'");
cmds.add("oslevel");
cmds.add("lspv");
cmds.add("swap -l | awk '{print $4}'");
cmds.add("lsps -s | grep -v 'Paging Space'");
cmds.add("netstat -in | grep 127.0.0.1");
cmds.add("netstat -in | grep -v Mtu | grep -v 127.0.0.1");
cmds.add("df -k | grep -v Filesystem");
TnPerl tp = new TnPerl();
try {
List<List<String>> rsts = tp.doCommand(ipAddr, tnPort, username, password, cmds);
String totalUnitId = preUnitId + "-10:" + deviceId + "-total";
// 增加采集时间指标
addKPI(totalUnitId, "CM-00-01-001-22", Formater.datetimeToString(new Date()));
// 常用ip,用于告警标题
addKPI(totalUnitId, "CM-00-01-001-50", params.get("IP_ADDR"));
// 主机名称
addKPI(totalUnitId, "CM-00-01-001-01", deviceName);
// 主机类型
addKPI(totalUnitId, "CM-00-01-001-03", "IBM");
// CPU个数
try{
// prtconf |grep 'Number Of Processors:'
String cpuNum = rsts.get(0).get(0);
addKPI(totalUnitId, "CM-00-01-001-04", split(cpuNum, 3));
}catch(Exception e){
logger.warn("error", e);
}
// CPU类型
try{
// prtconf |grep 'Processor Type:'
String cpuType = rsts.get(1).get(0);
addKPI(totalUnitId, "CM-00-01-001-05", split(cpuType, 2));
}catch(Exception e){
logger.warn("error", e);
}
// CPU主频
try{
// prtconf |grep 'Processor Clock Speed:'
String cpuClock = rsts.get(2).get(0);
addKPI(totalUnitId, "CM-00-01-001-06", split(cpuClock, 2));
}catch(Exception e){
logger.warn("error", e);
}
// 内存大小
try{
// prtconf |grep 'Good Memory Size:'
String cpuClock = rsts.get(2).get(0);
addKPI(totalUnitId, "CM-00-01-001-07", split(cpuClock, 2));
}catch(Exception e){
logger.warn("error", e);
}
} catch (Exception e) {
logger.error("Exception while CollIBMWithPerl.getConfig:" + JSONUtil.toJSON(params), e);
}
return KPISet;
}
private Logger logger = Logger.getLogger(CollIBMWithPerl.class);
private String preUnitId = "10-10-20";
private String deviceName = "";
private String deviceId = "";
private String ipAddr;
private String username;
private String password;
private String tnPort;
private void init(HashMap<String, String> params) {
ipAddr = params.get("IP_ADDR");
deviceName = params.get("HOST_NAME");
deviceId = Formater.neatenunitid(deviceName);
username = params.get("USERNAME");
password = DES3.decrypt(params.get("PASSWORD"));
tnPort = params.get("PROTOCOL_PORT") == null ? "23" : params.get("PROTOCOL_PORT").trim();
}
}