fix(xo-server-usage-report): handle missing metrics (#2880)

This commit is contained in:
badrAZ 2018-04-18 16:30:30 +02:00 committed by Julien Fontanet
parent 43e1eb9939
commit 4f94ad40b7
2 changed files with 39 additions and 33 deletions

View File

@ -159,30 +159,30 @@
</tr>
<tr>
<td>CPU:</td>
<td>{{global.vms.cpu}} % {{normaliseEvolution global.vmsEvolution.cpu}}</td>
<td>{{normaliseValue global.vms.cpu}} % {{normaliseEvolution global.vmsEvolution.cpu}}</td>
<tr>
<tr>
<td>RAM:</td>
<td>{{global.vms.ram}} GiB {{normaliseEvolution global.vmsEvolution.ram}}</td>
<td>{{normaliseValue global.vms.ram}} GiB {{normaliseEvolution global.vmsEvolution.ram}}</td>
<tr>
<tr>
<td>Disk read:</td>
<td>{{global.vms.diskRead}} MiB {{normaliseEvolution global.vmsEvolution.diskRead}}
<td>{{normaliseValue global.vms.diskRead}} MiB {{normaliseEvolution global.vmsEvolution.diskRead}}
</td>
<tr>
<tr>
<td>Disk write:</td>
<td>{{global.vms.diskWrite}} MiB {{normaliseEvolution global.vmsEvolution.diskWrite}}
<td>{{normaliseValue global.vms.diskWrite}} MiB {{normaliseEvolution global.vmsEvolution.diskWrite}}
</td>
<tr>
<tr>
<td>Network RX:</td>
<td>{{global.vms.netReception}} KiB {{normaliseEvolution global.vmsEvolution.netReception}}
<td>{{normaliseValue global.vms.netReception}} KiB {{normaliseEvolution global.vmsEvolution.netReception}}
</td>
<tr>
<tr>
<td>Network TX:</td>
<td>{{global.vms.netTransmission}} KiB {{normaliseEvolution global.vmsEvolution.netTransmission}}
<td>{{normaliseValue global.vms.netTransmission}} KiB {{normaliseEvolution global.vmsEvolution.netTransmission}}
</td>
<tr>
</table>
@ -205,7 +205,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} %</td>
<td>{{normaliseValue this.value}} %</td>
</tr>
{{/each}}
@ -216,7 +216,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} GiB</td>
<td>{{normaliseValue this.value}} GiB</td>
</tr>
{{/each}}
<tr>
@ -226,7 +226,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} MiB</td>
<td>{{normaliseValue this.value}} MiB</td>
</tr>
{{/each}}
<tr>
@ -236,7 +236,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} MiB</td>
<td>{{normaliseValue this.value}} MiB</td>
</tr>
{{/each}}
<tr>
@ -246,7 +246,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} KiB</td>
<td>{{normaliseValue this.value}} KiB</td>
</tr>
{{/each}}
<tr>
@ -256,7 +256,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} KiB</td>
<td>{{normaliseValue this.value}} KiB</td>
</tr>
{{/each}}
</table>
@ -275,28 +275,28 @@
</tr>
<tr>
<td>CPU:</td>
<td>{{global.hosts.cpu}} % {{normaliseEvolution global.hostsEvolution.cpu}}
<td>{{normaliseValue global.hosts.cpu}} % {{normaliseEvolution global.hostsEvolution.cpu}}
</td>
<tr>
<tr>
<td>RAM:</td>
<td>{{global.hosts.ram}} GiB {{normaliseEvolution global.hostsEvolution.ram}}
<td>{{normaliseValue global.hosts.ram}} GiB {{normaliseEvolution global.hostsEvolution.ram}}
</td>
</td>
<tr>
<tr>
<td>Load average:</td>
<td>{{global.hosts.load}} {{normaliseEvolution global.hostsEvolution.load}}
<td>{{normaliseValue global.hosts.load}} {{normaliseEvolution global.hostsEvolution.load}}
</td>
<tr>
<tr>
<td>Network RX:</td>
<td>{{global.hosts.netReception}} KiB {{normaliseEvolution global.hostsEvolution.netReception}}
<td>{{normaliseValue global.hosts.netReception}} KiB {{normaliseEvolution global.hostsEvolution.netReception}}
</td>
<tr>
<tr>
<td>Network TX:</td>
<td>{{global.hosts.netTransmission}} KiB {{normaliseEvolution global.hostsEvolution.netTransmission}}
<td>{{normaliseValue global.hosts.netTransmission}} KiB {{normaliseEvolution global.hostsEvolution.netTransmission}}
</td>
<tr>
</table>
@ -318,7 +318,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} %</td>
<td>{{normaliseValue this.value}} %</td>
</tr>
{{/each}}
<tr>
@ -328,7 +328,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} GiB</td>
<td>{{normaliseValue this.value}} GiB</td>
</tr>
{{/each}}
<tr>
@ -338,7 +338,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} </td>
<td>{{normaliseValue this.value}} </td>
</tr>
{{/each}}
<tr>
@ -348,7 +348,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} KiB</td>
<td>{{normaliseValue this.value}} KiB</td>
</tr>
{{/each}}
<tr>
@ -358,7 +358,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} KiB</td>
<td>{{normaliseValue this.value}} KiB</td>
</tr>
{{/each}}
</table>
@ -378,7 +378,7 @@
<tr>
<td>{{shortUUID this.uuid}}</td>
<td>{{this.name}}</td>
<td>{{this.value}} GiB</td>
<td>{{normaliseValue this.value}} GiB</td>
</tr>
{{/each}}
</table>

