diff --git a/config/sqlmap.xml b/config/sqlmap.xml index 083e984..73af129 100644 --- a/config/sqlmap.xml +++ b/config/sqlmap.xml @@ -59,5 +59,8 @@ <sqlMap resource="com/sitech/topo/db/maps/TbTopoHostProcessListenMap.xml" /> <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" /> + </sqlMapConfig> diff --git a/db/mydb.script b/db/mydb.script index 6dcd27f..b664e79 100644 --- a/db/mydb.script +++ b/db/mydb.script @@ -31,6 +31,9 @@ CREATE MEMORY TABLE TB_TMP_INTERFACE(IP_ADDR VARCHAR(64),IF_INDEX VARCHAR(32),IF CREATE MEMORY TABLE TB_CFG_SNMP_PRI_KPI_CONVERT(KPI_ID VARCHAR(20) NOT NULL,SYS_OBJECT_ID VARCHAR(512) NOT NULL,EXPRESSION VARCHAR(128) NOT NULL) CREATE MEMORY TABLE TB_CFG_SNMP_PRI_OID(SYS_OBJECT_ID VARCHAR(512),NAME VARCHAR(32),OID VARCHAR(512)) CREATE MEMORY TABLE TB_CFG_OID_MIB(GUID VARCHAR(37) NOT NULL PRIMARY KEY,KPI_ID VARCHAR(20) NOT NULL,UNIT_ID VARCHAR(255),OID VARCHAR(100)) +CREATE MEMORY TABLE TB_TOPO_PHYSICAL_DEVICE(DEVICE_ID VARCHAR(50),DEVICE_IP VARCHAR(30),DEVICE_ALIAS VARCHAR(100),DEVICE_CATALOG VARCHAR(100),DEVICE_CNAME VARCHAR(100),KBP_CLASS VARCHAR(100),DEVICE_DESC VARCHAR(500),DEVICE_ROOM VARCHAR(100),DEVICE_RACK VARCHAR(100),CREATE_DATE TIMESTAMP) +CREATE MEMORY TABLE TB_DOWNTIME_HOST(DEVICE_ID VARCHAR(50),DEVICE_IP VARCHAR(30),DEVICE_ALIAS VARCHAR(100),KBP_CLASS VARCHAR(100),PROTOCOL VARCHAR(10),PROTOCOL_PORT VARCHAR(10),USER_NAME VARCHAR(50),PASSWORD VARCHAR(100),CREATE_DATE TIMESTAMP) +CREATE MEMORY TABLE TB_DOWNTIME_HOST_HISTORY(DEVICE_ID VARCHAR(50),DEVICE_IP VARCHAR(30),CREATE_DATE VARCHAR(10)) CREATE USER SA PASSWORD "" GRANT DBA TO SA SET WRITE_DELAY 20 @@ -67,6 +70,50 @@ INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.20 INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.77','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.23.98','Double.parseDouble(CPU_USAGE)') INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.23.98','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.923','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.923','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.340','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.340','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.864','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.864','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.516','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.516','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.876','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.876','Double.parseDouble(MEM_USED1)/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.45','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.45','Double.parseDouble(MEM_USED1)/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.914','(Double.parseDouble(CPU_USAGE1)+Double.parseDouble(CPU_USAGE2)+Double.parseDouble(CPU_USAGE3)+Double.parseDouble(CPU_USAGE4)+Double.parseDouble(CPU_USAGE5)+Double.parseDouble(CPU_USAGE6))/6') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.914','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_USED4))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_FREE3)+Double.parseDouble(MEM_USED4)+Double.parseDouble(MEM_FREE4))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.1198','(Double.parseDouble(CPU_USAGE1)+Double.parseDouble(CPU_USAGE2)+Double.parseDouble(CPU_USAGE3)+Double.parseDouble(CPU_USAGE4)+Double.parseDouble(CPU_USAGE5)+Double.parseDouble(CPU_USAGE6))/6') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.1198','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_USED4))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_FREE3)+Double.parseDouble(MEM_USED4)+Double.parseDouble(MEM_FREE4))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.3224.1.16','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.3224.1.16','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.3224.1.9','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.3224.1.9','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.3375.2.1.3.4.6','(Double.parseDouble(CPU_SYSTEM)+Double.parseDouble(CPU_USER))/2') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.3375.2.1.3.4.6','((Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.3','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.3','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.1','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.1','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.2','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.2','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.310','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.310','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.400','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.400','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.283','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.283','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.501','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.501','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.925','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.925','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.25506.1.391','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.25506.1.391','Double.parseDouble(MEM_USED)/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.23.39','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.23.39','Double.parseDouble(MEM_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.968','Double.parseDouble(CPU_USAGE)') +INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.968','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.110','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.110','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.110','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') @@ -118,134 +165,90 @@ INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.77','MEM_TOTAL','WALK INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.923','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.923','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.923','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.923','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.923','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.340','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.340','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.340','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.340','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.340','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.864','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.864','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.864','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.864','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.2') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.864','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.2') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.516','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.516','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.516','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.516','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.2') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.516','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.2') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.876','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.876','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.876','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.45','MEM_FREE1','1.3.6.1.4.1.2011.2.2.5.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.45','MEM_USED1','1.3.6.1.4.1.2011.2.2.5.1.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.45','CPU_USAGE','1.3.6.1.4.1.2011.2.2.4.12.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.16','MEM_FREE','.1.3.6.1.4.1.3224.16.2.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.16','MEM_USED','1.3.6.1.4.1.3224.16.2.1.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.16','CPU_USAGE','1.3.6.1.4.1.3224.16.1.1.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.9','MEM_FREE','.1.3.6.1.4.1.3224.16.2.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.9','MEM_USED','1.3.6.1.4.1.3224.16.2.1.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3224.1.9','CPU_USAGE','1.3.6.1.4.1.3224.16.1.1.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_USED3','1.3.6.1.4.1.9.9.48.1.1.1.5.7') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_USED4','1.3.6.1.4.1.9.9.48.1.1.1.5.8') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_FREE3','1.3.6.1.4.1.9.9.48.1.1.1.6.7') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','MEM_FREE4','1.3.6.1.4.1.9.9.48.1.1.1.6.8') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE1','1.3.6.1.4.1.9.9.109.1.1.1.1.4.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE2','1.3.6.1.4.1.9.9.109.1.1.1.1.4.2') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE3','1.3.6.1.4.1.9.9.109.1.1.1.1.4.3') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE4','1.3.6.1.4.1.9.9.109.1.1.1.1.4.4') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE5','1.3.6.1.4.1.9.9.109.1.1.1.1.4.5') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.914','CPU_USAGE6','1.3.6.1.4.1.9.9.109.1.1.1.1.4.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_USED3','1.3.6.1.4.1.9.9.48.1.1.1.5.7') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','MEM_FREE3','1.3.6.1.4.1.9.9.48.1.1.1.6.7') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','CPU_USAGE1','1.3.6.1.4.1.9.9.109.1.1.1.1.4.1') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','CPU_USAGE5','1.3.6.1.4.1.9.9.109.1.1.1.1.4.5') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.9.1.1198','CPU_USAGE6','1.3.6.1.4.1.9.9.109.1.1.1.1.4.6') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3375.2.1.3.4.6','MEM_TOTAL','.1.3.6.1.4.1.2021.4.5.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3375.2.1.3.4.6','MEM_FREE','.1.3.6.1.4.1.2021.4.6.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3375.2.1.3.4.6','CPU_SYSTEM','.1.3.6.1.4.1.2021.11.10.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.3375.2.1.3.4.6','CPU_USER','.1.3.6.1.4.1.2021.11.9.0') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.9.1.864','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.9.1.864','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.9.1.516','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.9.1.516','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.9.1.876','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.9.1.876','Double.parseDouble(MEM_USED1)/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.2011.2.45','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.2011.2.45','Double.parseDouble(MEM_USED1)/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.9.1.914','(Double.parseDouble(CPU_USAGE1)+Double.parseDouble(CPU_USAGE2)+Double.parseDouble(CPU_USAGE3)+Double.parseDouble(CPU_USAGE4)+Double.parseDouble(CPU_USAGE5)+Double.parseDouble(CPU_USAGE6))/6') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.9.1.914','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_USED4))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_FREE3)+Double.parseDouble(MEM_USED4)+Double.parseDouble(MEM_FREE4))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.9.1.1198','(Double.parseDouble(CPU_USAGE1)+Double.parseDouble(CPU_USAGE2)+Double.parseDouble(CPU_USAGE3)+Double.parseDouble(CPU_USAGE4)+Double.parseDouble(CPU_USAGE5)+Double.parseDouble(CPU_USAGE6))/6') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.9.1.1198','(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_USED4))/(Double.parseDouble(MEM_USED1)+Double.parseDouble(MEM_FREE1)+Double.parseDouble(MEM_USED2)+Double.parseDouble(MEM_FREE2)+Double.parseDouble(MEM_USED3)+Double.parseDouble(MEM_FREE3)+Double.parseDouble(MEM_USED4)+Double.parseDouble(MEM_FREE4))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.3224.1.16','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.3224.1.16','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.3224.1.9','Double.parseDouble(CPU_USAGE)') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.3224.1.9','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-06','1.3.6.1.4.1.3375.2.1.3.4.6','(Double.parseDouble(CPU_SYSTEM)+Double.parseDouble(CPU_USER))/2') -insert into TB_CFG_SNMP_PRI_KPI_CONVERT values('PM-00-02-001-07','1.3.6.1.4.1.3375.2.1.3.4.6','((Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL))*100') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.3','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.3','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.3','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.3','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.3','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.1','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.1','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.1','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.1','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.1','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.2','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.2','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') -insert into TB_CFG_SNMP_PRI_OID values('1.3.6.1.4.1.2011.2.170.2','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.170.2','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.170.2','(Double.parseDouble(MEM_TOTAL)-Double.parseDouble(MEM_FREE))/Double.parseDouble(MEM_TOTAL)*100') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.864','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.864','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.864','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.864','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.2') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.864','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.2') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.516','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.516','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.516','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.516','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.2') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.516','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.2') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.876','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.876','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.876','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.45','MEM_FREE1','1.3.6.1.4.1.2011.2.2.5.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.45','MEM_USED1','1.3.6.1.4.1.2011.2.2.5.1.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.45','CPU_USAGE','1.3.6.1.4.1.2011.2.2.4.12.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.16','MEM_FREE','.1.3.6.1.4.1.3224.16.2.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.16','MEM_USED','1.3.6.1.4.1.3224.16.2.1.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.16','CPU_USAGE','1.3.6.1.4.1.3224.16.1.1.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.9','MEM_FREE','.1.3.6.1.4.1.3224.16.2.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.9','MEM_USED','1.3.6.1.4.1.3224.16.2.1.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3224.1.9','CPU_USAGE','1.3.6.1.4.1.3224.16.1.1.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_USED3','1.3.6.1.4.1.9.9.48.1.1.1.5.7') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_USED4','1.3.6.1.4.1.9.9.48.1.1.1.5.8') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_FREE3','1.3.6.1.4.1.9.9.48.1.1.1.6.7') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','MEM_FREE4','1.3.6.1.4.1.9.9.48.1.1.1.6.8') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE1','1.3.6.1.4.1.9.9.109.1.1.1.1.4.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE2','1.3.6.1.4.1.9.9.109.1.1.1.1.4.2') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE3','1.3.6.1.4.1.9.9.109.1.1.1.1.4.3') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE4','1.3.6.1.4.1.9.9.109.1.1.1.1.4.4') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE5','1.3.6.1.4.1.9.9.109.1.1.1.1.4.5') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.914','CPU_USAGE6','1.3.6.1.4.1.9.9.109.1.1.1.1.4.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_USED1','1.3.6.1.4.1.9.9.48.1.1.1.5.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_USED2','1.3.6.1.4.1.9.9.48.1.1.1.5.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_USED3','1.3.6.1.4.1.9.9.48.1.1.1.5.7') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_FREE1','1.3.6.1.4.1.9.9.48.1.1.1.6.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_FREE2','1.3.6.1.4.1.9.9.48.1.1.1.6.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','MEM_FREE3','1.3.6.1.4.1.9.9.48.1.1.1.6.7') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','CPU_USAGE1','1.3.6.1.4.1.9.9.109.1.1.1.1.4.1') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','CPU_USAGE5','1.3.6.1.4.1.9.9.109.1.1.1.1.4.5') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.1198','CPU_USAGE6','1.3.6.1.4.1.9.9.109.1.1.1.1.4.6') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3375.2.1.3.4.6','MEM_TOTAL','.1.3.6.1.4.1.2021.4.5.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3375.2.1.3.4.6','MEM_FREE','.1.3.6.1.4.1.2021.4.6.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3375.2.1.3.4.6','CPU_SYSTEM','.1.3.6.1.4.1.2021.11.10.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.3375.2.1.3.4.6','CPU_USER','.1.3.6.1.4.1.2021.11.9.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.3','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.3','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.3','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.1','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.1','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.1','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.2','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.2','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2.0') +INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.170.2','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.310','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.310','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.310','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.310','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.310','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.400','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.400','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.400','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.400','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.400','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.283','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.283','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.283','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.283','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.283','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.501','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.501','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.501','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.23.98','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.3.4.1.2') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.23.98','MEM_FREE','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.3') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.23.98','MEM_TOTAL','WALK:1.3.6.1.4.1.2011.6.3.5.1.1.2') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.501','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.501','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.925','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.925','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.925','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.925','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.925','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.25506.1.391','CPU_USAGE','WALK:1.3.6.1.4.1.25506.2.6.1.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.25506.1.391','MEM_USED','WALK:1.3.6.1.4.1.25506.2.6.1.1.1.1.8') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.25506.1.391','MEM_TOTAL','WALK:1.3.6.1.4.1.25506.2.6.1.1.1.1.10') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.25506.1.391','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.25506.1.391','Double.parseDouble(MEM_USED)/Double.parseDouble(MEM_TOTAL)*100')INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.25506.1.391','MEM_USED','WALK:1.3.6.1.4.1.25506.2.6.1.1.1.1.8') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.23.39','CPU_USAGE','WALK:1.3.6.1.4.1.2011.6.7.1.2') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.2011.2.23.39','MEM_USAGE','WALK:1.3.6.1.4.1.2011.6.1.1.1.2') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.2011.2.23.39','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.2011.2.23.39','Double.parseDouble(MEM_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-06','1.3.6.1.4.1.9.1.968','Double.parseDouble(CPU_USAGE)') -INSERT INTO TB_CFG_SNMP_PRI_KPI_CONVERT VALUES('PM-00-02-001-07','1.3.6.1.4.1.9.1.968','Double.parseDouble(MEM_USED)/(Double.parseDouble(MEM_USED)+Double.parseDouble(MEM_FREE))*100') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.968','CPU_USAGE','1.3.6.1.4.1.9.2.1.57.0') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.968','MEM_FREE','WALK:1.3.6.1.4.1.9.9.48.1.1.1.6') INSERT INTO TB_CFG_SNMP_PRI_OID VALUES('1.3.6.1.4.1.9.1.968','MEM_USED','WALK:1.3.6.1.4.1.9.9.48.1.1.1.5') diff --git a/libs/messageObject.jar b/libs/messageObject.jar index 07b55a1..4e33d73 100644 Binary files a/libs/messageObject.jar and b/libs/messageObject.jar differ diff --git a/src/com/sitech/database/maps/DowntimeMap.xml b/src/com/sitech/database/maps/DowntimeMap.xml new file mode 100644 index 0000000..9485535 --- /dev/null +++ b/src/com/sitech/database/maps/DowntimeMap.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!DOCTYPE sqlMap + PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" + "http://www.ibatis.com/dtd/sql-map-2.dtd"> + +<sqlMap namespace="TB_DOWNTIME_HOST"> + <typeAlias alias="downtimeBean" type="com.sitech.ismp.check.downtime.DowntimeBean" /> + + <select id="getDowntimeByIp" resultClass="downtimeBean" parameterClass="java.util.HashMap"> + SELECT + DEVICE_ID, + DEVICE_IP, + DEVICE_ALIAS, + KBP_CLASS, + PROTOCOL, + PROTOCOL_PORT, + USER_NAME, + PASSWORD, + CREATE_DATE + FROM TB_DOWNTIME_HOST + <isNotEmpty property="DEVICE_IP"> + WHERE DEVICE_IP IN #DEVICE_IP# + </isNotEmpty> + + </select> + + <insert id="addDowntimeHost" parameterClass="downtimeBean"> + INSERT INTO TB_DOWNTIME_HOST ( + DEVICE_ID, + DEVICE_IP, + DEVICE_ALIAS, + KBP_CLASS, + PROTOCOL, + PROTOCOL_PORT, + USER_NAME, + PASSWORD, + CREATE_DATE) + VALUES ( + #DEVICE_ID#, + #DEVICE_IP#, + #DEVICE_ALIAS#, + #KBP_CLASS#, + #PROTOCOL#, + #PROTOCOL_PORT#, + #USER_NAME#, + #PASSWORD#, + #CREATE_DATE#); + </insert> + + + <delete id="deleteDowntimeHostByIp" parameterClass="java.lang.String"> + DELETE FROM TB_DOWNTIME_HOST WHERE DEVICE_IP=#ip# + </delete> + + <update id="updateDowntimeHostByIp" parameterClass="downtimeBean"> + UPDATE TB_DOWNTIME_HOST SET + <isNotEmpty property="PROTOCOL_PORT"> + PROTOCOL_PORT = #PROTOCOL_PORT#, + </isNotEmpty> + <isNotEmpty property="USER_NAME"> + USER_NAME = #USER_NAME#, + </isNotEmpty> + <isNotEmpty property="PASSWORD"> + PASSWORD = #PASSWORD#, + </isNotEmpty> + DEVICE_ALIAS = #DEVICE_ALIAS# + WHERE DEVICE_IP = #DEVICE_IP# + </update> + +</sqlMap> diff --git a/src/com/sitech/database/maps/DowntimeMapHistory.xml b/src/com/sitech/database/maps/DowntimeMapHistory.xml new file mode 100644 index 0000000..c9e6b93 --- /dev/null +++ b/src/com/sitech/database/maps/DowntimeMapHistory.xml @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!DOCTYPE sqlMap + PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" + "http://www.ibatis.com/dtd/sql-map-2.dtd"> + +<sqlMap namespace="TB_DOWNTIME_HOST_HISTORY"> + <typeAlias alias="downtimeHistoryBean" type="com.sitech.ismp.check.downtime.DowntimeHistoryBean" /> + + <select id="getDowntimeHistoryByIp" resultClass="downtimeHistoryBean" parameterClass="java.util.HashMap"> + SELECT + DEVICE_ID,DEVICE_IP,CREATE_DATE FROM + TB_DOWNTIME_HOST_HISTORY + WHERE DEVICE_IP = #DEVICE_IP# AND CREATE_DATE= #CREATE_DATE# + + </select> + + <insert id="addDowntimeHistory" parameterClass="downtimeHistoryBean"> + INSERT INTO TB_DOWNTIME_HOST_HISTORY ( + DEVICE_ID, DEVICE_IP, CREATE_DATE) + VALUES (#DEVICE_ID#, #DEVICE_IP#, #CREATE_DATE#); + </insert> + + + <delete id="deleteDowntimeHistory" parameterClass="java.lang.String"> + DELETE FROM TB_DOWNTIME_HOST_HISTORY + </delete> + +</sqlMap> diff --git a/src/com/sitech/database/maps/TbTopoPhysicalDeviceMap.xml b/src/com/sitech/database/maps/TbTopoPhysicalDeviceMap.xml new file mode 100644 index 0000000..3d35ada --- /dev/null +++ b/src/com/sitech/database/maps/TbTopoPhysicalDeviceMap.xml @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<!DOCTYPE sqlMap + PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" + "http://www.ibatis.com/dtd/sql-map-2.dtd"> + +<sqlMap namespace="TB_TOPO_PHYSICAL_DEVICE"> + <typeAlias alias="tbTopoPhysicalDevice" type="com.sitech.snmptrap.TbTopoPhysicalDeviceBean" /> + + <select id="queryTbTopoPhysicalDevice" resultClass="tbTopoPhysicalDevice" parameterClass="java.util.HashMap"> + SELECT + DEVICE_ID, + DEVICE_IP, + DEVICE_ALIAS, + DEVICE_CATALOG, + DEVICE_CNAME, + KBP_CLASS, + DEVICE_DESC, + DEVICE_ROOM, + DEVICE_RACK, + CREATE_DATE + FROM TB_TOPO_PHYSICAL_DEVICE + <isNotEmpty property="DEVICE_IP"> + WHERE DEVICE_IP IN #DEVICE_IP# + </isNotEmpty> + + </select> + + <insert id="addTbTopoPhysicalDevice" parameterClass="tbTopoPhysicalDevice"> + INSERT INTO TB_TOPO_PHYSICAL_DEVICE ( + DEVICE_ID, + DEVICE_IP, + DEVICE_ALIAS, + DEVICE_CATALOG, + DEVICE_CNAME, + KBP_CLASS, + DEVICE_DESC, + DEVICE_ROOM, + DEVICE_RACK, + CREATE_DATE) + VALUES ( + #DEVICE_ID#, + #DEVICE_IP#, + #DEVICE_ALIAS#, + #DEVICE_CATALOG#, + #DEVICE_CNAME#, + #KBP_CLASS#, + #DEVICE_DESC#, + #DEVICE_ROOM#, + #DEVICE_RACK#, + #CREATE_DATE#); + + </insert> + + + <delete id="deleteTbTopoPhysicalDevice" parameterClass="java.lang.String"> + delete from TB_TOPO_PHYSICAL_DEVICE WHERE DEVICE_ID=#deviceId# + </delete> + <delete id="deletePhysicalDeviceByIp" parameterClass="java.lang.String"> + delete from TB_TOPO_PHYSICAL_DEVICE where DEVICE_IP=#ip# + </delete> + + <update id="updateTbTopoPhysicalDevice" parameterClass="tbTopoPhysicalDevice"> + UPDATE TB_TOPO_PHYSICAL_DEVICE SET + <isNotEmpty property="DEVICE_DESC"> + DEVICE_DESC = #DEVICE_DESC#, + </isNotEmpty> + <isNotEmpty property="DEVICE_ROOM"> + DEVICE_ROOM = #DEVICE_ROOM#, + </isNotEmpty> + <isNotEmpty property="DEVICE_RACK"> + DEVICE_RACK = #DEVICE_RACK#, + </isNotEmpty> + DEVICE_ALIAS = #DEVICE_ALIAS#, + DEVICE_CNAME = #DEVICE_CNAME# + WHERE DEVICE_IP = #DEVICE_IP# + </update> + +</sqlMap> diff --git a/src/com/sitech/ismp/check/downtime/DownTimeBean.java b/src/com/sitech/ismp/check/downtime/DownTimeBean.java new file mode 100644 index 0000000..8cc7411 --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DownTimeBean.java @@ -0,0 +1,169 @@ +package com.sitech.ismp.check.downtime; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 宕机表对应的bean。 + * @Package com.sitech.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeBean + * @date 2017年04月16日 13:30 + */ +public class DowntimeBean implements Serializable{ + + // 设备ID + private String DEVICE_ID; + // 设备IP地址 + private String DEVICE_IP; + // 设备别名 + private String DEVICE_ALIAS; + // kbp_class 设备的分类 + private String KBP_CLASS; + // 连接协议(ssh/telnet) + private String PROTOCOL; + // 协议端口 + private int PROTOCOL_PORT; + // 用户名 + private String USER_NAME; + // 密码 + private String PASSWORD; + // 创建日期 + private Date CREATE_DATE; + // ping IP 后的结果 + private boolean pingState; + // ping后进行ssh连接后的状态。 + private boolean sshState; + // 告警级别 1 严重告警;2 重要告警 + private int warningLevel; + // ping后进行ssh连接后的结果,即重要告警还是严重告警。 + private String warningResult; + + private String unitId; + + public String getDEVICE_ID() { + return DEVICE_ID; + } + + public void setDEVICE_ID(String DEVICE_ID) { + this.DEVICE_ID = DEVICE_ID; + } + + public String getDEVICE_IP() { + return DEVICE_IP; + } + + public void setDEVICE_IP(String DEVICE_IP) { + this.DEVICE_IP = DEVICE_IP; + } + + public String getDEVICE_ALIAS() { + return DEVICE_ALIAS; + } + + public void setDEVICE_ALIAS(String DEVICE_ALIAS) { + this.DEVICE_ALIAS = DEVICE_ALIAS; + } + + public String getKBP_CLASS() { + return KBP_CLASS; + } + + public void setKBP_CLASS(String KBP_CLASS) { + this.KBP_CLASS = KBP_CLASS; + } + + public String getPROTOCOL() { + return PROTOCOL; + } + + public void setPROTOCOL(String PROTOCOL) { + this.PROTOCOL = PROTOCOL; + } + + public int getPROTOCOL_PORT() { + return PROTOCOL_PORT; + } + + public void setPROTOCOL_PORT(int PROTOCOL_PORT) { + this.PROTOCOL_PORT = PROTOCOL_PORT; + } + + public String getUSER_NAME() { + return USER_NAME; + } + + public void setUSER_NAME(String USER_NAME) { + this.USER_NAME = USER_NAME; + } + + public String getPASSWORD() { + return PASSWORD; + } + + public void setPASSWORD(String PASSWORD) { + this.PASSWORD = PASSWORD; + } + + public Date getCREATE_DATE() { + return CREATE_DATE; + } + + public void setCREATE_DATE(Date CREATE_DATE) { + this.CREATE_DATE = CREATE_DATE; + } + + public boolean isPingState() { + return pingState; + } + + public void setPingState(boolean pingState) { + this.pingState = pingState; + } + + public boolean isSshState() { + return sshState; + } + + public void setSshState(boolean sshState) { + this.sshState = sshState; + } + + public String getWarningResult() { + return warningResult; + } + + public void setWarningResult(String warningResult) { + this.warningResult = warningResult; + } + + public int getWarningLevel() { + return warningLevel; + } + + public void setWarningLevel(int warningLevel) { + this.warningLevel = warningLevel; + } + + public String getUnitId() { + return unitId; + } + + public void setUnitId(String unitId) { + this.unitId = unitId; + } + + @Override + public String toString() { + return "DowntimeBean{" + + " DEVICE_IP='" + DEVICE_IP + '\'' + + ", pingState=" + pingState + + ", sshState=" + sshState + + ", warningResult='" + warningResult + '\'' + + ", DEVICE_ALIAS='" + DEVICE_ALIAS + '\'' + + ", USER_NAME='" + USER_NAME + '\'' + + ", warningLevel=" + warningLevel + + '}'; + } + +} diff --git a/src/com/sitech/ismp/check/downtime/Downtime.java b/src/com/sitech/ismp/check/downtime/Downtime.java new file mode 100644 index 0000000..2c7d7db --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/Downtime.java @@ -0,0 +1,72 @@ +package com.sitech.ismp.check.downtime; + +import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL; +import org.apache.log4j.Logger; + +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 宕机检测MBean实现类 + * @Package com.sitech.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.Downtime + * @date 2017年04月15日 13:43 + */ +public class Downtime implements DowntimeMBean { + + private static Logger log= Logger.getLogger(Downtime.class); + + + DowntimeDao dao=new DowntimeDao(); + DowntimeHistoryDao historyDao=new DowntimeHistoryDao(); + SimpleDateFormat formaF=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + + /** + * 检查主机的连接状态。如果连接异常,需要每隔30秒连续连接3次,如果3次连接都异常,则视为主机宕机,发送严重告警。 + * 1 将需要监控的设备添加到内存数据库中。 + * 2 对表中的主机进行ping操作。 + * 3 对表中的主机进行SSH登录认证 + * 4 发送告警信息 + * @param params + * @return + */ + @Override + public Vector<TblATO_KPIDETAIL> checkConnectState(HashMap<String,String> params){ + dao.addDowntimeHost(params); + String ipAddr=params.get("DEVICE_IP"); + boolean flag=isNeedExecuteCheckMethod(ipAddr); + if(flag){ + log.info("*************"+ formaF.format(new Date()) +" execute method checkConnectState ................."); + // 将需要监控的设备添加到内存数据库中。 + DowntimeBean bean=dao.map2DowntimeBean(params); + DowntimeServer server=new DowntimeServer(bean); + // 包括 2-4 需要执行的内容。 如果监控的设备很多的时候,使用单线程可能一个监控周期都不能ping完所有的主机。 + server.run(); + log.info("@@@@@@@@@@@@@@@@@@@@@@***** finish run method *****@@@@@@@@@@@@@@@@@@@@@@@@@@@"); + log.info(bean.toString()); + } + Vector<TblATO_KPIDETAIL> bean = new Vector<TblATO_KPIDETAIL>(); + return bean; + } + + + + /** + * 是否执行checkConnectState 方法。 + * 判断当前IP是否发送过告警信息。每天一个主机只发送1条告警信息。 + * @return + */ + private boolean isNeedExecuteCheckMethod(String ipAddr){ + boolean flag=true; // 是否该ipAddr已经发送过消息。 + SimpleDateFormat formaF=new SimpleDateFormat("yyyy-MM-dd"); + String currentDay=formaF.format(new Date()); + List<DowntimeHistoryBean> list=historyDao.getDowntimeHistoryByIp(ipAddr,currentDay); + if(null !=list && list.size()>0){ + flag=false; + } + return flag; + } + + +} diff --git a/src/com/sitech/ismp/check/downtime/DowntimeDao.java b/src/com/sitech/ismp/check/downtime/DowntimeDao.java new file mode 100644 index 0000000..6acf601 --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DowntimeDao.java @@ -0,0 +1,89 @@ +package com.sitech.ismp.check.downtime; + +import com.sitech.database.dao.BaseDao; +import org.apache.log4j.Logger; + +import java.sql.SQLException; +import java.util.*; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 宕机检测MBean对应dao类 + * @Package com.sitech.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeDao + * @date 2017年04月16日 14:15 + */ +public class DowntimeDao extends BaseDao { + + private static Logger log=Logger.getLogger(DowntimeDao.class); + + /** + * 添加需要监控宕机情况的设备,如果该设备已经存在,则修改。 + */ + public void addDowntimeHost(HashMap<String,String> params){ + DowntimeBean downtimeBean=map2DowntimeBean(params); + addDowntimeHost(downtimeBean); + } + + public void addDowntimeHost(DowntimeBean downtimeBean){ + try { + int updateSum = sqlmapClient.update("updateDowntimeHostByIp",downtimeBean); + if(updateSum == 0){ + sqlmapClient.insert("addDowntimeHost", downtimeBean); + } + } catch (Exception e) { + error.error("Exception while addDowntimeHost.", e); + } + } + + + /** + * 根据IP删除对应的记录。 + * @param ip + * @return + */ + public int deleteDowntimeHostByIp(String ip){ + try { + return sqlmapClient.delete("deleteDowntimeHostByIp", ip); + } catch (Exception e) { + error.error("Exception while deleteDowntimeHostByIp.", e); + } + return -1; + } + + /** + * 根据IP查询对应的记录。 + * @param deviceIp + * @return + */ + public List<DowntimeBean> getDowntimeByIp(String deviceIp){ + HashMap<String,String> param=new HashMap<String, String>(); + param.put("DEVICE_IP",deviceIp); + List<DowntimeBean> beanList=new ArrayList<DowntimeBean>(); + try { + beanList=sqlmapClient.queryForList("getDowntimeByIp", param); + } catch (SQLException e) { + e.printStackTrace(); + } + return beanList; + } + + public DowntimeBean map2DowntimeBean(HashMap<String,String> params){ + DowntimeBean bean=new DowntimeBean(); + try { + bean.setDEVICE_ID(UUID.randomUUID().toString()); + bean.setDEVICE_IP(params.get("DEVICE_IP")); + bean.setDEVICE_ALIAS(params.get("DEVICE_ALIAS")); + bean.setKBP_CLASS(params.get("KBP_CLASS") + "-99"); + bean.setPROTOCOL(params.get("PROTOCOL")); + bean.setPROTOCOL_PORT(Integer.parseInt(params.get("PROTOCOL_PORT"))); + bean.setUSER_NAME(params.get("USER_NAME")); + bean.setPASSWORD(params.get("PASSWORD")); + bean.setCREATE_DATE(new Date()); + }catch (Exception e){ + log.error("addDowntimeHost, write values to DowntimeBean has error!",e); + } + return bean; + } + +} diff --git a/src/com/sitech/ismp/check/downtime/DowntimeHistoryBean.java b/src/com/sitech/ismp/check/downtime/DowntimeHistoryBean.java new file mode 100644 index 0000000..dae48fc --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DowntimeHistoryBean.java @@ -0,0 +1,50 @@ +package com.sitech.ismp.check.downtime; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 发送告警的历史记录bean。 + * @Package com.sitech.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeHistoryBean + * @date 2017年04月19日 14:04 + */ +public class DowntimeHistoryBean { + // 设备ID + private String DEVICE_ID; + // 设备IP地址 + private String DEVICE_IP; + // 创建日期 + private String CREATE_DATE; + + public String getDEVICE_ID() { + return DEVICE_ID; + } + + public void setDEVICE_ID(String DEVICE_ID) { + this.DEVICE_ID = DEVICE_ID; + } + + public String getDEVICE_IP() { + return DEVICE_IP; + } + + public void setDEVICE_IP(String DEVICE_IP) { + this.DEVICE_IP = DEVICE_IP; + } + + public String getCREATE_DATE() { + return CREATE_DATE; + } + + public void setCREATE_DATE(String CREATE_DATE) { + this.CREATE_DATE = CREATE_DATE; + } + + @Override + public String toString() { + return "DowntimeHistoryBean{" + + "DEVICE_ID='" + DEVICE_ID + '\'' + + ", DEVICE_IP='" + DEVICE_IP + '\'' + + ", CREATE_DATE='" + CREATE_DATE + '\'' + + '}'; + } +} diff --git a/src/com/sitech/ismp/check/downtime/DowntimeHistoryDao.java b/src/com/sitech/ismp/check/downtime/DowntimeHistoryDao.java new file mode 100644 index 0000000..bdccb1a --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DowntimeHistoryDao.java @@ -0,0 +1,65 @@ +package com.sitech.ismp.check.downtime; + +import com.sitech.database.dao.BaseDao; +import org.apache.log4j.Logger; + +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.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeHistoryDao + * @date 2017年04月19日 14:06 + */ +public class DowntimeHistoryDao extends BaseDao { + private static Logger log=Logger.getLogger(DowntimeHistoryDao.class); + + /** + * 添加告警信息 + * @param bean + */ + public void addDowntimeHistory(DowntimeHistoryBean bean){ + try { + sqlmapClient.insert("addDowntimeHistory", bean); + } catch (SQLException e) { + log.error("Exception while addDowntimeHistory.",e); + } + } + + /** + * + * @param deviceIp + * @param createDate + * @return + */ + public List<DowntimeHistoryBean> getDowntimeHistoryByIp(String deviceIp,String createDate){ + HashMap<String,String> param=new HashMap<String, String>(); + param.put("DEVICE_IP",deviceIp); + param.put("CREATE_DATE",createDate); + List<DowntimeHistoryBean> beanList=new ArrayList<DowntimeHistoryBean>(); + try { + beanList=sqlmapClient.queryForList("getDowntimeHistoryByIp", param); + } catch (SQLException e) { + e.printStackTrace(); + } + return beanList; + } + + /** + * 删除表中的所有数据。 + * @return + */ + public int deleteDowntimeHistory(){ + try { + return sqlmapClient.delete("deleteDowntimeHistory", null); + } catch (Exception e) { + error.error("Exception while deleteDowntimeHistory.", e); + } + return -1; + } + +} diff --git a/src/com/sitech/ismp/check/downtime/DowntimeMBean.java b/src/com/sitech/ismp/check/downtime/DowntimeMBean.java new file mode 100644 index 0000000..e60735e --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DowntimeMBean.java @@ -0,0 +1,24 @@ +package com.sitech.ismp.check.downtime; + +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.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeMBean + * @date 2017年04月15日 13:42 + */ +public interface DowntimeMBean { + /** + * 检查主机的连接状态。如果连接异常,需要每隔30秒连续连接3次,如果3次连接都异常,则视为主机宕机,发送严重告警。 + * @param params + * @return + */ + public Vector<TblATO_KPIDETAIL> checkConnectState(HashMap<String,String> params); + + +} diff --git a/src/com/sitech/ismp/check/downtime/DowntimeServer.java b/src/com/sitech/ismp/check/downtime/DowntimeServer.java new file mode 100644 index 0000000..639f8e5 --- /dev/null +++ b/src/com/sitech/ismp/check/downtime/DowntimeServer.java @@ -0,0 +1,337 @@ +package com.sitech.ismp.check.downtime; + +import com.sitech.ismp.app.event.KPI2Event; +import com.sitech.ismp.coll.basic.TblATO_EVENT; +import com.sitech.util.Base62Util; +import com.sitech.util.RandomGUID; +import com.sitech.util.upload.RomoteController; +import com.sitech.util.upload.SSHThread; +import com.sitech.util.upload.TelnetThread; +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 宕机检测MBean对应Server类。 + * ping的布尔结果 true:能ping通, false:ping不通 + * ssh连接的布尔结果 true:能ssh连接, false:ssh连接异常 + * @Package com.sitech.ismp.check.downtime + * @ClassName: com.sitech.ismp.check.downtime.DowntimeServer + * @date 2017年04月12日 16:22 + */ +public class DowntimeServer implements Runnable{ + + private static Logger log=Logger.getLogger(DowntimeServer.class); + private DowntimeBean bean; + DowntimeHistoryDao historyDao=new DowntimeHistoryDao(); + + public DowntimeServer(DowntimeBean bean){ + this.bean=bean; + } + + /** + * 1 对表中的主机进行ping操作。 + * 2 对表中的主机进行SSH登录认证。 + * 3 发送告警信息。 + */ + @Override + public void run(){ + getPingResult(bean); + getSshResult(bean); + sendEvent2Workstation(bean); + } + + /** + * 将每个IP ping后的结果设置到pingState属性上。 + * @param bean + * @return + */ + public void getPingResult(DowntimeBean bean){ + String ipAddr=null; + log.info("============================== ping all parames ======================"); + log.info(bean.toString()); + ipAddr=bean.getDEVICE_IP(); + boolean temp=pingIpAddress(ipAddr); + bean.setPingState(temp); + + } + + /** + * 进行SSH连接,并设置对应告警的内容。 + * @param bean + * @return + */ + public void getSshResult(DowntimeBean bean){ + boolean pingState=bean.isPingState(); // true:能ping通, false:ping不通 + log.info("========== pingState=== "+pingState+"=========="); + boolean sshState=contentWithSsh(bean); + log.info("========== sshState=== "+sshState+"=========="); + if(!pingState){ // ping 不通 false + if(!sshState){ // ssh 不能连接 严重告警 + bean.setWarningLevel(1); + bean.setWarningResult(bean.getDEVICE_IP()+" 的主机连接异常,请检查网络是否正常或主机宕机!"); + log.info("========== bean.setWarningResult sshState ="+sshState+",=ip is ["+bean.getDEVICE_IP()+"] host connect error"); + } + }else{ //能ping 通 + if(!sshState){ // ssh 不能连接 重要告警 + bean.setWarningLevel(2); + bean.setWarningResult(bean.getDEVICE_IP()+" 的主机不能进行登录,请检查用户名或密码!!"); + log.info("========== bean.setWarningResult sshState ="+sshState+",=ip is["+bean.getDEVICE_IP()+"] host login error"); + } + } + } + + /** + * 将告警信息发送到Workstation。 + * 当ping的结果为false的时候才发送。 + * @param bean + */ + private void sendEvent2Workstation(DowntimeBean bean){ + log.info("******************************************************"); + log.info("*************** sendEvent2Workstation ****************"); + log.info("******************************************************"); + log.info(bean.toString()); + if(!bean.isSshState()){ + KPI2Event event=new KPI2Event(); + TblATO_EVENT tblato_event = new TblATO_EVENT(); + String eventId= RandomGUID.getRandomGUID(); + try { + tblato_event.setEVENT_ID(eventId); // 随即生成一个GUID作为唯一键 + tblato_event.setUNIT_ID(bean.getUnitId()); // UNIT_ID在页面显示的为平台类型。 + tblato_event.setKPI_ID("FM-00-01-001-999"); + tblato_event.setKPI_VALUE(bean.getWarningResult()); + tblato_event.setEVENT_TITLE(bean.getWarningResult()); + tblato_event.setEVENT_CLASS(bean.getWarningLevel()); // 告警级别 + tblato_event.setCLL_TIME(new java.util.Date()); + tblato_event.setGENERANT_TIME(new java.util.Date()); + tblato_event.setCFG_GUID(RandomGUID.getRandomGUID()); + log.info("hava finish set values to TblATO_EVENT!"); + } catch (ParseException e) { + log.error("set values to TblATO_EVENT hava error!",e); + } + try { + event.sendEvent2Workstation(tblato_event); + addDowntimeHistory(bean); + log.info("have write object(TblATO_EVENT) to Workstation!"); + } catch (Exception e) { + log.error("have write object(TblATO_EVENT) to Workstation have error!",e); + } + } + } + + + private void addDowntimeHistory(DowntimeBean bean){ + DowntimeHistoryBean historyBean=new DowntimeHistoryBean(); + historyBean.setDEVICE_ID(bean.getDEVICE_ID()); + historyBean.setDEVICE_IP(bean.getDEVICE_IP()); + SimpleDateFormat formaF=new SimpleDateFormat("yyyy-MM-dd"); + String date=formaF.format(new Date())+""; + date=date.substring(0,10); + historyBean.setCREATE_DATE(date); + historyDao.addDowntimeHistory(historyBean); + } + + + /** + * 获取ping 后的结果,是否可以平通指定的IP。 + * @param ipAddr + * @return + */ + private boolean pingIpAddress(String ipAddr){ + int pingErrorCount=0; // ping 不通的次数,ping3次。 + int interval=8; // 时间间隔8秒。 + boolean flag=false; + boolean temp=false; + for(int i=0;i<3;i++){ + temp=executeCommand(ipAddr); // ping不通返回false。 + log.info("["+ipAddr+"]ping result is ["+temp+"],(true:can connect;false:can't connect)"); + if(!temp){ + pingErrorCount++; + } + try { + Thread.sleep(interval*1000); + log.info("ping ["+ipAddr+"] trread sleep "+interval+" secound........"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + if(pingErrorCount == 3){ + log.info("["+ipAddr+"] can't connect 3 times."); + }else{ + flag=true; + log.info("["+ipAddr+"] can connect."); + } + return flag; + } + + + /** + * 进行ssh连接,判断是否可以连接成功。 + * windows操作系统使用 TelnetThread类连接。 Windows的客户端需要配置并开启Telnet相关的服务。 + * @return + */ + private boolean contentWithSsh(DowntimeBean bean){ + String protocol=bean.getPROTOCOL(); + String ipAddr=bean.getDEVICE_IP(); + String deviceAlias=bean.getDEVICE_ALIAS(); + int protocolPort=bean.getPROTOCOL_PORT(); + String userName=bean.getUSER_NAME(); + String password=bean.getPASSWORD(); + bean.setUnitId(getUnitId(deviceAlias)); + log.info("execute contentWithSsh method ......"); + boolean temp=false; + RomoteController tt = null; + log.info("host params is: ipAddr="+ipAddr+",protocol="+protocol+",protocolPort="+protocolPort+",userName="+userName); + if(loginParamterIsOk(protocol,ipAddr,protocolPort,userName,password,deviceAlias)){ + try { + if (protocol != null && protocol.equalsIgnoreCase("telnet")) { + tt = new TelnetThread(ipAddr, protocolPort, userName, password); + } else if (protocol != null && protocol.equalsIgnoreCase("ssh")) { + tt = new SSHThread(ipAddr, protocolPort, userName, password); + }else{ + log.error("===================== unknown protocol ====================="); + } + }catch (Exception e){ + log.error(protocol+"connect have exception!"); + } + tt.initial(); + boolean flag=tt.isAuthorized(); + log.info("******************* tt.isAuthorized() result is "+flag); + if (flag){ // 认证通过 + log.info(ipAddr+" SSH connect,Authorized result is true authorized success!"); + temp=true; + bean.setSshState(true); + }else{ + log.info(ipAddr+" SSH connect,Authorized result is false authorized fail!!"); + bean.setSshState(false); + } + } + return temp; + } + + + /** + * 判断所有的参数是否为空。 + * @param protocol 协议类型 + * @param ipAddr IP地址 + * @param protocolPort 协议端口 + * @param userName 用户名 + * @param password 密码 + * @param deviceAlias 主机别名 + * @return + */ + private boolean loginParamterIsOk(String protocol,String ipAddr,int protocolPort,String userName, + String password,String deviceAlias){ + boolean flag=true; + if(StringUtils.isEmpty(protocol)){ + flag=false; + } + if(StringUtils.isEmpty(ipAddr)){ + flag=false; + } + if(StringUtils.isEmpty(protocolPort+"")){ + flag=false; + } + if(StringUtils.isEmpty(userName)){ + flag=false; + } + if(StringUtils.isEmpty(password)){ + flag=false; + } + if(StringUtils.isEmpty(deviceAlias)){ + flag=false; + } + return flag; + } + + + private String getUnitId(String deviceAlias){ + StringBuffer bf=new StringBuffer("10-10-99-98:"); + bf.append(deviceAlias).append("_").append(getEncryptStr()); + return bf.toString(); + } + + /** + * 返回加密后的一个唯一字符串。 + * @return + */ + private String getEncryptStr(){ + SimpleDateFormat forma=new SimpleDateFormat("yyMMddHHmmss"); + Random rr= new Random(); + String str=rr.nextInt(999)+forma.format(new Date())+rr.nextInt(999); + return Base62Util.encode(Long.parseLong(str)); + } + + + /** + * 返回ping后的结果。 + * @param ipAddr ip 地址。 + * @return + */ + private boolean executeCommand(String ipAddr){ + String command = "/bin/ping -c 3 -w 3 " + ipAddr;; + // 执行command 命令。 + boolean flag=false; + String line = null; + StringBuilder sb = new StringBuilder(); + Runtime runtime = Runtime.getRuntime(); + Process process = null; + long startTime = new Date().getTime(); + try { + process = runtime.exec(command); + } catch (IOException e) { + log.error("execute command ["+command+"] has some error!"); + } + BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); + try { + while ((line = bufferedReader.readLine()) != null) { + sb.append(line + "\n"); + } + } catch (IOException e) { + log.error("======== bufferedReader.readLine() has some error!"); + } + + String pingResult=sb.toString(); + /** + * 当执行结果出现下面字符说明已经执行完成。 + * ping 通的时候 结果包含【min/avg/max/mdev】 + * ping 不通的时候 结果包含【100% packet loss】 + */ + if(pingResult.contains("100% packet loss") || (pingResult.contains("min/avg/max/mdev"))){ + process.destroy(); + log.info("execute command ["+command+"] finish!"); + } + + + String os = System.getProperty("os.name").toLowerCase(); + log.info("------------ operator system is :" + os); + + // 解析command命令结果,包含【100% packet loss】 意味着ping不通,返回 false。 + if(os.indexOf("linux") >= 0){ + if (!StringUtils.isEmpty(pingResult)) { + if(!pingResult.contains("100% packet loss")){ + flag = true; + } + } + } + return flag; + } + + + /** + * 添加已经发送的告警信息。 + * @param bean,取出对象中的ID与IP,外加时间(年月日) + */ + public void addSendedEvent(DowntimeBean bean){ + + } + +} diff --git a/src/com/sitech/jmx/mbean/ConfigSync.java b/src/com/sitech/jmx/mbean/ConfigSync.java index 1cdf6bb..3dc89a3 100644 --- a/src/com/sitech/jmx/mbean/ConfigSync.java +++ b/src/com/sitech/jmx/mbean/ConfigSync.java @@ -1,31 +1,28 @@ package com.sitech.jmx.mbean; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.log4j.Logger; - import com.sitech.base.AgentProperties; +import com.sitech.database.dao.TbAtoDynamicThresholdDao; 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.AgentSyncObject; -import com.sitech.ismp.messageObject.AlarmEventConfig; -import com.sitech.ismp.messageObject.AlarmEventConfigSyncObject; -import com.sitech.ismp.messageObject.MibConfig; -import com.sitech.ismp.messageObject.MibConfigSyncObject; -import com.sitech.ismp.messageObject.ScheduleLog; +import com.sitech.ismp.messageObject.*; import com.sitech.jmx.manage.CollScheduleManager; import com.sitech.jmx.manage.MBeanManager; import com.sitech.schedule.ScheduleCache; import com.sitech.schedule.Scheduler; +import com.sitech.snmptrap.TbTopoPhysicalDeviceDao; import com.sitech.util.Formater; import com.sitech.util.mq.MQConstants; import com.sitech.util.mq.TunnelFactory; +import org.apache.log4j.Logger; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 采集/告警配置同步 @@ -71,6 +68,9 @@ public class ConfigSync implements ConfigSyncMBean { String scheduleOperate = obj.getParams().get("SCHEDULE_OPERATE"); extInfo.put("SCHEDULE_OPERATE",scheduleOperate); removeCollSchedule(obj); +// removeMemDbCfgData(obj); + removeDowntimeMBean(obj); + // 删除内存数据库中相关的配置数据 scheStatus = "0"; if("1".equals(scheduleOperate)){ logInfo = "agent删除调度任务成功"; @@ -114,7 +114,7 @@ public class ConfigSync implements ConfigSyncMBean { } } - + public void syncEventCfg(AlarmEventConfigSyncObject obj) throws Exception { int type = obj.getSyncType(); List<AlarmEventConfig> configList = obj.getConfigList(); @@ -154,6 +154,54 @@ public class ConfigSync implements ConfigSyncMBean { logger.info("End refresh table[TB_CFG_EVENT], delete ["+configList.size()+"] config"); } + /** + * 删除添加主机的MBean。 + * @param obj + */ + private void removeMemDbCfgData(AgentSyncObject obj){ + if(obj.getClassName().equals("com.sitech.snmptrap.TbTopoPhysicalDevice")){ + TbTopoPhysicalDeviceDao physicalDeviceDao = new TbTopoPhysicalDeviceDao(); + physicalDeviceDao.deletePhysicalDeviceByIp(obj.getParams().get("DEVICE_IP")); + } + } + + /** + * 删除需要监控宕机的主机。 + * @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")); + } + } + + + /** + * 添加监控宕机的MBean。 + * 监控主机连接状态,有异常的时候,产生告警。 + * frank 2017-04-11 + */ + /*private void regeditDowntimeMBean(AgentSyncObject obj,String scheduleId){ + boolean isExist=CollScheduleManager.getInstance().scheduleExist(scheduleId); + if(!isExist){ + DowntimeServer server=new DowntimeServer(); + if(obj.getClassName().equals("com.sitech.snmptrap.TbTopoPhysicalDevice")){ + AgentSyncObject downtimeAgentSyncObject= server.getAgentSyncObject(obj,scheduleId); + log.info("get DowntimeMBean,className ====== "+downtimeAgentSyncObject.getClassName()); + try { + addCollSchedule(downtimeAgentSyncObject); + log.info("******************************************************************"); + log.info("************* 注册DowntimeMBean完成,开始监听宕机情况 **************"); + log.info("******************************************************************"); + } catch (Exception e) { + log.error("regedit DowntimeMBean has wrong",e); + e.printStackTrace(); + } + } + } + }*/ + private void updateEventCfg(List<AlarmEventConfig> configList) { String[] guid = new String[configList.size()]; for (int i = 0; i < configList.size(); i++) { @@ -361,4 +409,91 @@ public class ConfigSync implements ConfigSyncMBean { TunnelFactory.getTunnel(MQConstants.Q_ROPORT_FROM_AGENT).writeData(log); } + public void syncDynamicCfg(AlarmDynamicConfigSyncObject obj) throws Exception { + int type = obj.getSyncType(); + List<TbAtoDynamicThreshold> configList = obj.getConfigList(); + + logger.info("Begin refresh table[TB_ATO_DYNAMIC_THRESHOLD]..."); + + if (configList == null || configList.size() == 0) { + logger.info("End refresh table[TB_ATO_DYNAMIC_THRESHOLD], update [0] config"); + return; + } + + switch (type) { + case TYPE_SYNC_ALL: + refreshAllDynamicCfg(configList); + break; + case TYPE_CREATE: + addDynamicCfg(configList); + break; + case TYPE_UPDATE: + updateDynamicCfg(configList); + break; + case TYPE_DELETE: + deleteDynamicCfg(configList); + break; + } + } + + /** + * 刷新所有动态阀值配置 + * @param configList + */ + private void refreshAllDynamicCfg(List<TbAtoDynamicThreshold> configList) { + TbAtoDynamicThresholdDao dao = new TbAtoDynamicThresholdDao(); + int result = dao.deleteTbAtoDynamicThresholdAll(); + if (result != -1) { + for (TbAtoDynamicThreshold config : configList) { + //TbCfgEvent tbCfgEvent = new TbCfgEvent(config); + dao.insertTbAtoDynamicThreshold(config); + } + } + logger.info("End refresh table[TB_ATO_DYNAMIC_THRESHOLD], update ["+configList.size()+"] config"); + } + + /** + * 新增动态阀值配置 + * @param configList + */ + private void addDynamicCfg(List<TbAtoDynamicThreshold> configList) { + TbAtoDynamicThresholdDao dao = new TbAtoDynamicThresholdDao(); + for (TbAtoDynamicThreshold config : configList) { + //TbCfgEvent tbCfgEvent = new TbCfgEvent(config); + dao.insertTbAtoDynamicThreshold(config); + } + logger.info("End refresh table[TB_ATO_DYNAMIC_THRESHOLD], add ["+configList.size()+"] config"); + } + + /** + * 更新动态阀值配置 + * @param configList + */ + private void updateDynamicCfg(List<TbAtoDynamicThreshold> configList) { + String[] id = new String[configList.size()]; + for (int i = 0; i < configList.size(); i++) { + id[i] = configList.get(i).getID(); + } + TbAtoDynamicThresholdDao dao = new TbAtoDynamicThresholdDao(); + dao.deleteTbAtoDynamicThreshold(id); + for (TbAtoDynamicThreshold config : configList) { + dao.insertTbAtoDynamicThreshold(config); + } + logger.info("End refresh table[TB_ATO_DYNAMIC_THRESHOLD], update ["+configList.size()+"] config"); + } + + /** + * 删除动态阀值配置 + * @param configList + */ + private void deleteDynamicCfg(List<TbAtoDynamicThreshold> configList) { + String[] guid = new String[configList.size()]; + for (int i = 0; i < configList.size(); i++) { + guid[i] = configList.get(i).getGUID(); + } + TbAtoDynamicThresholdDao dao = new TbAtoDynamicThresholdDao(); + dao.deleteTbAtoDynamicThreshold(guid); + logger.info("End refresh table[TB_ATO_DYNAMIC_THRESHOLD], delete ["+configList.size()+"] config"); + } + } diff --git a/src/com/sitech/snmptrap/TbTopoPhysicalDevice.java b/src/com/sitech/snmptrap/TbTopoPhysicalDevice.java new file mode 100644 index 0000000..4416761 --- /dev/null +++ b/src/com/sitech/snmptrap/TbTopoPhysicalDevice.java @@ -0,0 +1,74 @@ +package com.sitech.snmptrap; + +import com.sitech.ismp.coll.basic.TblATO_KPIDETAIL; +import org.apache.log4j.Logger; + +import java.util.*; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 物理设备操作类。 + * @Package com.sitech.snmptrap + * @ClassName: com.sitech.snmptrap.TbTopoPhysicalDevice + * @date 2017年03月03日 11:48 + */ +public class TbTopoPhysicalDevice implements TbTopoPhysicalDeviceMBean { + + Logger logger = Logger.getLogger(getClass()); + TbTopoPhysicalDeviceDao dao=new TbTopoPhysicalDeviceDao(); + + /** + * 添加(修改)物理设备 + * @param params + * @return + */ + @Override + public Vector<TblATO_KPIDETAIL> addDevice(HashMap params) { + Vector<TblATO_KPIDETAIL> bean = new Vector<TblATO_KPIDETAIL>(); + try { + logger.info("Start add phsical device ***************************!!!"); + TbTopoPhysicalDeviceBean physicalDevice = new TbTopoPhysicalDeviceBean(); + logger.info("physicalDevice Object===" + physicalDevice.getClass()); + physicalDevice.setDEVICE_ID(UUID.randomUUID().toString()); + physicalDevice.setCREATE_DATE(new Date()); + physicalDevice.setDEVICE_ALIAS(params.get("DEVICE_ALIAS") + ""); + physicalDevice.setKBP_CLASS(params.get("KBP_CLASS") + "-99"); + physicalDevice.setDEVICE_CATALOG(params.get("DEVICE_CATALOG") + ""); + physicalDevice.setDEVICE_CNAME(params.get("DEVICE_CNAME") + ""); + physicalDevice.setDEVICE_DESC(params.get("DEVICE_DESC") + ""); + physicalDevice.setDEVICE_IP(params.get("DEVICE_IP") + ""); + TbTopoPhysicalDeviceDao dao = new TbTopoPhysicalDeviceDao(); + logger.info("TbTopoPhysicalDeviceDao Object===" + dao.getClass()); + dao.addTbTopoPhysicalDevice(physicalDevice); + logger.info("Start add phsical device success"); + }catch (Exception ex){ + logger.error("add device error .",ex); + } + return bean; + } + + /** + * 删除物理设备 + * @param deviceId + * @return + */ + @Override + public String deleteDevice(String deviceId) { + boolean flag=false; + int result=dao.deleteTbTopoPhysicalDevice(deviceId); + if(result>0){ + return "true"; + }else{ + return "false"; + } + } + + /** + * 根据IP查询对应的设备信息。 + * @param deviceIp + * @return + */ + public List<TbTopoPhysicalDeviceBean> getPhysicalDevice(String deviceIp){ + return dao.getPhysicalDeviceByIp(deviceIp); + } +} diff --git a/src/com/sitech/snmptrap/TbTopoPhysicalDeviceBean.java b/src/com/sitech/snmptrap/TbTopoPhysicalDeviceBean.java new file mode 100644 index 0000000..9be4c4c --- /dev/null +++ b/src/com/sitech/snmptrap/TbTopoPhysicalDeviceBean.java @@ -0,0 +1,134 @@ +package com.sitech.snmptrap; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author frank zmm@honggroup.com.cn + * @Description: 新添加物理设备类,对应数据的表为 TB_TOPO_PHYSICAL_DEVICE。 + * 当添加新设备的时候,如果设备IP,设备别名与已经存在的数据相同,则视为修改。 + * @Package com.sitech.snmptrap + * @ClassName: com.sitech.snmptrap.TbTopoPhysicalDeviceBean + * @date 2017年03月03日 09:56 + */ +public class TbTopoPhysicalDeviceBean implements Serializable{ + +// 设备ID + private String DEVICE_ID; +// 设备IP地址 + private String DEVICE_IP; +// 设备别名 + private String DEVICE_ALIAS; +// 设备类型 + private String DEVICE_CATALOG; +// 设备中文名称 + private String DEVICE_CNAME; +// kbp_class 设备的分类 + private String KBP_CLASS; +// 设备描述 + private String DEVICE_DESC; +// 所属机房 + private String DEVICE_ROOM; +// 所属机架(机柜) + private String DEVICE_RACK; +// 创建日期 + private Date CREATE_DATE; + + public TbTopoPhysicalDeviceBean() {} + + public String getDEVICE_ID() { + return DEVICE_ID; + } + + public void setDEVICE_ID(String DEVICE_ID) { + this.DEVICE_ID = DEVICE_ID; + } + + public String getDEVICE_IP() { + return DEVICE_IP; + } + + public void setDEVICE_IP(String DEVICE_IP) { + this.DEVICE_IP = DEVICE_IP; + } + + public String getDEVICE_ALIAS() { + return DEVICE_ALIAS; + } + + public void setDEVICE_ALIAS(String DEVICE_ALIAS) { + this.DEVICE_ALIAS = DEVICE_ALIAS; + } + + public String getDEVICE_CATALOG() { + return DEVICE_CATALOG; + } + + public void setDEVICE_CATALOG(String DEVICE_CATALOG) { + this.DEVICE_CATALOG = DEVICE_CATALOG; + } + + public String getDEVICE_CNAME() { + return DEVICE_CNAME; + } + + public void setDEVICE_CNAME(String DEVICE_CNAME) { + this.DEVICE_CNAME = DEVICE_CNAME; + } + + public String getKBP_CLASS() { + return KBP_CLASS; + } + + public void setKBP_CLASS(String KBP_CLASS) { + this.KBP_CLASS = KBP_CLASS; + } + + public String getDEVICE_DESC() { + return DEVICE_DESC; + } + + public void setDEVICE_DESC(String DEVICE_DESC) { + this.DEVICE_DESC = DEVICE_DESC; + } + + public String getDEVICE_ROOM() { + return DEVICE_ROOM; + } + + public void setDEVICE_ROOM(String DEVICE_ROOM) { + this.DEVICE_ROOM = DEVICE_ROOM; + } + + public String getDEVICE_RACK() { + return DEVICE_RACK; + } + + public void setDEVICE_RACK(String DEVICE_RACK) { + this.DEVICE_RACK = DEVICE_RACK; + } + + public Date getCREATE_DATE() { + return CREATE_DATE; + } + + public void setCREATE_DATE(Date CREATE_DATE) { + this.CREATE_DATE = CREATE_DATE; + } + + @Override + public String toString() { + return "TbTopoPhysicalDeviceBean{" + + "DEVICE_ID='" + DEVICE_ID + '\'' + + ", DEVICE_IP='" + DEVICE_IP + '\'' + + ", DEVICE_ALIAS='" + DEVICE_ALIAS + '\'' + + ", DEVICE_CATALOG='" + DEVICE_CATALOG + '\'' + + ", DEVICE_CNAME='" + DEVICE_CNAME + '\'' + + ", KBP_CLASS='" + KBP_CLASS + '\'' + + ", DEVICE_DESC='" + DEVICE_DESC + '\'' + + ", DEVICE_ROOM='" + DEVICE_ROOM + '\'' + + ", DEVICE_RACK='" + DEVICE_RACK + '\'' + + ", CREATE_DATE=" + CREATE_DATE + + '}'; + } +}