new version-alarm lincense

This commit is contained in:
root
2025-06-03 11:52:10 +08:00
parent 4c19c0f873
commit 9ac1251e27
10 changed files with 895 additions and 27 deletions

View File

@@ -3,7 +3,9 @@ require("../../inc/lib.inc");
//This script file is executed when login in the ems
//get the alarm number of the five alarm level
if (!session_id()) session_start();
// echo "<pre>";
// print_r($_SESSION);
// echo "</pre>";
if (isset($_SESSION["userInfo"])) {
if (!isset($userInfo)) $userInfo = $_SESSION["userInfo"];
$selectedLanguage = $userInfo['language'];
@@ -14,6 +16,9 @@ if (isset($_SESSION["userInfo"])) {
$session_id = session_id();
$login_time = date('Y-m-d H:i:s', $userInfo['refresh_time']);
}
$dbName = 'OMC_PUB';
$defTable = 'sysAlarmConf';
$logTable = 'sysAlarmLog';
@@ -44,5 +49,213 @@ for ($i = 1; $i <= 5; $i++) {
}
$retureValue = $alarmNumArr[1]['number'] . "_" . $alarmNumArr[2]['number'] . "_" . $alarmNumArr[3]['number'] . "_" . $alarmNumArr[4]['number'] . "_" . $alarmNumArr[5]['number'];
echo "$retureValue"; ///is should
$cpuMax=95;
$default_user_name="agtuser";
$sql="select pubVarValue from OMC_PUB.omcPubVarConf where pubVarName='ResourceThreshold' ";
$res=mysqli_query($pubConn,$sql);
$row=mysqli_fetch_array($res);
if(strlen(trim($row['pubVarValue'])) > 0)
$cpuMax=$row['pubVarValue'];
// 查询 CPU 使用率
$cpuSql = "SELECT sysNo, subSysNo, detailStat FROM OMC_PUB.sysStat WHERE sysTypeNo = 200 and sysNo != 0";
$cpuResult = @mysqli_query($pubConn, $cpuSql);
echo mysqli_error($pubConn);
while ($row = @mysqli_fetch_array($cpuResult)) {
switch($row['sysNo']){
case 0:
$PlatName = 'EMS';
break;
case 3:
$PlatName = 'HLR';
break;
case 5:
$PlatName = 'PPS';
break;
case 6:
$PlatName = 'SMSC';
break;
case 8:
$PlatName = 'VMS';
break;
case 9:
$PlatName = 'MSS';
break;
default:
$PlatName = 'MSS';
}
// 解析 detailStat 获取 CPU 使用率
$baseStat = $row['detailStat'];
$compStat = substr($baseStat, 38);
$compStatLen = strlen($compStat) - 1;
$index = 0;
$i = 0;
while ($i < $compStatLen) {
$tmp = substr($compStat, $i, 4);
$component[$index]['ID'] = $tmp + 0;
$i += 4;
$tmp = substr($compStat, $i, 4);
$component[$index]['Length'] = hexdec($tmp);
$i += 4;
$component[$index]['Content'] = substr($compStat, $i, $component[$index]['Length'] * 2);
$i += $component[$index]['Length'] * 2;
$index++;
}
// 获取组件 8 的内容并计算 CPU 使用率
if ($component[8]['Length'] > 0) {
$snmp_hb = $component[8]['Content'];
//Start Time
$pos=0;
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$startTime=date("Y-m-d H:i:s",$tmpValue);
$pos+=8;
//GET CPU Use Rate
$cpuValue = 100 - hexdec(substr($snmp_hb, $pos, 2)); // 计算 CPU 使用率
// 初始化计数器(针对每个 sysNo 和 subSysNo
if (!isset($_SESSION['cpu_high_count'])) {
$_SESSION['cpu_high_count'] = []; // 初始化为数组
}
if (!isset($_SESSION['cpu_high_count'][$row['sysNo']])) {
$_SESSION['cpu_high_count'][$row['sysNo']] = []; // 初始化 sysNo 的子数组
}
if (!isset($_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']])) {
$_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']] = 0; // 初始化计数器
}
// 判断 CPU 使用率是否超过 95%
if ($cpuValue > $cpuMax) {
$_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']]++; // 增加计数
} else {
$_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']] = 0; // 重置计数
// 检查是否存在未清除的告警
$clearSql = "UPDATE sysAlarmInfo
SET clearTime = CURRENT_TIMESTAMP, clearMode = 0,clearBy = 'System'
WHERE sysTypeNo = '200'
AND sysNo = '{$row['sysNo']}'
AND subSysNo = '{$row['subSysNo']}'
AND alarmCode = '999'
AND clearTime = '0000-00-00 00:00:00'";
mysqli_query($pubConn, $clearSql);
echo mysqli_error($pubConn);
}
// 如果连续 6 次超过 95%,触发告警
if ($_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']] >= 6) {
$alarmInfo = "$PlatName-CPU usage exceeded 95% for 1 minute"; // 告警描述
$alarmSql = "INSERT INTO sysAlarmInfo (sysTypeNo, sysNo, subSysNo, compCode, alarmCode, alarmTime, clearTime, clearMode, alarmInfo)
VALUES ('200', '{$row['sysNo']}', '{$row['subSysNo']}', '0', '999', CURRENT_TIMESTAMP, '0000-00-00 00:00:00', 1, '$alarmInfo')";
mysqli_query($pubConn, $alarmSql);
echo mysqli_error($pubConn);
// 重置计数器
$_SESSION['cpu_high_count'][$row['sysNo']][$row['subSysNo']] = 0;
}
//CPU Use Rate Process Num
$pos+=2;
//Physical Memory Used/Total
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue1=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue2=floor(($tmpValue/$tmpValue1)*100);
//$plat[PMTotalRate][Value]="{$tmpValue2}%";
//$plat[PMTotalRateV][Value]=(floor($tmpValue/1024))."M/".(floor($tmpValue1/1024))."M";
//$plat[PMTotalRatePN][Value]=floor($tmpValue2/10);
//Physical Memory Used/Swap
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue1=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue2=floor(($tmpValue/$tmpValue1)*100);
//$plat[PMSwapRate][Value]="{$tmpValue2}%";
//$plat[PMSwapRateV][Value]=(floor($tmpValue/1024))."M/".(floor($tmpValue1/1024))."M";
//$plat[PMSwapRatePN][Value]=floor($tmpValue2/10);
//Physical Memory Buffers
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
//$plat[PMBuffers][Value]=(floor($tmpValue/1024))."M";
//Physical Memory Cached
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
//$plat[PMCached][Value]=(floor($tmpValue/1024))."M";
//Harddisk
$tmpValue=hexdec(substr($snmp_hb,$pos,2));
$pos+=2;
//$plat[HDNum]=$tmpValue;
for($i=0;$i<$plat[HDNum];$i++)
{
$tmpValue=hexdec(substr($snmp_hb,$pos,2));
$pos+=2;
$path_len=$tmpValue;
$path="";
for($j=0;$j<$path_len;$j++)
{
$path.=chr(hexdec(substr($snmp_hb,$pos,2)));
$pos+=2;
}
//$plat[HD][$i][Path][Value]="($path)";
//$plat[HD][$i][Path][Color]="#000000";
//$plat[HD][$i][Path][Display]="block";
$tmpValue=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue1=hexdec(substr($snmp_hb,$pos,8));
$pos+=8;
$tmpValue2=floor(($tmpValue/$tmpValue1)*100);
//$plat[HD][$i][PN][Value]=floor($tmpValue2/10);
//$plat[HD][$i][PN][Color]="#0000ff";
//$plat[HD][$i][PN][Display]="Rect";
//$plat[HD][$i][V][Value]=(floor($tmpValue/1024))."M/".(floor($tmpValue1/1024))."M";
//$plat[HD][$i][V][Color]="#000000";
//$plat[HD][$i][V][Display]="block";
//$plat[HD][$i][Rate][Value]="{$tmpValue2}%";
//$plat[HD][$i][Rate][Color]="#000000";
//$plat[HD][$i][Rate][Display]="block";
}
}
}
?>