diff --git a/bin/mib/LGC-SS-MSC-MIB.my b/bin/mib/LGC-SS-MSC-MIB.my index f262b5b..217fad8 100644 --- a/bin/mib/LGC-SS-MSC-MIB.my +++ b/bin/mib/LGC-SS-MSC-MIB.my @@ -75,9 +75,30 @@ "Description." ::= { msc 1 } +-- 1.3.6.1.4.1.1373.2.3.3.1.99 + control OBJECT IDENTIFIER ::= { msc 99 } + + + -- 1.3.6.1.4.1.1373.2.3.3.1.99.2 + neSystem OBJECT IDENTIFIER ::= { control 2 } + + + -- 1.3.6.1.4.1.1373.2.3.3.1.99.2.1 + config OBJECT IDENTIFIER ::= { neSystem 1 } + + -- 1.3.6.1.4.1.1373.2.3.3.1.99.2.1.2 + licenseUpdate OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { config 2 } + -- 1.3.6.1.4.1.1373.1.3.3.2.2 -- 1.3.6.1.4.1.1373.2.3.3.1.2 + parameter OBJECT IDENTIFIER ::= { msc 2 } diff --git a/bin/mib/LGC-SS-PPS-MIB.my b/bin/mib/LGC-SS-PPS-MIB.my index 6343a8f..0c1a01f 100644 --- a/bin/mib/LGC-SS-PPS-MIB.my +++ b/bin/mib/LGC-SS-PPS-MIB.my @@ -71,7 +71,26 @@ "Description." ::= { pps 1 } - + -- 1.3.6.1.4.1.1373.2.3.3.6.99 + control OBJECT IDENTIFIER ::= { pps 99 } + + + -- 1.3.6.1.4.1.1373.2.3.3.6.99.2 + neSystem OBJECT IDENTIFIER ::= { control 2 } + + + -- 1.3.6.1.4.1.1373.2.3.3.6.99.2.1 + config OBJECT IDENTIFIER ::= { neSystem 1 } + + -- 1.3.6.1.4.1.1373.2.3.3.6.99.2.1.2 + licenseUpdate OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { config 2 } + -- 1.3.6.1.4.1.1373.1.3.3.2.2 -- 1.3.6.1.4.1.1373.2.3.3.6.2 parameter OBJECT IDENTIFIER ::= { pps 2 } diff --git a/bin/mib/LGC-SS-SMSC-MIB.my b/bin/mib/LGC-SS-SMSC-MIB.my index 47ca2e3..36b11b9 100644 --- a/bin/mib/LGC-SS-SMSC-MIB.my +++ b/bin/mib/LGC-SS-SMSC-MIB.my @@ -74,6 +74,26 @@ "Description." ::= { smsc 1 } + -- 1.3.6.1.4.1.1373.2.3.3.5.99 + control OBJECT IDENTIFIER ::= { smsc 99 } + + + -- 1.3.6.1.4.1.1373.2.3.3.5.99.2 + neSystem OBJECT IDENTIFIER ::= { control 2 } + + + -- 1.3.6.1.4.1.1373.2.3.3.5.99.2.1 + config OBJECT IDENTIFIER ::= { neSystem 1 } + + -- 1.3.6.1.4.1.1373.2.3.3.5.99.2.1.2 + licenseUpdate OBJECT-TYPE + SYNTAX DisplayString + MAX-ACCESS read-write + STATUS current + DESCRIPTION + "Description." + ::= { config 2 } + -- 1.3.6.1.4.1.1373.1.3.3.2.2 -- 1.3.6.1.4.1.1373.2.3.3.5.2 diff --git a/src/faultMgr/c_program/beatProc/beatProc.c b/src/faultMgr/c_program/beatProc/beatProc.c index f2ef521..3d607e5 100644 --- a/src/faultMgr/c_program/beatProc/beatProc.c +++ b/src/faultMgr/c_program/beatProc/beatProc.c @@ -10,6 +10,8 @@ BYTE parseoid(char *str, DWORD * array, BYTE max); char *oidtostr(DWORD* oid,int oidlen,char *output); static char beatproc_sqlstr[8192]; +static char beatprocInfo_sqlstr[8192]; + static char state_str[MAX_MSG_LEN]; static _sys_conf sys_conf[MAX_SYS_CONF]; static int sys_conf_count=0; @@ -362,7 +364,26 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add } mysql_close(pubConn); return; - } + } + else if(clearMode == 2) + {//处理事件告警 + + sprintf(beatproc_sqlstr, + "INSERT INTO sysAlarmEvent (sysTypeNo, sysNo, subSysNo, compCode, alarmCode, alarmTime, clearTime, clearMode, alarmId, alarmInfo) " + "VALUES (%d, %d, %d, %d, %d, '%s', '0000-00-00 00:00:00', 2, '%s', '%s');", + psysconf->systypeno, sysno, subsysno, compCode, alarmCode, alarmTimeStr, alarmIdStr, alarmInfo); + + if (mysql_getnores(pubConn, beatproc_sqlstr) != 0) + { + ems_debug(BEATPROC_DEBUG_LOGFILE, "[SQL ERR], %s", beatproc_sqlstr); + } + else + { + ems_debug(BEATPROC_DEBUG_LOGFILE, "Event alarm inserted: %s", beatproc_sqlstr); + } + mysql_close(pubConn); + return; + } } //end if .8 else{ //another omc @@ -523,6 +544,17 @@ void update_state(_sys_conf *psysconf,int sysNo,int subSysNo,BYTE *pdata,int dat { ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr); } + + sprintf(beatproc_sqlstr,"update OMC_PUB.sysAlarmInfo set clearTime=CURRENT_TIMESTAMP,clearMode=0,clearBy='System' where sysTypeNo=%d and sysNo=%d and subSysNo=%d and compCode=0 and alarmCode=254;", + psysconf->systypeno,sysNo,subSysNo); + if(mysql_getnores(pubConn,beatproc_sqlstr) != 0) + { + ems_debug(BEATPROC_DEBUG_LOGFILE,"[SQL ERR],%s",beatproc_sqlstr); + } + else + { + ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr); + } } mysql_close(pubConn); @@ -696,6 +728,39 @@ void update_alarm(_sys_conf *psysconf,int sysno,int subsysno,int compcode,int al { ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr); } + + // 仅当 alarmCode 为 254 时,插入到 alarmInfo 表 + if (alarmcode == 254) + { + + sprintf(beatproc_sqlstr,"update OMC_PUB.sysAlarmInfo set clearTime=CURRENT_TIMESTAMP,clearMode=0,clearBy='System' where sysTypeNo=%d and sysNo=%d and subSysNo=%d and compCode=0 and alarmCode=254;", + psysconf->systypeno,sysno,subsysno); + if(mysql_getnores(pubConn,beatproc_sqlstr) != 0) + { + ems_debug(BEATPROC_DEBUG_LOGFILE,"[SQL ERR],%s",beatproc_sqlstr); + } + else + { + ems_debug(BEATPROC_DEBUG_LOGFILE,"%s",beatproc_sqlstr); + } + + + time_t current_time = time(NULL); + char alarmIdStr[32]; + sprintf(alarmIdStr, "%ld", (long)current_time); // 将时间戳转换为字符串 + + sprintf(beatproc_sqlstr, "insert into OMC_PUB.sysAlarmInfo(sysTypeNo,sysNo,subSysNo,compCode,alarmCode,alarmTime,clearTime,clearMode,alarmInfo,alarmId) " + "values(%d,%d,%d,%d,%d,CURRENT_TIMESTAMP,'0000-00-00 00:00:00',1,'Can not receive heartbeat','%s');", + psysconf->systypeno, sysno, subsysno, compcode, alarmcode,alarmIdStr); + if (mysql_getnores(pubConn, beatproc_sqlstr) != 0) + { + ems_debug(BEATPROC_DEBUG_LOGFILE, "[SQL ERR],%s", beatproc_sqlstr); + } + else + { + ems_debug(BEATPROC_DEBUG_LOGFILE, "Inserted into alarmInfo: %s", beatproc_sqlstr); + } + } } psys->lastcompcode=compcode; diff --git a/src/performanceMgr/c_program/cstaCollector/csta.c b/src/performanceMgr/c_program/cstaCollector/csta.c index 27a16eb..e9b21ab 100644 --- a/src/performanceMgr/c_program/cstaCollector/csta.c +++ b/src/performanceMgr/c_program/cstaCollector/csta.c @@ -12,6 +12,8 @@ int getOmcSysNo(int* sysNo); int getOmcStatus(int sysNo); int omcSysNo=-1; +static char cstaproc_sqlstr[8192]; + /* return: TIMETO_NONE @@ -1145,7 +1147,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) { csta_obj *pobj; var_list *pvar; - DWORD d_timestamp,*p_long; + DWORD d_timestamp,*p_long; DWORD *pval4; WORD *pval2; char sqlstr[8192],sumsqlstr[8192],sumCondition[512],sumFieldList[8192]; @@ -1227,6 +1229,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) sprintf(tmpstr3," and %s=%d",pobj->id1_field,psys->pre_id1 + pobj->id1_offset); strcat(sumCondition,tmpstr3); } + break; case 2: sprintf(key_field,"%s,%s,",pobj->id1_field, pobj->id2_field); @@ -1236,6 +1239,7 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) sprintf(tmpstr3," and %s=%d and %s=%d",pobj->id1_field,psys->pre_id1 + pobj->id1_offset,pobj->id2_field,psys->pre_id2 + pobj->id2_offset); strcat(sumCondition,tmpstr3); } + break; } //csta_log("single_message_flag:%d",pcsta->single_message_flag); @@ -1243,13 +1247,14 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) { sprintf(sqlstr, "replace into %s.%sData (%s%s%s,csta_datetime)VALUES(%s%s", CSTA_DB,pobj->detail_table,sys_field,key_field,pobj->sql_detail,sys_value,key_value); - + //sum up accord to the map table if(needSumFlag) { sprintf(tmpstr3," and UNIX_TIMESTAMP(csta_datetime) = %ld",d_timestamp); strcat(sumCondition,tmpstr3); sprintf(sumsqlstr,"select %s from %s.%sData where %s",pobj->sql_sum,CSTA_DB,pobj->detail_table,sumCondition); + } if(pobj->field_width == 2) @@ -1394,6 +1399,9 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) sprintf(sqlstr, "replace into %s.%sData (%s%s%scsta_datetime)VALUES(%s%s", CSTA_DB,pobj->sum_table,sys_field,key_field,sumFieldList,sys_value,key_value); + + + for(i=0;isum_field_count;i++) { if(row[i] == NULL) @@ -1412,7 +1420,56 @@ int csta_record(csta_src *pcsta,csta_sys *psys,snmp_pdu *pdu) } sprintf(tmpstr3,"FROM_UNIXTIME(%ld))",d_timestamp); strcat(sqlstr,tmpstr3); - + + //only 320 mscSumData.check Signal Error + if (pcsta->sysTypeNo == 320 && strcmp(pobj->sum_table, "mscSumData") == 0) { + + int sysNo = psys->sysid; // 从 psys 获取 sysNo + int subSysNo = psys->subsysid; + + unsigned int SignalErr = 0, Attempt = 0 ,KeyType =0; + sscanf(sqlstr, "%*[^,],%*[^,],%u,%*[^,],%u,%*[^,],%u", &KeyType,&Attempt, &SignalErr); + + // MO-12 MT-13 + if (Attempt > 0 && (KeyType == 12 || KeyType == 13)) { + double ratio = (double)SignalErr / Attempt; + + // 如果 SignalErr / Attempt > 5%,则触发告警 + if (ratio > 5.0) { + time_t current_time = time(NULL); + char alarmIdStr[32]; + sprintf(alarmIdStr, "%ld", (long)current_time); // 将时间戳转换为字符串 + + // 构造插入 alarmInfo 表的 SQL 语句 + sprintf(cstaproc_sqlstr, "insert into OMC_PUB.sysAlarmInfo(sysTypeNo,sysNo,subSysNo,compCode,alarmCode,alarmTime,clearTime,clearMode,alarmInfo,alarmId) " + "values(%d,%d,%d,%d,%d,CURRENT_TIMESTAMP,'0000-00-00 00:00:00',1,'Call failure rate exceeds 5%%');", + pcsta->sysTypeNo,sysNo,subSysNo, 0, 10, alarmIdStr); + + // 执行 SQL 语句 + if (mysql_getnores(pubConn, cstaproc_sqlstr) != 0) { + csta_log("[SQL ERR]: %s", cstaproc_sqlstr); + } else { + csta_log("Inserted into alarmInfo: %s", cstaproc_sqlstr); + } + }else{ + //clear 5% alarm + sprintf(cstaproc_sqlstr, "update OMC_PUB.sysAlarmInfo set clearTime=CURRENT_TIMESTAMP,clearMode=0,clearBy='System' " + "where sysTypeNo=%d and sysNo=%d and subSysNo=%d and compCode=%d and alarmCode=%d and clearMode=1;", + pcsta->sysTypeNo, sysNo, subSysNo, 0, 10); + + // 执行 SQL 语句 + if (mysql_getnores(pubConn, cstaproc_sqlstr) != 0) { + csta_log("[SQL ERR]: %s", cstaproc_sqlstr); + } else { + csta_log("Cleared alarmInfo: %s", cstaproc_sqlstr); + } + } + } else { + csta_log("Attempt is zero, skipping SignalErr/Attempt calculation."); + } + + } + if(mysql_getnores(pCstaConn,sqlstr) != 0) { if(mysql_errno(pCstaConn) == 1146)