Authored by 王凤

合并分支 'master_zmm' 到 'master'

添加getPingStatus方法。

添加getPingStatus方法。

查看合并请求 !4
ip=127.0.0.1
port=162
swap_path=D://
trap_config_path=trap_config
error_file_path=D://error
... ... @@ -60,7 +60,6 @@
<sqlMap resource="com/sitech/topo/db/maps/TbTopoHostProcessMap.xml" />
<sqlMap resource="com/sitech/topo/db/maps/TbTopoHostProcessLinkMap.xml" />
<sqlMap resource="com/sitech/database/maps/TbTopoPhysicalDeviceMap.xml" />
<sqlMap resource="com/sitech/database/maps/DowntimeMap.xml" />
<sqlMap resource="com/sitech/database/maps/DowntimeMapHistory.xml" />
<sqlMap resource="com/sitech/database/maps/CheckConnectionMap.xml" />
</sqlMapConfig>
... ...
package com.sitech.ismp.coll.middleware.weblogic;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Vector;
import com.adventnet.snmp.beans.SnmpTarget;
import com.adventnet.snmp.snmp2.SnmpOID;
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.ismp.coll.middleware.weblogic.impl.ICollWebLogic;
import com.sitech.ismp.coll.middleware.weblogic.impl.WebLogicCollFactory;
import com.sitech.util.Formater;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Vector;
public class CollWebLogic implements CollWebLogicMBean{
SnmpTarget target = null;
public Vector<TblATO_KPIDETAIL> getExecuteQueue(HashMap<String, String> params) {
WebLogicCollFactory factory = new WebLogicCollFactory();
ICollWebLogic coll = factory.getCollInstance(params);
... ... @@ -125,6 +134,86 @@ public class CollWebLogic implements CollWebLogicMBean{
return null;
}
@Override
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params) {
/**
* 该 kbp_class kpiId 如果不存在,需要在页面添加。
*/
String kbp_class="10-12-11-20";
String kpiId="FM-00-12-001-999";
Vector<TblATO_KPIDETAIL> vector=new Vector<TblATO_KPIDETAIL>();
String serverip=params.get("SERVERIP");
/**
* SERVERNAME 实际就是 资源标识。
*/
String servername = params.get("SERVERNAME");
String unitId = kbp_class +":"+ Formater.neatenunitid(servername) + "-CONFIG";
CheckConnectionState server=new CheckConnectionState();
TblATO_KPIDETAIL kpidetail=new TblATO_KPIDETAIL();
try {
kpidetail.setUNIT_ID(unitId);
kpidetail.setKPI_ID(kpiId);
kpidetail.setKPI_VALUE(server.getPingState(new ParamterBean(serverip)));
kpidetail.setCLL_TIME(new Date());
vector.add(kpidetail);
} catch (ParseException e){
e.printStackTrace();
}
return vector;
}
/**
* @author pc103
* @date 2006-07-21
* @param oid
* @param bool
* @return vector 参数说明书: oid-----对应weblogic控制台监控的性能指标id(关键) bool----无多大用处
* 功能:储存各采集结果 返回类型:vector
*
*/
private Vector<String> walkKPIInfo(String oid, boolean bool) {
Vector<String> tmp_result = new Vector<String>();
try {
Vector<String> tmp_oid = new Vector<String>();
target.setObjectID(oid);
target.oidList[0] = new SnmpOID(oid);
int maxtry = 0;
SnmpOID[] oidList = target.getSnmpOIDList();
if (oidList == null) {
System.out.println("oidList is null");
return null;
} else {
SnmpOID rootoid = oidList[0];
SnmpOID curroid = null;
while (maxtry++ < 3000) {
String result1[] = target.snmpGetNextList();
if (result1 == null) {
target.oidList[0] = curroid;
continue;
}
if (!SnmpTarget.isInSubTree(rootoid, target.getSnmpOID()))
break;
for (int i = 0; i < result1.length; i++) {
tmp_result.add(result1[i]);
tmp_oid.add(target.getObjectID(i));
}
if (result1[0].compareTo("NULL") == 0)
break;
}
if (maxtry == 1) {
System.err
.println("Request failed, timed out or no available data("
+ oid + "). \n " + target.getErrorString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return tmp_result;
}
private static String read(String prompt) {
Scanner scanner = new Scanner(System.in);
System.out.print(prompt);
... ...
package com.sitech.ismp.coll.middleware.weblogic;
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 interface CollWebLogicMBean {
public Vector<TblATO_KPIDETAIL> getExecuteQueue(HashMap<String, String> map);
... ... @@ -31,4 +31,11 @@ public interface CollWebLogicMBean {
public Vector<TblATO_KPIDETAIL> getStatus(HashMap<String, String> params);
/**
* 获取数据库所在主机的ping状态,add by frank 2017-05-04
* @param params
* @return
*/
public Vector<TblATO_KPIDETAIL> getPingStatus(HashMap<String, String> params);
}
... ...
package com.sitech.jmx;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import com.sitech.jmx.adaptor.RmiAdaptor;
import com.sitech.jmx.manage.*;
import com.sitech.util.mq.TunnelFactory;
import org.apache.log4j.Logger;
import com.sitech.base.ACommonThread;
import com.sitech.base.AgentProperties;
import com.sitech.base.Config;
import com.sitech.database.dao.TbCfgEventDao;
import com.sitech.ismp.messageObject.AgentSyncRequest;
import com.sitech.jmx.adaptor.JmsAdaptor;
import com.sitech.jmx.adaptor.RmiAdaptor;
import com.sitech.jmx.manage.CollScheduleManager;
import com.sitech.jmx.manage.CronLogScan;
import com.sitech.jmx.manage.MBeanManager;
import com.sitech.jmx.manage.MessageSenderManager;
import com.sitech.jmx.manage.SwapMonitorThread;
import com.sitech.util.mq.MQConstants;
import com.sitech.util.mq.MQSender;
import com.sitech.util.mq.MQSenderFactory;
import com.sitech.util.mq.TunnelFactory;
import org.apache.log4j.Logger;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
public class MasterAgent extends ACommonThread {
private static Logger logger = Logger.getLogger("LOGER");
private static Logger error = Logger.getLogger("ERROR");
private static Logger log = Logger.getLogger(MasterAgent.class);
private MBeanServer server;
public MasterAgent() {
... ... @@ -41,13 +43,14 @@ public class MasterAgent extends ACommonThread {
* 启动MBeanServer
*/
private void createMBS() {
log.info("MBeanServer create .....");
try {
server = MBeanServerFactory.createMBeanServer(AgentProperties.MBEAN_SERVER_DOMAIN);
MBeanManager manager = MBeanManager.getInstance();
manager.setMBeanServer(server);
logger.info("MBeanServer create successful.");
log.info("MBeanServer create successful.");
} catch (Exception e) {
logger.error("MBeanServer instance creation failed.", e);
log.error("MBeanServer instance creation failed.", e);
}
}
... ... @@ -59,9 +62,9 @@ public class MasterAgent extends ACommonThread {
CollScheduleManager collschedule = CollScheduleManager.getInstance();
collschedule.setMBeanServer(server);
collschedule.startSchedule();
logger.info("Start quartz scheduler successful.");
log.info("Start quartz scheduler successful.");
} catch (Exception e) {
error.error("Exception while start quartz scheduler.", e);
log.error("Exception while start quartz scheduler.", e);
}
}
... ... @@ -70,22 +73,22 @@ public class MasterAgent extends ACommonThread {
* 2012-12-20 改为MQ
*/
private void registAdapter() {
logger.info("Start MQ adapter...");
log.info("Start MQ adapter...");
String url = Config.WORKSTAITON_CONN_URL;
String queue = "Q_AGENT_" + AgentProperties.AGENT_ID;
JmsAdaptor jmsAdaptor = new JmsAdaptor(url, queue);
jmsAdaptor.start();
RmiAdaptor.getInstance().regist(server);
logger.info("Start MQ adapter ok...");
log.info("Start MQ adapter ok...");
}
/**s
* 启动指标数据和告警数据发送服务
*/
private void startJmsSender() {
logger.info("Start all jms sender.");
log.info("Start all jms sender.");
new MessageSenderManager().startAllMessageSender();
logger.info("Start all jms sender ok.");
log.info("Start all jms sender ok.");
}
/**
... ... @@ -94,7 +97,7 @@ public class MasterAgent extends ACommonThread {
private void startSwapMonitorThread() {
SwapMonitorThread swapMonitorThread = new SwapMonitorThread();
swapMonitorThread.start();
logger.info("Start swap path monitor thread successful.");
log.info("Start swap path monitor thread successful.");
}
/**
... ... @@ -118,7 +121,7 @@ public class MasterAgent extends ACommonThread {
// Config.WORKSTAITON_CONN_URL, MQConstants.Q_ROPORT_FROM_AGENT);
// mqSender.writeData(request);
// mqSender.start();
logger.info("Send sync request.");
log.info("Send sync request.");
}
public static void main(String[] args) {
... ...
package com.sitech.jmx.manage;
import javax.management.MBeanServer;
import javax.management.ObjectName;
import org.apache.log4j.Logger;
import com.sitech.ismp.messageObject.AgentSyncObject;
import com.sitech.schedule.Scheduler;
import org.apache.log4j.Logger;
import javax.management.MBeanServer;
import javax.management.ObjectName;
/**
* ClassName:MBeanRegister Description: 注册采集MBean
... ... @@ -73,9 +72,24 @@ public class MBeanManager {
public void registCollMBean(Scheduler schedule) {
String objectName = schedule.getObjectName();
String className = schedule.getClassName();
// String className ="com.sitech.ismp.coll.CollMySQL";
Class mbeanclasses = null;
try {
Object mbeanclass = Class.forName(className).newInstance();
mbeanclasses = Class.forName(className);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Object mbeanclass = null;
try {
mbeanclass = mbeanclasses.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
try {
ObjectName name = new ObjectName(objectName);
... ... @@ -93,6 +107,7 @@ public class MBeanManager {
+ "},CLASS_NAME={" + className + "}");
} catch (Exception e) {
e.printStackTrace();
error.error("Exception while regist mbean. NAME={" + objectName
+ "},CLASS_NAME={" + className + "}", e);
}
... ...
... ... @@ -6,7 +6,6 @@ import com.sitech.database.dao.TbCfgEventDao;
import com.sitech.database.dao.TbCfgOidMibDao;
import com.sitech.database.domain.TbCfgEvent;
import com.sitech.database.domain.TbCfgOidMib;
import com.sitech.ismp.check.downtime.DowntimeDao;
import com.sitech.ismp.coll.cron.CronConstants;
import com.sitech.ismp.messageObject.*;
import com.sitech.jmx.manage.CollScheduleManager;
... ... @@ -69,7 +68,6 @@ public class ConfigSync implements ConfigSyncMBean {
extInfo.put("SCHEDULE_OPERATE",scheduleOperate);
removeCollSchedule(obj);
// removeMemDbCfgData(obj);
removeDowntimeMBean(obj);
// 删除内存数据库中相关的配置数据
scheStatus = "0";
if("1".equals(scheduleOperate)){
... ... @@ -165,16 +163,6 @@ public class ConfigSync implements ConfigSyncMBean {
}
}
/**
* 删除需要监控宕机的主机。
* @param obj
*/
private void removeDowntimeMBean(AgentSyncObject obj){
if(obj.getClassName().equals("com.sitech.ismp.check.downtime.Downtime")){
DowntimeDao dao = new DowntimeDao();
dao.deleteDowntimeHostByIp(obj.getParams().get("DEVICE_IP"));
}
}
/**
... ...
package com.sitech.snmptrap;
import com.sitech.database.dao.BaseDao;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* @author frank zmm@honggroup.com.cn
* @Description: 物理设备类对应dao。
* @Package com.sitech.snmptrap
* @ClassName: com.sitech.snmptrap.TbTopoPhysicalDeviceDao
* @date 2017年03月03日 10:20
*/
public class TbTopoPhysicalDeviceDao extends BaseDao {
/**
* 添加物理设备,如果该设备已经存在,则修改。
* @param physicalDevice
*/
public void addTbTopoPhysicalDevice(TbTopoPhysicalDeviceBean physicalDevice){
try {
int updateSum = sqlmapClient.update("updateTbTopoPhysicalDevice",physicalDevice);
if(updateSum == 0){
sqlmapClient.insert("addTbTopoPhysicalDevice", physicalDevice);
}
} catch (Exception e) {
error.error("Exception while addTbTopoPhysicalDevice.", e);
}
}
/**
* 按照设备ID删除设备。
* @param deviceId
*/
public int deleteTbTopoPhysicalDevice(String deviceId){
int result=0;
try {
result=sqlmapClient.delete("deleteTbTopoPhysicalDevice", deviceId);
} catch (Exception e) {
error.error("Exception while deleteTbTopoPhysicalDevice.", e);
}
return result;
}
public int deletePhysicalDeviceByIp(String ip){
try {
return sqlmapClient.delete("deletePhysicalDeviceByIp", ip);
} catch (Exception e) {
error.error("Exception while deletePhysicalDeviceByIp.", e);
}
return -1;
}
public List<TbTopoPhysicalDeviceBean> getPhysicalDeviceByIp(String deviceIp){
HashMap<String,String> param=new HashMap<String, String>();
param.put("DEVICE_IP",deviceIp);
List<TbTopoPhysicalDeviceBean> beanList=new ArrayList<TbTopoPhysicalDeviceBean>();
try {
beanList=sqlmapClient.queryForList("queryTbTopoPhysicalDevice", param);
} catch (SQLException e) {
e.printStackTrace();
}
return beanList;
}
}
... ...
package com.sitech.snmptrap;
import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL;
import java.util.HashMap;
import java.util.Vector;
/**
* @author frank zmm@honggroup.com.cn
* @Description: 物理设备操作MBean。
* @Package com.sitech.snmptrap
* @ClassName: com.sitech.snmptrap.TbTopoPhysicalDeviceMBean
* @date 2017年03月03日 11:42
*/
public interface TbTopoPhysicalDeviceMBean {
/**
* 添加(修改)物理设备
* @param params
* @return
*/
Vector<TblATO_KPIDETAIL> addDevice(HashMap params);
/**
* 删除物理设备
* @param deviceId 设备ID。
* @return
*/
String deleteDevice(String deviceId);
}
... ...