function pingPost(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'simpleping'; req_data['func'] = method; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/run', req_data, function(data) { layer.close(loadT); if (!data.status){ //错误展示10S layer.msg(data.msg,{icon:0,time:2000,shade: [10, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function pingPostCallbak(method, args, callback){ var loadT = layer.msg('正在获取...', { icon: 16, time: 0, shade: 0.3 }); var req_data = {}; req_data['name'] = 'simpleping'; req_data['script'] = 'simpleping_index'; req_data['func'] = method; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { layer.close(loadT); if (!data.status){ layer.msg(data.msg,{icon:0,time:2000,shade: [0.3, '#000']}); return; } if(typeof(callback) == 'function'){ callback(data); } },'json'); } function pingPostCallbakN(method, args, callback){ var req_data = {}; req_data['name'] = 'simpleping'; req_data['script'] = 'simpleping_index'; req_data['func'] = method; if (typeof(args) == 'string'){ req_data['args'] = JSON.stringify(toArrayObject(args)); } else { req_data['args'] = JSON.stringify(args); } $.post('/plugins/callback', req_data, function(data) { if(typeof(callback) == 'function'){ callback(data); } },'json'); } function appReadme(){ var readme = ''; $('.soft-man-con').html(readme); } var chartPing; var chartPingData = []; var posTimer; // 把Unix时间戳转化成普通日期 function toCommonTime(unix_time){ var unixTimestamp = new Date(unix_time*1000); var commonTime = unixTimestamp.toLocaleString(); return commonTime; } function getToday(){ var mydate = new Date(); var str = "" + mydate.getFullYear() + "/"; str += (mydate.getMonth()+1) + "/"; str += mydate.getDate(); return str; } //定义周期时间 function getBeforeDate(n){ var n = n; var d = new Date(); var year = d.getFullYear(); var mon=d.getMonth()+1; var day=d.getDate(); if(day <= n){ if(mon>1) { mon = mon-1; } else { year = year-1; mon = 12; } } d.setDate(d.getDate()-n); year = d.getFullYear(); mon=d.getMonth()+1; day=d.getDate(); s = year+"/"+(mon<10?('0'+mon):mon)+"/"+(day<10?('0'+day):day); return s; } function pingDataGraphPosData(){ var isOk = document.getElementById('pingview'); if (!isOk){ clearInterval(posTimer); } if (chartPingData.length>0){ var dlen = chartPingData.length; last_pos = chartPingData[dlen-1]; // console.log(start,end); var cur_ip = $('select[name="ip_list"]').val(); pingPostCallbakN('pingData', {'type':'pos', 'pos':last_pos['created_unix'],"ip":cur_ip}, function(data){ var tmp_data = data.data; for (x in tmp_data){ chartPingData.push(tmp_data[x]); } pingDataGraphRender(); }); } } function pingDataGraphData(day){ var now = (new Date().getTime())/1000; if(day==0){ var start = (new Date(getToday() + " 00:00:01").getTime())/1000; start = Math.round(start); var end = Math.round(now); } if(day==1){ var start = (new Date(getBeforeDate(day) + " 00:00:01").getTime())/1000; var end = (new Date(getBeforeDate(day) + " 23:59:59").getTime())/1000; start = Math.round(start); end = Math.round(end); } else { var start = (new Date(getBeforeDate(day) + " 00:00:01").getTime())/1000; start = Math.round(start); var end = Math.round(now); } var cur_ip = $('select[name="ip_list"]').val(); // console.log(start,end); pingPostCallbak('pingData', {'type':'range', 'start':start, 'end':end, 'ip':cur_ip}, function(data){ chartPingData = data.data; pingDataGraphRender(); if (day!=1){ clearInterval(posTimer); posTimer = setInterval(function() { pingDataGraphPosData(); }, 3000); } }); } function pingDataGraphRender(){ var xData = []; var yData = []; var rdata = chartPingData; for(var i = 0; i < rdata.length; i++){ xData.push(toCommonTime(rdata[i].created_unix)); yData.push(rdata[i].speed/1000000); } var option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }, formatter: '{b}
{a}: {c}' }, xAxis: { type: 'category', boundaryGap: false, data: xData, axisLine:{ lineStyle:{ color:"#666"} } }, yAxis: { type: 'value', name: "PING延迟(ms)", // boundaryGap: [0, '100%'], // min:0, // max: 100, splitLine:{ lineStyle:{ color:"#ddd" } }, axisLine:{ lineStyle:{ color:"#666" } } }, series: [ { name:'PING', type:'line', smooth:true, symbol: 'none', sampling: 'average', itemStyle: { normal: { color: 'rgb(0, 153, 238)' } }, data: yData } ] }; chartPing.setOption(option); } function pingIpList(){ pingPost('ip_list', {}, function(data){ var rdata = $.parseJSON(data.data); var ips = rdata.data; var option = ''; option += ''; for (var i = 0; i < ips.length; i++) { option += ''; } $('select[name="ip_list"]').html(option); $('select[name="ip_list"]').change(function(){ chartPingData = []; pingDataGraphData(0); }); pingDataGraphData(0); }); } // console.log('pingDataGraph'); function pingDataGraph(){ var tpl = '\
\
\
\
\

连通性

\
\ \ 昨天\ 今天\ 最近7天\
\
\
\
\
\
'; $('.soft-man-con').html(tpl); $('.searcTime span').click(function(e){ $('.searcTime span').removeClass('on'); $(this).addClass('on'); }); chartPing = echarts.init(document.getElementById('pingview')); var option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }, formatter: '{b}
{a}: {c}' }, xAxis: { type: 'category', boundaryGap: false, data: [], axisLine:{ lineStyle:{ color:"#666"} } }, yAxis: { type: 'value', name: "PING延迟(ms)", splitLine:{ lineStyle:{ color:"#ddd" } }, axisLine:{ lineStyle:{ color:"#666" } } }, dataZoom: [{ type: 'inside', start: 0, end: 100, zoomLock:true }, { start: 0, end: 100, handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', handleSize: '80%', handleStyle: { color: '#fff', shadowBlur: 3, shadowColor: 'rgba(0, 0, 0, 0.6)', shadowOffsetX: 2, shadowOffsetY: 2 } }], series: [ { name:'PING', type:'line', smooth:true, symbol: 'none', sampling: 'average', itemStyle: { normal: { color: 'rgb(0, 153, 238)' } }, data: [] } ] }; chartPing.setOption(option); window.addEventListener("resize",function(){ chartPing.resize(); }); pingIpList(); } // -------------------------------------------------------------------------------------------------------------- // MYSQL PING // -------------------------------------------------------------------------------------------------------------- var chartMySQLPingData = []; var chartMySQLPing; var posMySQLTimer; function pingMySQLDataGraphPosData(){ var isOk = document.getElementById('mysqlview'); if (!isOk){ clearInterval(posMySQLTimer); } if (chartMySQLPingData.length>0){ var dlen = chartMySQLPingData.length; last_pos = chartMySQLPingData[dlen-1]; // console.log(start,end); pingPostCallbakN('pingMySQLData', {'type':'pos', 'pos':last_pos['created_unix']}, function(data){ var tmp_data = data.data; for (x in tmp_data){ chartMySQLPingData.push(tmp_data[x]); } pingDataMySQLGraphRender(); }); } } function pingDataMySQLGraphRender(){ var xData = []; var yData = []; var rdata = chartMySQLPingData; for(var i = 0; i < rdata.length; i++){ xData.push(toCommonTime(rdata[i].created_unix)); yData.push(rdata[i].value); } var option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }, formatter: '{b}
{a}: {c}' }, xAxis: { type: 'category', boundaryGap: false, data: xData, axisLine:{ lineStyle:{ color:"#666"} } }, yAxis: { type: 'value', name: "MySQL同步延迟", splitLine:{ lineStyle:{ color:"#ddd" } }, axisLine:{ lineStyle:{ color:"#666" } } }, series: [ { name:'同步延迟', type:'line', smooth:true, symbol: 'none', sampling: 'average', itemStyle: { normal: { color: 'rgb(0, 153, 238)' } }, data: yData } ] }; chartMySQLPing.setOption(option); } function pingMySQLDataGraphData(day){ var now = (new Date().getTime())/1000; if(day==0){ var start = (new Date(getToday() + " 00:00:01").getTime())/1000; start = Math.round(start); var end = Math.round(now); } if(day==1){ var start = (new Date(getBeforeDate(day) + " 00:00:01").getTime())/1000; var end = (new Date(getBeforeDate(day) + " 23:59:59").getTime())/1000; start = Math.round(start); end = Math.round(end); } else { var start = (new Date(getBeforeDate(day) + " 00:00:01").getTime())/1000; start = Math.round(start); var end = Math.round(now); } var cur_ip = $('select[name="ip_list"]').val(); // console.log(start,end); pingPostCallbak('pingMySQLData', {'type':'range', 'start':start, 'end':end, 'ip':cur_ip}, function(data){ chartMySQLPingData = data.data; pingDataMySQLGraphRender(); if (day!=1){ clearInterval(posMySQLTimer); posMySQLTimer = setInterval(function() { pingMySQLDataGraphPosData(); }, 3000); } }); } function pingMySQLDataGraph(){ var tpl = '\
\
\
\
\

