From f76a11c955e77f512d84a820d64267b8ec10de98 Mon Sep 17 00:00:00 2001 From: Benedikt Spellmeyer Date: Wed, 22 Sep 2021 17:05:36 +0200 Subject: [PATCH] CloudMonitoring: Fix INT64 label unmarshal error (#39441) --- pkg/tsdb/cloudmonitoring/cloudmonitoring_test.go | 4 ++-- .../cloudmonitoring/test-data/7-series-response-mql.json | 7 +++++++ pkg/tsdb/cloudmonitoring/time_series_query.go | 8 +++----- pkg/tsdb/cloudmonitoring/types.go | 2 +- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/tsdb/cloudmonitoring/cloudmonitoring_test.go b/pkg/tsdb/cloudmonitoring/cloudmonitoring_test.go index fcc627c3c10..0125970af44 100644 --- a/pkg/tsdb/cloudmonitoring/cloudmonitoring_test.go +++ b/pkg/tsdb/cloudmonitoring/cloudmonitoring_test.go @@ -942,7 +942,7 @@ func TestCloudMonitoring(t *testing.T) { query := &cloudMonitoringTimeSeriesQuery{ ProjectName: "test-proj", Query: "test-query", - AliasBy: "{{project}} - {{resource.label.zone}} - {{resource.label.instance_id}}", + AliasBy: "{{project}} - {{resource.label.zone}} - {{resource.label.instance_id}} - {{metric.label.response_code_class}}", timeRange: plugins.DataTimeRange{ From: fmt.Sprintf("%v", fromStart.Unix()*1000), To: fmt.Sprintf("%v", fromStart.Add(34*time.Minute).Unix()*1000), @@ -952,7 +952,7 @@ func TestCloudMonitoring(t *testing.T) { require.NoError(t, err) frames, err := res.Dataframes.Decoded() require.NoError(t, err) - assert.Equal(t, "test-proj - asia-northeast1-c - 6724404429462225363", frames[0].Fields[1].Name) + assert.Equal(t, "test-proj - asia-northeast1-c - 6724404429462225363 - 200", frames[0].Fields[1].Name) }) }) }) diff --git a/pkg/tsdb/cloudmonitoring/test-data/7-series-response-mql.json b/pkg/tsdb/cloudmonitoring/test-data/7-series-response-mql.json index 0bb57fc4116..62233e23d8d 100644 --- a/pkg/tsdb/cloudmonitoring/test-data/7-series-response-mql.json +++ b/pkg/tsdb/cloudmonitoring/test-data/7-series-response-mql.json @@ -9,6 +9,10 @@ }, { "key": "resource.instance_id" + }, + { + "key": "metric.response_code_class", + "valueType": "INT64" } ], "pointDescriptors": [ @@ -30,6 +34,9 @@ }, { "stringValue": "6724404429462225363" + }, + { + "int64Value": "200" } ], "pointData": [ diff --git a/pkg/tsdb/cloudmonitoring/time_series_query.go b/pkg/tsdb/cloudmonitoring/time_series_query.go index 86b9b6bfc88..2fb54136ec2 100644 --- a/pkg/tsdb/cloudmonitoring/time_series_query.go +++ b/pkg/tsdb/cloudmonitoring/time_series_query.go @@ -123,9 +123,8 @@ func (timeSeriesQuery cloudMonitoringTimeSeriesQuery) parseResponse(queryRes *pl labels[key][strVal] = true seriesLabels[key] = strVal case "INT64": - intVal := strconv.FormatInt(labelValue.Int64Value, 10) - labels[key][intVal] = true - seriesLabels[key] = intVal + labels[key][labelValue.Int64Value] = true + seriesLabels[key] = labelValue.Int64Value default: labels[key][labelValue.StringValue] = true seriesLabels[key] = labelValue.StringValue @@ -285,8 +284,7 @@ func (timeSeriesQuery cloudMonitoringTimeSeriesQuery) parseToAnnotations(queryRe strVal := strconv.FormatBool(labelValue.BoolValue) value = strVal case "INT64": - intVal := strconv.FormatInt(labelValue.Int64Value, 10) - value = intVal + value = labelValue.Int64Value default: value = labelValue.StringValue } diff --git a/pkg/tsdb/cloudmonitoring/types.go b/pkg/tsdb/cloudmonitoring/types.go index 25a911b9227..95c6dc76a51 100644 --- a/pkg/tsdb/cloudmonitoring/types.go +++ b/pkg/tsdb/cloudmonitoring/types.go @@ -118,7 +118,7 @@ type timeSeriesDescriptor struct { type timeSeriesData []struct { LabelValues []struct { BoolValue bool `json:"boolValue"` - Int64Value int64 `json:"int64Value"` + Int64Value string `json:"int64Value"` StringValue string `json:"stringValue"` } `json:"labelValues"` PointData []struct {