SLA over time (#764)
* Added "Functions" to IT Services editor panel * Added support to IT Services graph over time
This commit is contained in:
committed by
Alexander Zobnin
parent
15d76dc941
commit
2fac45c11b
@@ -323,8 +323,8 @@ export class ZabbixDatasource {
|
|||||||
|
|
||||||
return this.zabbix.getITServices(itServiceFilter)
|
return this.zabbix.getITServices(itServiceFilter)
|
||||||
.then(itservices => {
|
.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) {
|
queryTriggersData(target, timeRange) {
|
||||||
|
|||||||
@@ -201,7 +201,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Metric processing functions -->
|
<!-- 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">
|
<div class="gf-form">
|
||||||
<label class="gf-form-label query-keyword width-7">Functions</label>
|
<label class="gf-form-label query-keyword width-7">Functions</label>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -123,22 +123,27 @@ function extractText(str, pattern, useCaptureGroups) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function handleSLAResponse(itservice, slaProperty, slaObject) {
|
function handleSLAResponse(itservice, slaProperty, slaObject) {
|
||||||
var targetSLA = slaObject[itservice.serviceid].sla[0];
|
var targetSLA = slaObject[itservice.serviceid].sla;
|
||||||
if (slaProperty.property === 'status') {
|
if (slaProperty.property === 'status') {
|
||||||
var targetStatus = parseInt(slaObject[itservice.serviceid].status);
|
var targetStatus = parseInt(slaObject[itservice.serviceid].status);
|
||||||
return {
|
return {
|
||||||
target: itservice.name + ' ' + slaProperty.name,
|
target: itservice.name + ' ' + slaProperty.name,
|
||||||
datapoints: [
|
datapoints: [
|
||||||
[targetStatus, targetSLA.to * 1000]
|
[targetStatus, targetSLA[0].to * 1000]
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
} else {
|
} 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 {
|
return {
|
||||||
target: itservice.name + ' ' + slaProperty.name,
|
target: itservice.name + ' ' + slaProperty.name,
|
||||||
datapoints: [
|
datapoints: slaArr
|
||||||
[targetSLA[slaProperty.property], targetSLA.from * 1000],
|
|
||||||
[targetSLA[slaProperty.property], targetSLA.to * 1000]
|
|
||||||
]
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,13 +317,24 @@ export class ZabbixAPIConnector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getSLA(serviceids, timeRange) {
|
getSLA(serviceids, timeRange) {
|
||||||
|
let defaultRange = 86400;
|
||||||
|
let i;
|
||||||
|
let getIntervals = [];
|
||||||
let [timeFrom, timeTo] = timeRange;
|
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 = {
|
var params = {
|
||||||
serviceids: serviceids,
|
serviceids: serviceids,
|
||||||
intervals: [{
|
intervals: getIntervals
|
||||||
from: timeFrom,
|
|
||||||
to: timeTo
|
|
||||||
}]
|
|
||||||
};
|
};
|
||||||
return this.request('service.getsla', params);
|
return this.request('service.getsla', params);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user