From d4e0e75c0cb046910c66e4d194d4a250f586ef8a Mon Sep 17 00:00:00 2001 From: Andres Martinez Gotor Date: Fri, 20 Jan 2023 12:20:01 +0100 Subject: [PATCH] Azure Monitor: Fix frame display name with multiple resources (#61750) --- .../metrics/azuremonitor-datasource.go | 17 ++++++++++++++--- .../metrics/azuremonitor-datasource_test.go | 11 +++++++---- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go index 94f9271cf3b..c8c41dca2d3 100644 --- a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go +++ b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go @@ -317,7 +317,10 @@ func (e *AzureMonitorDatasource) parseResponse(amr types.AzureMonitorResponse, q Unit: toGrafanaUnit(amr.Value[0].Unit), }) } - resourceID := labels["microsoft.resourceid"] + resourceID, ok := labels["microsoft.resourceid"] + if !ok { + resourceID = labels["Microsoft.ResourceId"] + } resourceIDSlice := strings.Split(resourceID, "/") resourceName := "" if len(resourceIDSlice) > 1 { @@ -328,10 +331,18 @@ func (e *AzureMonitorDatasource) parseResponse(amr types.AzureMonitorResponse, q resourceName = extractResourceNameFromMetricsURL(query.URL) resourceID = extractResourceIDFromMetricsURL(query.URL) } + displayName := "" if query.Alias != "" { - displayName := formatAzureMonitorLegendKey(query.Alias, resourceName, + displayName = formatAzureMonitorLegendKey(query.Alias, resourceName, amr.Value[0].Name.LocalizedValue, "", "", amr.Namespace, amr.Value[0].ID, labels) - + } else if len(labels) > 0 { + // If labels are set, it will be used as the legend so we need to set a more user-friendly name + displayName = amr.Value[0].Name.LocalizedValue + if resourceName != "" { + displayName += " " + resourceName + } + } + if displayName != "" { if dataField.Config != nil { dataField.Config.DisplayName = displayName } else { diff --git a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource_test.go b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource_test.go index 295124f518e..0847e163d9d 100644 --- a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource_test.go +++ b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource_test.go @@ -501,21 +501,24 @@ func TestAzureMonitorParseResponse(t *testing.T) { makeDates(time.Date(2019, 2, 9, 15, 21, 0, 0, time.UTC), 6, time.Hour), ).SetConfig(&data.FieldConfig{Links: []data.DataLink{averageLink}}), data.NewField("Blob Count", data.Labels{"blobtype": "PageBlob"}, - []*float64{ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), nil}).SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}})), + []*float64{ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), ptr.Float64(3), nil}). + SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}, DisplayName: "Blob Count grafana"})), data.NewFrame("", data.NewField("Time", nil, makeDates(time.Date(2019, 2, 9, 15, 21, 0, 0, time.UTC), 6, time.Hour), ).SetConfig(&data.FieldConfig{Links: []data.DataLink{averageLink}}), data.NewField("Blob Count", data.Labels{"blobtype": "BlockBlob"}, - []*float64{ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), nil}).SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}})), + []*float64{ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), ptr.Float64(1), nil}). + SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}, DisplayName: "Blob Count grafana"})), data.NewFrame("", data.NewField("Time", nil, makeDates(time.Date(2019, 2, 9, 15, 21, 0, 0, time.UTC), 6, time.Hour), ).SetConfig(&data.FieldConfig{Links: []data.DataLink{averageLink}}), data.NewField("Blob Count", data.Labels{"blobtype": "Azure Data Lake Storage"}, - []*float64{ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), nil}).SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}})), + []*float64{ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), ptr.Float64(0), nil}). + SetConfig(&data.FieldConfig{Unit: "short", Links: []data.DataLink{averageLink}, DisplayName: "Blob Count grafana"})), }, }, { @@ -685,7 +688,7 @@ func TestAzureMonitorParseResponse(t *testing.T) { ).SetConfig(&data.FieldConfig{Links: []data.DataLink{averageLink}}), data.NewField("Percentage CPU", data.Labels{"microsoft.resourceid": "/subscriptions/12345678-aaaa-bbbb-cccc-123456789abc/resourceGroups/grafanastaging/providers/Microsoft.Compute/virtualMachines/grafana"}, []*float64{ ptr.Float64(2.0875), ptr.Float64(2.1525), ptr.Float64(2.155), ptr.Float64(3.6925), ptr.Float64(2.44), - }).SetConfig(&data.FieldConfig{Unit: "percent", Links: []data.DataLink{averageLink}}), + }).SetConfig(&data.FieldConfig{Unit: "percent", Links: []data.DataLink{averageLink}, DisplayName: "Percentage CPU grafana"}), ), }, },