SLA over time (#764)

* Added "Functions" to IT Services editor panel

* Added support to IT Services graph over time
This commit is contained in:
JeferCatarina
2019-07-30 12:54:56 -03:00
committed by Alexander Zobnin
parent 15d76dc941
commit 2fac45c11b
4 changed files with 29 additions and 13 deletions

View File

@@ -323,8 +323,8 @@ export class ZabbixDatasource {
return this.zabbix.getITServices(itServiceFilter)
.then(itservices => {
return this.zabbix.getSLA(itservices, timeRange, target, options);
});
return this.zabbix.getSLA(itservices, timeRange, target, options);})
.then(itservicesdp => this.applyDataProcessingFunctions(itservicesdp, target));
}
queryTriggersData(target, timeRange) {

View File

@@ -201,7 +201,7 @@
</div>
<!-- Metric processing functions -->
<div class="gf-form-inline" ng-show="ctrl.target.mode == editorMode.METRICS || ctrl.target.mode == editorMode.ITEMID">
<div class="gf-form-inline" ng-show="ctrl.target.mode == editorMode.METRICS || ctrl.target.mode == editorMode.ITEMID || ctrl.target.mode == editorMode.ITSERVICE">
<div class="gf-form">
<label class="gf-form-label query-keyword width-7">Functions</label>
</div>

View File

@@ -123,22 +123,27 @@ function extractText(str, pattern, useCaptureGroups) {
}
function handleSLAResponse(itservice, slaProperty, slaObject) {
var targetSLA = slaObject[itservice.serviceid].sla[0];
var targetSLA = slaObject[itservice.serviceid].sla;
if (slaProperty.property === 'status') {
var targetStatus = parseInt(slaObject[itservice.serviceid].status);
return {
target: itservice.name + ' ' + slaProperty.name,
datapoints: [
[targetStatus, targetSLA.to * 1000]
[targetStatus, targetSLA[0].to * 1000]
]
};
} else {
let i;
let slaArr = [];
for (i = 0; i < targetSLA.length; i++) {
if (i === 0) {
slaArr.push([targetSLA[i][slaProperty.property], targetSLA[i].from * 1000]);
}
slaArr.push([targetSLA[i][slaProperty.property], targetSLA[i].to * 1000]);
}
return {
target: itservice.name + ' ' + slaProperty.name,
datapoints: [
[targetSLA[slaProperty.property], targetSLA.from * 1000],
[targetSLA[slaProperty.property], targetSLA.to * 1000]
]
datapoints: slaArr
};
}
}

View File

@@ -317,13 +317,24 @@ export class ZabbixAPIConnector {
}
getSLA(serviceids, timeRange) {
let defaultRange = 86400;
let i;
let getIntervals = [];
let [timeFrom, timeTo] = timeRange;
for (i = timeFrom; i <= timeTo; i = i + defaultRange) {
if (timeTo < (i + defaultRange)) {
if (timeTo !== i) {
getIntervals.push({from : i, to : timeTo});
}
} else {
getIntervals.push({from : i, to : (i + defaultRange)});
}
}
var params = {
serviceids: serviceids,
intervals: [{
from: timeFrom,
to: timeTo
}]
intervals: getIntervals
};
return this.request('service.getsla', params);
}