alarm
This commit is contained in:
1 parent
f744be8df8
commit
5026cdb2b7
1 file changed
+109
@@ -257,6 +257,114 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
//check oidlen
|
||||||
|
// if(oidLen > oidArr[psysconf->prefixoidlen]+1)
|
||||||
|
// {
|
||||||
|
// //ems_debug(BEATPROC_DEBUG_LOGFILE,"The length of oid is big");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// 处理告警 Trap (OID 以 .8 结尾)
|
||||||
|
if (oidArr[psysconf->prefixoidlen] == 8)
|
||||||
|
{
|
||||||
|
|
||||||
|
//处理心跳 Trap (OID 以 .2 结尾)
|
||||||
|
// 打印 pdata 的内容
|
||||||
|
// char pdatastring[256] = {0};
|
||||||
|
// char tmpstr[16];
|
||||||
|
// for (int j = 0; j < dataLen; j++)
|
||||||
|
// {
|
||||||
|
// sprintf(tmpstr, "%02X ", pdata[j]);
|
||||||
|
// strcat(pdatastring, tmpstr);
|
||||||
|
// }
|
||||||
|
// char oidstring[256] = {0};
|
||||||
|
// oidtostr(oidArr, oidLen, oidstring);
|
||||||
|
// ems_debug(BEATPROC_DEBUG_LOGFILE, "Received alarm trap OID: %s, data: %s", oidstring, pdatastring);
|
||||||
|
|
||||||
|
sysno=pdata[0];
|
||||||
|
subsysno=pdata[1];
|
||||||
|
if(sysno >= psysconf->maxsysnum || subsysno >= psysconf->maxsubsysnum)
|
||||||
|
{
|
||||||
|
ems_debug(BEATPROC_DEBUG_LOGFILE,"System %s sysno or subsysno is too big,[%d,%d] > [%d,%d]",psysconf->systypename,sysno,subsysno,psysconf->maxsysnum,psysconf->maxsubsysnum);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 提取时间戳(第 3-6 字节)
|
||||||
|
unsigned long alarmTime = (pdata[2] << 24) | (pdata[3] << 16) | (pdata[4] << 8) | pdata[5];
|
||||||
|
|
||||||
|
// 将时间戳转换为字符串形式的 alarmId
|
||||||
|
char alarmIdStr[32];
|
||||||
|
sprintf(alarmIdStr, "%lu", alarmTime);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 转换时间戳为时间格式
|
||||||
|
char alarmTimeStr[20]; // 格式化后的时间字符串
|
||||||
|
time_t alarmTime_t = (time_t)alarmTime;
|
||||||
|
strftime(alarmTimeStr, sizeof(alarmTimeStr), "%Y-%m-%d %H:%M:%S", localtime(&alarmTime_t));
|
||||||
|
|
||||||
|
|
||||||
|
// 提取其他字段
|
||||||
|
int clearMode = pdata[6]; // 清除码
|
||||||
|
int compCode = pdata[8]; // 组件 ID
|
||||||
|
int alarmCode = pdata[9]; // 告警码
|
||||||
|
|
||||||
|
|
||||||
|
// 提取告警信息(第 11 字节开始)
|
||||||
|
char alarmInfo[256] = {0};
|
||||||
|
memcpy(alarmInfo, &pdata[10], dataLen - 10); // 剩余字节为告警信息
|
||||||
|
|
||||||
|
MYSQL *pubConn = mysql_conn("localhost","OMC_PUB");
|
||||||
|
if (pubConn == NULL)
|
||||||
|
{
|
||||||
|
ems_debug(BEATPROC_DEBUG_LOGFILE, "Connect to OMC_PUB fail");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构造 SQL 语句
|
||||||
|
if (clearMode == 0)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 清除告警
|
||||||
|
sprintf(beatproc_sqlstr,
|
||||||
|
"UPDATE 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 AND alarmId='%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, "Alarm cleared: %s", beatproc_sqlstr);
|
||||||
|
}
|
||||||
|
mysql_close(pubConn);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (clearMode == 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
// 新增告警
|
||||||
|
sprintf(beatproc_sqlstr,
|
||||||
|
"INSERT INTO sysAlarmInfo (sysTypeNo, sysNo, subSysNo, compCode, alarmCode, alarmTime, clearTime, clearMode, alarmId, alarmInfo) "
|
||||||
|
"VALUES (%d, %d, %d, %d, %d, '%s', '0000-00-00 00:00:00', 1, '%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, "New alarm inserted: %s", beatproc_sqlstr);
|
||||||
|
}
|
||||||
|
mysql_close(pubConn);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} //end if .8
|
||||||
|
else{
|
||||||
//another omc
|
//another omc
|
||||||
if(psysconf->systypeno == 0)
|
if(psysconf->systypeno == 0)
|
||||||
{
|
{
|
||||||
@@ -322,6 +430,7 @@ void localBeatRecv(BYTE oidLen, DWORD *oidArr, BYTE *pdata,WORD dataLen,snmp_add
|
|||||||
|
|
||||||
update_state(psysconf,sysno,subsysno,pdata,dataLen,addr);
|
update_state(psysconf,sysno,subsysno,pdata,dataLen,addr);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void update_state(_sys_conf *psysconf,int sysNo,int subSysNo,BYTE *pdata,int dataLen,snmp_addr *addr)
|
void update_state(_sys_conf *psysconf,int sysNo,int subSysNo,BYTE *pdata,int dataLen,snmp_addr *addr)
|
||||||
|
|||||||
Reference in new issue
Block a user