CollDomino.java
11.5 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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
package com.sitech.ismp.coll;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Vector;
import lotus.domino.ACL;
import lotus.domino.Database;
import lotus.domino.DocumentCollection;
import lotus.domino.NotesException;
import org.apache.log4j.Logger;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;
public class CollDomino implements CollDominoMBean {
private Logger logger = Logger.getLogger("COLL");
String KBP_ID = "10-11-33";
String NEATENSID = null;
private String IP = null;
private String PORT = null;
private String USER = null;
private String PASS = null;
private String NSF = null;
/**
* 初始化params
*
* @param params
*/
private void initParams(HashMap params) {
this.IP = (String) params.get("IP");
this.PORT = (String) params.get("PORT");
this.USER = (String) params.get("USER");
this.PASS = (String) params.get("PASS");
this.NSF = (String) params.get("NSF");
}
public Vector getSystem(HashMap params) {
initParams(params);
this.NEATENSID = this.getNEATENSID(this.NSF);
DominoTarget target = new DominoTarget(this.IP, this.PORT, this.USER,
this.PASS, this.NSF);
return this.getSystem(target);
}
public Vector getSecurity(HashMap params) {
initParams(params);
this.NEATENSID = this.getNEATENSID(this.NSF);
DominoTarget target = new DominoTarget(this.IP, this.PORT, this.USER,
this.PASS, this.NSF);
return this.getSecurity(target);
}
public Vector getData(HashMap params) {
initParams(params);
this.NEATENSID = this.getNEATENSID(this.NSF);
DominoTarget target = new DominoTarget(this.IP, this.PORT, this.USER,
this.PASS, this.NSF);
return this.getData(target);
}
/**
* 采集安全指标
*
* @param target
* @return
*/
private Vector getSecurity(DominoTarget target) {
Vector kpiVector = new Vector();
String UNIT_ID = KBP_ID + "-12" + ":" + NEATENSID + "-security";
// 是否禁用
String isDisabled = "UNKNOWN";
// 访问级别
String accLevel = "UNKNOWN";
// 管理者个数
String adminCount = "UNKNOWN";
if (target.openDB()) {
Database db = target.getDB();
try {
isDisabled = String.valueOf(db.getReplicationInfo()
.isDisabled());
accLevel = this.getLevelDesc(db.getCurrentAccessLevel());
adminCount = String.valueOf(db.getManagers().size());
} catch (NotesException e) {
// TODO Auto-generated catch block
logger.error(e);
}
}
// 是否禁用 CM-00-03-001-15
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-15", isDisabled));
// 访问级别 CM-00-03-001-16
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-16", accLevel));
// 管理员个数 PM-00-03-010-08
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-08", adminCount));
return kpiVector;
}
/**
* 采集数据指标
*
* @param target
* @return
*/
private Vector getData(DominoTarget target) {
Vector kpiVector = new Vector();
String UNIT_ID = KBP_ID + "-11" + ":" + NEATENSID + "-data";
// 数据库最大容量
String maxSize = "UNKNOWN";
// 数据库当前大小
String currSize = "UNKNOWN";
// 可被恢复的文件时长
String fileTime = "UNKNOWN";
// 视图个数
String viewCount = "UNKNOWN";
// forms个数
String formsCount = "UNKNOWN";
// 文档个数
String docCount = "UNKNOWN";
if (target.openDB()) {
Database db = target.getDB();
try {
maxSize = String.valueOf(db.getMaxSize());
currSize = String.valueOf((db.getSize() / 1024));
fileTime = String.valueOf(db.getUndeleteExpireTime());
viewCount = String.valueOf(db.getViews().size());
formsCount = String.valueOf(db.getForms().size());
DocumentCollection docList = db.getAllDocuments();
docCount = String.valueOf(docList.getCount());
} catch (NotesException e) {
// TODO Auto-generated catch block
logger.error(e);
}
}
// 数据库最大容量 PM-00-03-010-01
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-01", maxSize));
// 数据库当前大小 PM-00-03-010-03
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-03", currSize));
// 保存文件时长 PM-00-03-010-04
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-04", fileTime));
// 视图个数 PM-00-03-010-05
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-05", viewCount));
// forms个数 PM-00-03-010-06
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-06", formsCount));
// 文档个数 PM-00-03-010-07
kpiVector.add(createKPI(UNIT_ID, "PM-00-03-010-07", docCount));
return kpiVector;
}
/**
* 采集系统指标
*
* @param target
* @return
*/
private Vector getSystem(DominoTarget target) {
Vector kpiVector = new Vector();
String UNIT_ID = KBP_ID + "-10" + ":" + NEATENSID + "-total";
// 数据库名称
String dbName = "UNKNOWN";
// 数据库类型
String dbType = "UNKNOWN";
// 数据库状态
String dbStatus = this.getDBStatus(target);
// 存放路径
String path = "UNKNOWN";
// notes地址
String nodesAddr = "UNKNOWN";
// http访问地址
String httpAddr = "UNKNOWN";
// 服务器名
String servName = "UNKNOWN";
// 是否集群设置
String clusterRep = "UNKNOWN";
// 创建时间
String createTime = "UNKNOWN";
// 服务器域名
String dnsName = "UNKNOWN";
// 最后修正时间
String lastFixupTime = "UNKNOWN";
if (target.openDB()) {
Database db = target.getDB();
try {
dbName = db.getFileName();
dbType = this.getTypeDesc(db.getType());
path = db.getFilePath();
nodesAddr = db.getNotesURL();
httpAddr = db.getHttpURL();
servName = db.getServer();
clusterRep = String.valueOf(db.isClusterReplication());
createTime = formatDate(db.getCreated().toJavaDate());
dnsName = db.getACL().getAdministrationServer();
lastFixupTime = formatDate(db.getLastFixup().toJavaDate());
} catch (NotesException e) {
logger.error(e);
}
// 数据库名称 CM-00-03-001-01
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-01", dbName));
// 数据库类型 CM-00-03-001-07
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-07", dbType));
// 数据库状态 FM-00-03-001-01
kpiVector.add(createKPI(UNIT_ID, "FM-00-03-001-01", dbStatus));
// 存放路径 CM-00-03-001-08
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-08", path));
// notes地址 CM-00-03-001-09
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-09", nodesAddr));
// http访问地址 CM-00-03-001-10
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-10", httpAddr));
// 服务器名 CM-00-04-001-05
kpiVector.add(createKPI(UNIT_ID, "CM-00-04-001-05", servName));
// 是否集群 CM-00-03-001-11
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-11", clusterRep));
// 创建时间 CM-00-03-001-13
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-13", createTime));
// 服务器域名 CM-00-03-001-12
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-12", dnsName));
// 最后修正时间 CM-00-03-001-14
kpiVector.add(createKPI(UNIT_ID, "CM-00-03-001-14", lastFixupTime));
}
return kpiVector;
}
/**
* 生成TblATO_KPIDETAIL
*
* @param KBP_ID
* @param KPI_ID
* @param KPI_VALUE
* @return
*/
private TblATO_KPIDETAIL createKPI(String KBP_ID, String KPI_ID,
String KPI_VALUE) {
TblATO_KPIDETAIL tblato_kpidetail = new TblATO_KPIDETAIL();
tblato_kpidetail.UNIT_ID = KBP_ID;
tblato_kpidetail.KPI_ID = KPI_ID;
tblato_kpidetail.KPI_VALUE = KPI_VALUE;
tblato_kpidetail.CLL_TIME = new Date();
return tblato_kpidetail;
}
private String formatDate(Date date) {
String result = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
result = sdf.format(date);
return result;
}
private String getDBStatus(DominoTarget target) {
String result = "";
boolean bol = target.openDB();
if (bol) {
result = "UP";
} else {
result = "DOWN";
}
target.closeDB();
return result;
}
/**
* 获得级别描述
*
* @param level
* @return
*/
private String getLevelDesc(int level) {
String result = "UNKNOWN";
switch (level) {
case (ACL.LEVEL_NOACCESS):
result = "No access";
break;
case (ACL.LEVEL_DEPOSITOR):
result = "Depositor access";
break;
case (ACL.LEVEL_READER):
result = "Reader access";
break;
case (ACL.LEVEL_AUTHOR):
result = "Author access";
break;
case (ACL.LEVEL_EDITOR):
result = "Editor access";
break;
case (ACL.LEVEL_DESIGNER):
result = "Designer access";
break;
case (ACL.LEVEL_MANAGER):
result = "Manager access";
break;
default:
result = "Unknown access";
break;
}
return result;
}
/**
* 获得类型描述
*
* @param type
* @return
*/
private String getTypeDesc(int type) {
String typeString = "UNKNOWN";
switch (type) {
case Database.DBTYPE_ADDR_BOOK:
typeString = "Address book";
break;
case Database.DBTYPE_IMAP_SVR_PROXY:
typeString = "IMAP server proxy";
break;
case Database.DBTYPE_LIBRARY:
typeString = "Library";
break;
case Database.DBTYPE_LIGHT_ADDR_BOOK:
typeString = "Directory catalog (light address book)";
break;
case Database.DBTYPE_MAILBOX:
typeString = "Mailbox";
break;
case Database.DBTYPE_MAILFILE:
typeString = "Mail file";
break;
case Database.DBTYPE_MULTIDB_SRCH:
typeString = "Multi-database search";
break;
case Database.DBTYPE_NEWS_SVR_PROXY:
typeString = "News server proxy";
break;
case Database.DBTYPE_PERS_JOURNAL:
typeString = "Personal journal";
break;
case Database.DBTYPE_PORTFOLIO:
typeString = "Portfolio";
break;
case Database.DBTYPE_STANDARD:
typeString = "Standard";
break;
case Database.DBTYPE_SUBSCRIPTIONS:
typeString = "Subscriptions";
break;
case Database.DBTYPE_WEB_APP:
typeString = "Web application";
}
return typeString;
}
private String getNEATENSID(String nsf) {
String result = "";
result = nsf.substring(0, nsf.indexOf("."));
if (result.indexOf("/") > 0) {
result = result.replaceAll("/", "_");
} else if (result.indexOf("\\") > 0) {
result = result.replaceAll("\\\\", "_");
}
result = result.replaceAll("-", "_");
return result;
}
public static void main(String args[]) {
String ip = "172.16.9.2";
String port = "63148";
String user = "test";
String pass = "test";
String nsf = "mail/yanggq.nsf";
HashMap params = new HashMap();
params.put("IP", ip);
params.put("PORT", port);
params.put("USER", user);
params.put("PASS", pass);
params.put("NSF", nsf);
CollDomino domino = new CollDomino();
Vector sysVector = domino.getSystem(params);
Vector dataVector = domino.getData(params);
Vector secuVector = domino.getSecurity(params);
System.out.println("System Coll Info");
for (int i = 0; i < sysVector.size(); i++) {
TblATO_KPIDETAIL kpiDetail = (TblATO_KPIDETAIL) sysVector.get(i);
System.out.println(kpiDetail.UNIT_ID + " | " + kpiDetail.KPI_ID
+ " | " + kpiDetail.KPI_VALUE + " | " + kpiDetail.CLL_TIME);
}
System.out.println("=======================================");
System.out.println("Data Coll Info");
for (int i = 0; i < dataVector.size(); i++) {
TblATO_KPIDETAIL kpiDetail = (TblATO_KPIDETAIL) dataVector.get(i);
System.out.println(kpiDetail.UNIT_ID + " | " + kpiDetail.KPI_ID
+ " | " + kpiDetail.KPI_VALUE + " | " + kpiDetail.CLL_TIME);
}
System.out.println("=======================================");
System.out.println("Security Coll Info");
for (int i = 0; i < secuVector.size(); i++) {
TblATO_KPIDETAIL kpiDetail = (TblATO_KPIDETAIL) secuVector.get(i);
System.out.println(kpiDetail.UNIT_ID + " | " + kpiDetail.KPI_ID
+ " | " + kpiDetail.KPI_VALUE + " | " + kpiDetail.CLL_TIME);
}
}
}