View File

@ -8,6 +8,7 @@ import {
filter,
find,
forEach,
get,
isFinite,
map,
orderBy,
@ -137,7 +138,7 @@ Handlebars.registerHelper(
value =>
new Handlebars.SafeString(
isFinite(+value) && +value !== 0
? value > 0
? (value = round(value, 2)) > 0
? `(<b style="color: green;">▲ ${value}</b>)`
: `(<b style="color: red;">▼ ${String(value).slice(1)}</b>)`
: ''
@ -164,7 +165,7 @@ const computeDoubleMean = val => computeMean(map(val, computeMean))
function computeMeans (objects, options) {
return zipObject(
options,
map(options, opt => round(computeMean(map(objects, opt)), 2))
map(options, opt => computeMean(map(objects, opt)), 2)
)
}
@ -185,7 +186,7 @@ function getTop (objects, options) {
obj => ({
uuid: obj.uuid,
name: obj.name,
value: round(obj[opt], 2),
value: obj[opt],
})
)
)
@ -200,7 +201,7 @@ function computePercentage (curr, prev, options) {
opt =>
prev[opt] === 0 || prev[opt] === null
? 'NONE'
: `${round((curr[opt] - prev[opt]) * 100 / prev[opt], 2)}`
: `${(curr[opt] - prev[opt]) * 100 / prev[opt]}`
)
)
}
@ -228,10 +229,14 @@ async function getVmsStats ({ runningVms, xo }) {
name: vm.name_label,
cpu: computeDoubleMean(vmStats.stats.cpus),
ram: computeMean(getMemoryUsedMetric(vmStats.stats)) / gibPower,
diskRead: computeDoubleMean(values(vmStats.stats.xvds.r)) / mibPower,
diskWrite: computeDoubleMean(values(vmStats.stats.xvds.w)) / mibPower,
netReception: computeDoubleMean(vmStats.stats.vifs.rx) / kibPower,
netTransmission: computeDoubleMean(vmStats.stats.vifs.tx) / kibPower,
diskRead:
computeDoubleMean(values(get(vmStats.stats.xvds, 'r'))) / mibPower,
diskWrite:
computeDoubleMean(values(get(vmStats.stats.xvds, 'w'))) / mibPower,
netReception:
computeDoubleMean(get(vmStats.stats.vifs, 'rx')) / kibPower,
netTransmission:
computeDoubleMean(get(vmStats.stats.vifs, 'tx')) / kibPower,
}
})
),
@ -251,9 +256,10 @@ async function getHostsStats ({ runningHosts, xo }) {
cpu: computeDoubleMean(hostStats.stats.cpus),
ram: computeMean(getMemoryUsedMetric(hostStats.stats)) / gibPower,
load: computeMean(hostStats.stats.load),
netReception: computeDoubleMean(hostStats.stats.pifs.rx) / kibPower,
netReception:
computeDoubleMean(get(hostStats.stats.pifs, 'rx')) / kibPower,
netTransmission:
computeDoubleMean(hostStats.stats.pifs.tx) / kibPower,
computeDoubleMean(get(hostStats.stats.pifs, 'tx')) / kibPower,
}
})
),