Authored by zhangmingm

添加主机连接状态。

... ... @@ -29,6 +29,11 @@ public class CollMySQL implements CollMySQLMBean {
}
}
/**
* 获取数据库jdbc的连接状态。
* @param params
* @return
*/
@Override
public Vector<TblATO_KPIDETAIL> getStatus(HashMap<String, String> params) {
try {
... ... @@ -40,6 +45,22 @@ public class CollMySQL implements CollMySQLMBean {
}
}
/**
* 获取数据库ping状态。
* @param params
* @return
*/
@Override
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params) {
try {
CollMySQLBySql collector = new CollMySQLBySql();
return collector.getPingStatus(params);
} catch (Exception e) {
logger.error("Exception while getPingStatus", e);
return new Vector<TblATO_KPIDETAIL>();
}
}
@Override
public Vector<TblATO_KPIDETAIL> getPerformance(HashMap<String, String> params) {
try {
... ...
package com.sitech.ismp.coll;
import com.sitech.ismp.check.downtime.CheckConnectionState;
import com.sitech.ismp.check.downtime.ParamterBean;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;
import org.apache.log4j.Logger;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Vector;
... ... @@ -27,12 +28,16 @@ public class CollMySQLBySql {
private String dburl = null;
private String dbuser = null;
private String passwd = null;
private String ip = null; // 2017-04-24 frank 添加,用于获取数据库所在主机的ping状态
private String device_id = null;
private String NEATENSID = null;
private boolean getParams(HashMap<String, String> params) {
try {
dburl = params.get("DB_URL");
int start=dburl.indexOf("/");
int end=dburl.lastIndexOf(":");
ip=dburl.substring(start+2,end);
dbuser = params.get("USERNAME");
passwd = DES3.decrypt(params.get("PASSWORD"));
device_id = (String) params.get("DEVICE_ID");
... ... @@ -43,6 +48,12 @@ public class CollMySQLBySql {
return true;
}
/**
* 获取数据库基本信息,frank 2017-04-24 修改,添加设备状态(UP/DOWN)即主机ping的结果。
* @param params
* @return
* @throws Exception
*/
public Vector<TblATO_KPIDETAIL> getSystem(HashMap<String, String> params) throws Exception {
getParams(params);
SQLTarget colldb = new SQLTarget();
... ... @@ -53,6 +64,10 @@ public class CollMySQLBySql {
return sets;
}
/**
* 获取数据库基本信息
* @param colldb
*/
private void getSystem(SQLTarget colldb) {
String UNIT_ID = KBP_CLASS + "-10" + ":" + NEATENSID + "-SYS";
// CM-00-03-001-02
... ... @@ -228,21 +243,40 @@ public class CollMySQLBySql {
return sets;
}
/**
* 获取数据库ping状态。
* @param params
* @return
*/
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String,String> params) {
getParams(params);
CheckConnectionState server=new CheckConnectionState();
SQLTarget colldb = new SQLTarget();
String UNIT_ID = KBP_CLASS + "-10" + ":" + NEATENSID + "-SYS";
ParamterBean bean=new ParamterBean();
bean.setType("mysql");
bean.setDEVICE_IP(ip);
String stat=server.getPingState(bean);
colldb.addKPI(UNIT_ID, "FM-00-11-001-999",stat);
return colldb.getKPISet();
}
public Vector<TblATO_KPIDETAIL> getStatus(HashMap<String,String> params) {
getParams(params);
SQLTarget colldb = new SQLTarget();
colldb.initWithClassname(DB_TYPE, CLASSNAME, dburl, dbuser, passwd);
String UNIT_ID = KBP_CLASS + "-10" + ":" + NEATENSID + "-SYS";
// 修改状态的值 UP:连接正常/DOWN:连接异常
if (colldb.getState()) {
colldb.addKPI(UNIT_ID, "FM-00-03-001-01", "active");
colldb.addKPI(UNIT_ID, "FM-00-03-001-01", "UP");
} else {
colldb.addKPI(UNIT_ID, "FM-00-03-001-01", "disconnected");
colldb.addKPI(UNIT_ID, "FM-00-03-001-01", "DOWN");
logger.error("----mysql--- " + device_id + "--state--err----");
}
Vector sets = colldb.getKPISet();
colldb.release();
return sets;
}
... ...
... ... @@ -18,6 +18,12 @@ public abstract interface CollMySQLMBean {
public Vector<TblATO_KPIDETAIL> getStatus(HashMap<String, String> params);
/**
* 获取数据库所在主机的ping状态
* @param params
*/
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params);
public Vector<TblATO_KPIDETAIL> getPerformance(HashMap<String, String> params);
public Vector<TblATO_KPIDETAIL> getInnodb(HashMap<String, String> params);
... ...
package com.sitech.ismp.coll;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import com.sitech.util.DES3;
import com.sitech.util.JSONUtil;
import org.apache.log4j.Logger;
... ... @@ -96,6 +95,22 @@ public class CollOracle implements CollOracleMBean {
}
}
/**
* 获取数据库所在主机的ping状态
* @param params
* @return
*/
@Override
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params) {
try {
CollOracleBySql collector = new CollOracleBySql();
return collector.getPingStatus(params);
} catch (Exception e) {
logger.error("Exception while getPingStatus", e);
return new Vector<TblATO_KPIDETAIL>();
}
}
@Override
public Vector<TblATO_KPIDETAIL> getSpecialTable(
HashMap<String, String> params) {
... ... @@ -174,93 +189,4 @@ public class CollOracle implements CollOracleMBean {
return scanner.nextLine();
}
public static void main(String[] args) {
System.out.println("***************ORACLE Collect Test Begin*********************");
/*String ipAddr = "172.21.0.69";
String username = "ssdbomc";
String password = "ssdbomc";
String port = "1525";
String sid = "e3cloud";
String deviceId = "bnms";
String methodStr = "9";
String methodStr = "6";*/
String ipAddr = read("IP_ADDR(remote oracle service ip):\n");
String username = read("USERNAME:\n");
String password = read("PASSWORD:\n");
String port = read("PORT:\n");
String sid = read("SID:\n");
String deviceId = read("DEVICE_ID\n");
String methodStr = read("METHOD(0:getAll, 1:getExtendKPI, 2:getStatus, 3:getSystem, 4:getTableSpaces, 5:getTableSpacesSpecial, 6:getTotalData):\n");
// String methodStr = read("METHOD(0:getAll, 1:getExtendKPI, 2:getStatus, 3:getSystem,
// 4:getTableSpaces, 5:getTableSpacesSpecial, 6:getTotalData, 7:getHeadroom, 8:getAsmDiskGroup):\n");
HashMap params = new HashMap();
params.put("IP_ADDR", ipAddr);
params.put("USERNAME", username);
params.put("PASSWORD", DES3.encrypt(password));
params.put("PORT", port);
params.put("DEVICE_ID", deviceId);
params.put("SID", sid);
CollOracle coll = new CollOracle();
Vector lst = new Vector<TblATO_KPIDETAIL>();
int method = Integer.parseInt(methodStr);
switch (method) {
case 0:
lst.addAll(coll.getExtendKPI(params));
lst.addAll(coll.getStatus(params));
lst.addAll(coll.getSystem(params));
lst.addAll(coll.getTableSpaces(params));
lst.addAll(coll.getTableSpacesSpecial(params));
lst.addAll(coll.getTotalData(params));
lst.addAll(coll.getHeadroom(params));
lst.addAll(coll.getAsmDiskGroup(params));
lst.addAll(coll.getSessionWait(params));
break;
case 1:
lst.addAll(coll.getExtendKPI(params));
break;
case 2:
lst.addAll(coll.getStatus(params));
break;
case 3:
lst.addAll(coll.getSystem(params));
break;
case 4:
lst.addAll(coll.getTableSpaces(params));
break;
case 5:
lst.addAll(coll.getTableSpacesSpecial(params));
break;
case 6:
lst.addAll(coll.getTotalData(params));
break;
case 7:
lst.addAll(coll.getHeadroom(params));
break;
case 8:
lst.addAll(coll.getAsmDiskGroup(params));
break;
case 9:
lst.addAll(coll.getSessionWait(params));
break;
default:
break;
}
System.out.println("***************ORACLE Collect Test End*********************");
System.out.println("lst.size() is " + lst.size());
for (int i = 0; i < lst.size(); i++) {
TblATO_KPIDETAIL record = (TblATO_KPIDETAIL) lst.get(i);
// System.out.println(kpidetail.UNIT_ID + "|" + kpidetail.KPI_ID + "|" + kpidetail.CLL_TIME + "|" + kpidetail.KPI_VALUE);
String insSql = "INSERT INTO TB_ATO_KPIDETAIL (KPI_ID, UNIT_ID, CLL_TIME, KPI_VALUE, EXT_INFO, DB_TIME, EXT_UNIT_ID, INTERVAL) " +
"VALUES ('#KPI_ID#', '#UNIT_ID#', sysdate, '#KPI_VALUE#', 'null', sysdate, '10-11-30:bnms', #INTERVAL#);";
insSql = insSql.replace("#KPI_ID#", record.KPI_ID);
insSql = insSql.replace("#UNIT_ID#", record.UNIT_ID);
insSql = insSql.replace("#KPI_VALUE#", record.KPI_VALUE);
insSql = insSql.replace("#INTERVAL#", record.INTERVAL);
System.out.println(insSql);
}
}
}
\ No newline at end of file
... ...
package com.sitech.ismp.coll;
import java.util.*;
import com.sitech.ismp.check.downtime.CheckConnectionState;
import com.sitech.ismp.check.downtime.ParamterBean;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import org.apache.log4j.Logger;
import com.sitech.util.DES3;
import com.sitech.util.Formater;
import com.sitech.util.JSONUtil;
import com.sitech.util.upload.RomoteController;
import com.sitech.util.upload.SSHThread;
import com.sitech.util.upload.TelnetThread;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
public class CollOracleBySql {
... ... @@ -27,6 +30,7 @@ public class CollOracleBySql {
RomoteController tt = null;
private Logger logger = Logger.getLogger("COLL");
private static Logger log = Logger.getLogger(CollOracleBySql.class);
// public void init(HashMap params) {
// String hostip = (String) params.get("IP_ADDR");
... ... @@ -102,7 +106,7 @@ public class CollOracleBySql {
return result;
}
public java.util.Vector getSystem(String IP_ADDR, String USERNAME,
public Vector getSystem(String IP_ADDR, String USERNAME,
String PASSWORD, String KBP_ID, String SID) throws Exception {
this.KBP_ID = KBP_ID;
this.NEATENSID = Formater.neatenunitid(this.device_id);
... ... @@ -110,14 +114,9 @@ public class CollOracleBySql {
collectiondbbase.init(IP_ADDR, PORT, SID, USERNAME, PASSWORD);
getSystem(collectiondbbase);
collectiondbbase.addKPI(KBP_ID + "-10" + ":" + NEATENSID + "-SYS",
"CM-00-03-001-50", IP_ADDR);
collectiondbbase.addKPI(KBP_ID + "-10" + ":" + NEATENSID + "-SYS","CM-00-03-001-50", IP_ADDR);
Vector aa = collectiondbbase.getKPISet();
// System.out.println(aa.size());
collectiondbbase.release();
// collectiondbbase.displayKPI();
return aa;
}
... ... @@ -198,8 +197,7 @@ public class CollOracleBySql {
return getUndoTableSpaces(hostip, user, passwd, kbp_id, SID);
}
public java.util.Vector getSystem(java.util.HashMap params)
throws Exception {
public java.util.Vector getSystem(java.util.HashMap params)throws Exception {
getParams(params);
return getSystem(hostip, user, passwd, kbp_id, SID);
}
... ... @@ -327,27 +325,44 @@ public class CollOracleBySql {
return getStatus(hostip, user, passwd, kbp_id, SID);
}
/**
* 获取数据库所在主机的ping状态
* @param params
* @return
*/
public Vector getPingStatus(HashMap params)throws Exception {
getParams(params);
CheckConnectionState server=new CheckConnectionState();
String KBP_ID = "10-11-30-10:" + this.NEATENSID + "-SYS";
log.info("*******************************************************");
log.info("*************KBP_ID= "+KBP_ID+"******************************************");
SQLTarget collectiondbbase = new SQLTarget();
ParamterBean bean=new ParamterBean();
bean.setType("oracle");
bean.setDEVICE_IP(hostip);
String stat=server.getPingState(bean);
collectiondbbase.addKPI(KBP_ID, "FM-00-01-002-999", stat);
log.info("************* execute getPingStatus() ********PingState= "+stat+"**********");
return collectiondbbase.getKPISet();
}
private java.util.Vector getStatus(String IP_ADDR, String USERNAME,
String PASSWORD, String KBP_ID, String SID) throws Exception {
this.KBP_ID = KBP_ID;
//this.NEATENSID = Formater.neatenunitid(SID);
this.NEATENSID = Formater.neatenunitid(this.device_id);
System.out.println("--采集数据库状态--");
KBP_ID = KBP_ID + "-10:" + this.NEATENSID + "-SYS";
SQLTarget collectiondbbase = new SQLTarget();
collectiondbbase.init(IP_ADDR, PORT, SID, USERNAME, PASSWORD);
if (collectiondbbase.getState()) {
// 获取数据库连接状态 UP:连接正常/DOWN:连接异常
if (collectiondbbase.getState()){
logger.info("----db----" + SID + "--state--connected----");
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-04", "connected");
String verionInfo = collectiondbbase.getSQLKPIInfo("select status from v$instance").toLowerCase();
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-01", verionInfo);
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-01", "UP");
} else {
logger.error("----db----" + SID + "--state--disconnected----");
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-04", "disconnected");
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-01", "Unknown");
collectiondbbase.addKPI(KBP_ID, "FM-00-03-001-01", "DOWN");
}
Vector kpi_value = collectiondbbase.getKPISet();
... ... @@ -394,11 +409,13 @@ public class CollOracleBySql {
//add start 活动会话数量
String sqlActiveSession = "select STATUS,count(*) from v$session where status='ACTIVE' group by STATUS";
Vector activeSessionDetail = collectiondbbase.getSQLKPIResult(sqlActiveSession);
/* PM-00-03-009-04 定义的为 JDBC可链接性,这里不统一,注释掉。
int activeSessionNum = 0;
Vector activeSessionDetailVector = (Vector) activeSessionDetail.elementAt(0);
String num = (String) activeSessionDetailVector.get(1);
activeSessionNum = Integer.parseInt(num);
collectiondbbase.addKPI(KBP_ID, "PM-00-03-009-04", String.valueOf(activeSessionNum));
collectiondbbase.addKPI(KBP_ID, "PM-00-03-009-04", String.valueOf(activeSessionNum));*/
//add end
int sessionNum = 0;
for (int i = 0; i < sessionDetail.size(); i++) {
... ... @@ -683,6 +700,7 @@ public class CollOracleBySql {
private void getSystem(SQLTarget collectiondbbase) {
String KBP_ID = this.KBP_ID + "-10" + ":" + NEATENSID + "-SYS";
collectiondbbase.addKPI(KBP_ID, "CM-00-03-001-01", collectiondbbase
.getSQLKPIInfo("select NAME from v$database"));
collectiondbbase
... ...
package com.sitech.ismp.coll;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import java.util.HashMap;
import java.util.Vector;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
public abstract interface CollOracleMBean {
public Vector<TblATO_KPIDETAIL> getDataFile(HashMap<String,String> params);
... ... @@ -35,4 +35,11 @@ public abstract interface CollOracleMBean {
public Vector<TblATO_KPIDETAIL> getSessionWait(HashMap<String, String> params);
/**
* 获取数据库所在主机的ping状态
* @param params
* @return
*/
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params);
}
... ...