From 2fac45c11be1eba787f4e4a3fa64f6157ac6d949 Mon Sep 17 00:00:00 2001 From: JeferCatarina <37630538+JeferCatarina@users.noreply.github.com> Date: Tue, 30 Jul 2019 12:54:56 -0300 Subject: [PATCH] SLA over time (#764) * Added "Functions" to IT Services editor panel * Added support to IT Services graph over time --- src/datasource-zabbix/datasource.js | 4 ++-- .../partials/query.editor.html | 2 +- src/datasource-zabbix/responseHandler.js | 17 +++++++++++------ .../zabbix_api/zabbixAPIConnector.js | 19 +++++++++++++++---- 4 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/datasource-zabbix/datasource.js b/src/datasource-zabbix/datasource.js index 8dae24d..09faf6d 100644 --- a/src/datasource-zabbix/datasource.js +++ b/src/datasource-zabbix/datasource.js @@ -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) { diff --git a/src/datasource-zabbix/partials/query.editor.html b/src/datasource-zabbix/partials/query.editor.html index 33b2f7d..ccf5ee3 100644 --- a/src/datasource-zabbix/partials/query.editor.html +++ b/src/datasource-zabbix/partials/query.editor.html @@ -201,7 +201,7 @@ -
+
diff --git a/src/datasource-zabbix/responseHandler.js b/src/datasource-zabbix/responseHandler.js index e340c80..ab9174e 100644 --- a/src/datasource-zabbix/responseHandler.js +++ b/src/datasource-zabbix/responseHandler.js @@ -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 }; } } diff --git a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js index 0282fdf..6fd7931 100644 --- a/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js +++ b/src/datasource-zabbix/zabbix/connectors/zabbix_api/zabbixAPIConnector.js @@ -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); }