MySQL检查

\
\ 昨天\ 今天\ 最近7天\
\
\
\
\
\
'; $('.soft-man-con').html(tpl); $('.searcTime span').click(function(e){ $('.searcTime span').removeClass('on'); $(this).addClass('on'); }); chartMySQLPing = echarts.init(document.getElementById('mysqlview')); var option = { tooltip: { trigger: 'axis', axisPointer: { type: 'cross' }, formatter: '{b}
{a}: {c}' }, xAxis: { type: 'category', boundaryGap: false, data: [], axisLine:{ lineStyle:{ color:"#666"} } }, yAxis: { type: 'value', name: "MySQL延迟", splitLine:{ lineStyle:{ color:"#ddd" } }, axisLine:{ lineStyle:{ color:"#666" } } }, dataZoom: [{ type: 'inside', start: 0, end: 100, zoomLock:true }, { start: 0, end: 100, handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z', handleSize: '80%', handleStyle: { color: '#fff', shadowBlur: 3, shadowColor: 'rgba(0, 0, 0, 0.6)', shadowOffsetX: 2, shadowOffsetY: 2 } }], series: [ { name:'延迟', type:'line', smooth:true, symbol: 'none', sampling: 'average', itemStyle: { normal: { color: 'rgb(0, 153, 238)' } }, data: [] } ] }; chartMySQLPing.setOption(option); window.addEventListener("resize",function(){ chartMySQLPing.resize(); }); pingMySQLDataGraphData(0); }