From 58a47ef1d61c26db5c6e11cdd71071ead50c0ba5 Mon Sep 17 00:00:00 2001 From: Andreas Christou Date: Thu, 26 Jun 2025 15:10:19 +0200 Subject: [PATCH] Azure: Fix duplicated trace links (#105698) * Add trace links to first field * Review --- .../loganalytics/azure-log-analytics-datasource.go | 6 +++--- pkg/tsdb/azuremonitor/loganalytics/utils.go | 12 ++++++++++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go index a3ea8c405db..c0e743f947e 100644 --- a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go +++ b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go @@ -599,7 +599,7 @@ func addTraceDataLinksToFields(query *AzureLogAnalyticsQuery, azurePortalBaseUrl DatasourceName: dsInfo.DatasourceName, Query: queryJSONModel, }, - }) + }, MultiField) queryJSONModel.AzureTraces.Query = &query.TraceParentExploreQuery AddCustomDataLink(*frame, data.DataLink{ @@ -610,7 +610,7 @@ func addTraceDataLinksToFields(query *AzureLogAnalyticsQuery, azurePortalBaseUrl DatasourceName: dsInfo.DatasourceName, Query: queryJSONModel, }, - }) + }, MultiField) linkTitle := "Explore Trace in Azure Portal" AddConfigLinks(*frame, tracesUrl, &linkTitle) @@ -624,7 +624,7 @@ func addTraceDataLinksToFields(query *AzureLogAnalyticsQuery, azurePortalBaseUrl DatasourceName: dsInfo.DatasourceName, Query: logsJSONModel, }, - }) + }, SingleField) return nil } diff --git a/pkg/tsdb/azuremonitor/loganalytics/utils.go b/pkg/tsdb/azuremonitor/loganalytics/utils.go index a22ced2c24b..68ff87032d8 100644 --- a/pkg/tsdb/azuremonitor/loganalytics/utils.go +++ b/pkg/tsdb/azuremonitor/loganalytics/utils.go @@ -16,17 +16,25 @@ import ( "github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery" ) -func AddCustomDataLink(frame data.Frame, dataLink data.DataLink) data.Frame { +func AddCustomDataLink(frame data.Frame, dataLink data.DataLink, singleField bool) data.Frame { for i := range frame.Fields { if frame.Fields[i].Config == nil { frame.Fields[i].Config = &data.FieldConfig{} } frame.Fields[i].Config.Links = append(frame.Fields[i].Config.Links, dataLink) + + // Queries using the trace viz only need the link added to a single field + if singleField { + break + } } return frame } +const SingleField bool = true +const MultiField bool = false + func AddConfigLinks(frame data.Frame, dl string, title *string) data.Frame { linkTitle := "View query in Azure Portal" if title != nil { @@ -39,7 +47,7 @@ func AddConfigLinks(frame data.Frame, dl string, title *string) data.Frame { URL: dl, } - frame = AddCustomDataLink(frame, deepLink) + frame = AddCustomDataLink(frame, deepLink, MultiField) return frame }