监控数据
';
- if(d3.tier1&&d3.tier1.summary)h+='
'+d3.tier1.summary.ok+'/'+d3.tier1.summary.total+'
T1 健康
';
- if(d3.tier2&&d3.tier2.summary)h+='
'+d3.tier2.summary.ok+'/'+d3.tier2.summary.total+'
T2 日报
';
- if(d3.tasks&&d3.tasks.length){h+='
定时任务
';for(var i=0;i'+esc(t.name)+' '+esc(t.status)+'';}h+='
';}
- h+='';}catch(e){}
+ var all=await Promise.all([
+ fetch('/api/services').then(function(r){return r.json()}).catch(function(){return{}}),
+ fetch('/api/expected').then(function(r){return r.json()}).catch(function(){return{}}),
+ fetch('/api/monitor').then(function(r){return r.json()}).catch(function(){return{}})
+ ]);
+ var sD=all[0]||{},eD=all[1]||{},mD=all[2]||{};
+ var svcs=sD.services||[],exp=eD.expected||[],act=eD.actual||{};
+
+ // --- Layer 1: 系统概览 ---
+ var hCount=svcs.filter(function(s){return s.health&&s.health.ok}).length;
+ var cDown=exp.filter(function(e){return e.critical&&e.expected.indexOf('running')===0&&act[e.name]!=='running'}).length;
+ var st=cDown>0?'critical':hCount