Merge pull request #908 from midoks/dev

常规更新
This commit is contained in:
Mr Chen
2026-06-20 18:56:05 +08:00
committed by GitHub
3 changed files with 112 additions and 16 deletions
+2
View File
@@ -439,6 +439,7 @@ def runInfo():
data['Reading'] = tmp[11] data['Reading'] = tmp[11]
data['Writing'] = tmp[13] data['Writing'] = tmp[13]
data['Waiting'] = tmp[15] data['Waiting'] = tmp[15]
data["time"] = time.time()
return mw.getJson(data) return mw.getJson(data)
except Exception as e: except Exception as e:
try: try:
@@ -453,6 +454,7 @@ def runInfo():
data['Reading'] = tmp[11] data['Reading'] = tmp[11]
data['Writing'] = tmp[13] data['Writing'] = tmp[13]
data['Waiting'] = tmp[15] data['Waiting'] = tmp[15]
data["time"] = time.time()
return mw.getJson(data) return mw.getJson(data)
except Exception as e: except Exception as e:
return mw.returnJson(False, "oprenresty异常!") return mw.returnJson(False, "oprenresty异常!")
+91 -8
View File
@@ -109,36 +109,119 @@ function orPluginOpServiceOp(a,b,c,d,a,v,request_callback){
}); });
} }
var optmp_status = null;
var optmp_timer = null;
//查看Nginx负载状态 //查看Nginx负载状态
function getOpStatus() { function getOpStatus(){
var con = "<div><table class='table table-hover table-bordered op_status'>\
<tr><th>活动连接(Active connections)</th><td class='op_active'>0</td></tr>\
<tr><th>总连接次数(accepts)</th><td class='op_accepts'>0</td></tr>\
<tr><th>总握手次数(handled)</th><td class='op_handled'>0</td></tr>\
<tr><th>总请求数(requests)</th><td class='op_requests'>0</td></tr>\
<tr><th>请求数(Reading)</th><td class='op_reading'>0</td></tr>\
<tr><th>响应数(Writing)</th><td class='op_writing'>0</td></tr>\
<tr><th>驻留进程(Waiting)</th><td class='op_waiting'>0</td></tr>\
<tr><th>请求时间(time)</th><td class='op_waiting'>0</td></tr>\
</table></div>";
$(".soft-man-con").html(con);
getOpStatusOne();
clearInterval(optmp_timer);
optmp_timer = setInterval(function(){
if ($(".soft-man-con").length == 0){
clearInterval(optmp_timer);
}
getOpStatusInterval();
}, 5000);
}
function getOpStatusOne(){
var loadT = layer.msg('正在处理,请稍后...', { icon: 16, time: 0, shade: 0.3 }); var loadT = layer.msg('正在处理,请稍后...', { icon: 16, time: 0, shade: 0.3 });
$.post('/plugins/run', {name:'openresty', func:'run_info'}, function(data) { $.post('/plugins/run', {name:'openresty', func:'run_info'}, function(data) {
layer.close(loadT); layer.close(loadT);
try { try {
var rdata = $.parseJSON(data.data); var rdata = $.parseJSON(data.data);
if ('status' in rdata && !rdata.status){ if ('status' in rdata && !rdata.status){
showMsg(rdata.msg, function(){}, null,3000); showMsg(rdata.msg, function(){
var con = "<tr><th>Error</th><td>" + rdata.msg + "</td></tr>";
$(".soft-man-con .op_status").html(con);
}, null,3000);
return; return;
} }
var con = "<div><table class='table table-hover table-bordered'>\ optmp_status = rdata;
<tr><th>活动连接(Active connections)</th><td>" + rdata.active + "</td></tr>\ var con = "<tr><th>活动连接(Active connections)</th><td>" + rdata.active + "</td></tr>\
<tr><th>总连接次数(accepts)</th><td>" + rdata.accepts + "</td></tr>\ <tr><th>总连接次数(accepts)</th><td>" + rdata.accepts + "</td></tr>\
<tr><th>总握手次数(handled)</th><td>" + rdata.handled + "</td></tr>\ <tr><th>总握手次数(handled)</th><td>" + rdata.handled + "</td></tr>\
<tr><th>总请求数(requests)</th><td>" + rdata.requests + "</td></tr>\ <tr><th>总请求数(requests)</th><td>" + rdata.requests + "</td></tr>\
<tr><th>请求数(Reading)</th><td>" + rdata.Reading + "</td></tr>\ <tr><th>请求数(Reading)</th><td>" + rdata.Reading + "</td></tr>\
<tr><th>响应数(Writing)</th><td>" + rdata.Writing + "</td></tr>\ <tr><th>响应数(Writing)</th><td>" + rdata.Writing + "</td></tr>\
<tr><th>驻留进程(Waiting)</th><td>" + rdata.Waiting + "</td></tr>\ <tr><th>驻留进程(Waiting)</th><td>" + rdata.Waiting + "</td></tr>\
</table></div>"; <tr><th>请求时间(time)</th><td class='op_waiting'>"+formatTimestamp(rdata.time)+"</td></tr>";
$(".soft-man-con").html(con); $(".soft-man-con .op_status").html(con);
}catch(err){ } catch(err) {
showMsg(data.data, function(){}, null,3000); showMsg(data.data, function(){
var con = "<tr><th>Error</th><td>" + err + "</td></tr>";
$(".soft-man-con .op_status").html(con);
}, null,3000);
} }
},'json'); },'json');
} }
function getOpStatusInterval(){
$.post('/plugins/run', {name:'openresty', func:'run_info'}, function(data) {
try {
var rdata = $.parseJSON(data.data);
if ('status' in rdata && !rdata.status){
showMsg(rdata.msg, function(){
var con = "<tr><th>Error</th><td>" + rdata.msg + "</td></tr>";
$(".soft-man-con .op_status").html(con);
}, null,3000);
return;
}
var qbs = "";
if (optmp_status){
var time_diff = rdata.time - optmp_status.time;
var requests_diff = rdata.accepts - optmp_status.accepts;
// 检查除数是否有效
if (time_diff > 0) {
var qbs_nums = requests_diff / time_diff;
// 保留两位小数,并处理 NaN 和 Infinity
qbs_nums = isFinite(qbs_nums) ? qbs_nums.toFixed(2) : '0.00';
} else {
qbs_nums = '0.00';
}
console.log('QPS:', qbs_nums);
qbs = "<tr><th>计算(QPS)</th><td>"+qbs_nums+"</td></tr>";
}
optmp_status = rdata;
var con = "<tr><th>活动连接(Active connections)</th><td>" + rdata.active + "</td></tr>\
<tr><th>总连接次数(accepts)</th><td>" + rdata.accepts + "</td></tr>\
<tr><th>总握手次数(handled)</th><td>" + rdata.handled + "</td></tr>\
<tr><th>总请求数(requests)</th><td>" + rdata.requests + "</td></tr>\
<tr><th>请求数(Reading)</th><td>" + rdata.Reading + "</td></tr>\
<tr><th>响应数(Writing)</th><td>" + rdata.Writing + "</td></tr>\
<tr><th>驻留进程(Waiting)</th><td>" + rdata.Waiting + "</td></tr>" + qbs +
"<tr><th>请求时间(time)</th><td class='op_waiting'>"+formatTimestamp(rdata.time)+"</td></tr>";;
$(".soft-man-con .op_status").html(con);
} catch(err) {
showMsg(data.data, function(){
var con = "<tr><th>Error</th><td>" + err + "</td></tr>";
$(".soft-man-con .op_status").html(con);
}, null,3000);
}
},'json');
}
function setOpCfg(){ function setOpCfg(){
orPost('get_cfg', {}, function(data){ orPost('get_cfg', {}, function(data){
var rdata = $.parseJSON(data.data); var rdata = $.parseJSON(data.data);
+12 -1
View File
@@ -256,7 +256,18 @@ function getFormatTime(tm, format) {
return format; return format;
} }
// 格式化时间戳为 YYYY-MM-DD HH:ii:ss
function formatTimestamp(timestamp) {
if (!timestamp || timestamp === '') return '';
var date = new Date(timestamp * 1000); // 假设是秒级时间戳
var year = date.getFullYear();
var month = String(date.getMonth() + 1).padStart(2, '0');
var day = String(date.getDate()).padStart(2, '0');
var hours = String(date.getHours()).padStart(2, '0');
var minutes = String(date.getMinutes()).padStart(2, '0');
var seconds = String(date.getSeconds()).padStart(2, '0');
return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
}
function changePathCallback(default_dir, callback) { function changePathCallback(default_dir, callback) {
var c = layer.open({ var c = layer.open({