From 2a836b9ecdc49efccf60d47701e8fe0a6ecd8f24 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Fri, 6 Aug 2021 13:22:43 +0300 Subject: [PATCH] Don't align IT services data --- pkg/datasource/models.go | 4 ++-- pkg/datasource/zabbix.go | 2 +- src/datasource-zabbix/responseHandler.ts | 9 +++++---- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/datasource/models.go b/pkg/datasource/models.go index e6bef47..36ac57a 100644 --- a/pkg/datasource/models.go +++ b/pkg/datasource/models.go @@ -69,7 +69,8 @@ type ZabbixAPIResourceResponse struct { // QueryModel model type QueryModel struct { // Deprecated `mode` field, use QueryType instead - Mode int64 `json:"mode"` + Mode int64 `json:"mode"` + QueryType string `json:"queryType"` Group QueryFilter `json:"group"` Host QueryFilter `json:"host"` @@ -84,7 +85,6 @@ type QueryModel struct { // Direct from the gRPC interfaces RefID string `json:"-"` - QueryType string `json:"-"` TimeRange backend.TimeRange `json:"-"` MaxDataPoints int64 `json:"-"` Interval time.Duration `json:"-"` diff --git a/pkg/datasource/zabbix.go b/pkg/datasource/zabbix.go index 23efc4d..b77b54c 100644 --- a/pkg/datasource/zabbix.go +++ b/pkg/datasource/zabbix.go @@ -108,7 +108,7 @@ func (ds *ZabbixDatasourceInstance) applyDataProcessing(ctx context.Context, que // Align time series data if possible useTrend := ds.isUseTrend(query.TimeRange) - disableDataAlignment := query.Options.DisableDataAlignment || ds.Settings.DisableDataAlignment + disableDataAlignment := query.Options.DisableDataAlignment || ds.Settings.DisableDataAlignment || query.QueryType == MODE_ITSERVICE if !disableDataAlignment { if useTrend { for _, s := range series { diff --git a/src/datasource-zabbix/responseHandler.ts b/src/datasource-zabbix/responseHandler.ts index c28ef1b..2736187 100644 --- a/src/datasource-zabbix/responseHandler.ts +++ b/src/datasource-zabbix/responseHandler.ts @@ -220,16 +220,17 @@ export function itServiceResponseToTimeSeries(response: any, interval) { ts.push({ time: dp[i][1] / 1000, value: dp[i][0] }); } - let intervalS = utils.parseItemInterval(interval); - if (intervalS === 0) { - intervalS = null; + // Convert interval to nanoseconds in order to unmarshall it on the backend to time.Duration + let intervalNS = utils.parseItemInterval(interval) * 1000000; + if (intervalNS === 0) { + intervalNS = null; } const timeSeriesData = { ts: ts, meta: { name: s.target, - interval: intervalS, + interval: null, item: {}, } };