From e087a8ab05e211acf5be78512e033de4deefa5f0 Mon Sep 17 00:00:00 2001 From: Andrew Hackmann <5140848+bossinc@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:38:26 -0700 Subject: [PATCH] Azure monitor/remove graf tracing (#75927) * trying to remove tracing * trying to remove tracing * use plugin sdk tracing * tracing is not init * add infra tracing back * remove infra trace * Update pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go Co-authored-by: Andreas Christou * pr feedback * remove code from other pr --------- Co-authored-by: Andreas Christou --- .../plugins_integration_test.go | 2 +- pkg/tsdb/azuremonitor/azuremonitor.go | 9 +++---- pkg/tsdb/azuremonitor/azuremonitor_test.go | 3 +-- .../azure-log-analytics-datasource.go | 24 +++++++---------- .../azure-log-analytics-datasource_test.go | 12 ++++----- .../metrics/azuremonitor-datasource.go | 26 +++++++++---------- .../azure-resource-graph-datasource.go | 18 ++++++------- 7 files changed, 42 insertions(+), 52 deletions(-) diff --git a/pkg/services/pluginsintegration/plugins_integration_test.go b/pkg/services/pluginsintegration/plugins_integration_test.go index 4febd9df794..91d7c6356c0 100644 --- a/pkg/services/pluginsintegration/plugins_integration_test.go +++ b/pkg/services/pluginsintegration/plugins_integration_test.go @@ -79,7 +79,7 @@ func TestIntegrationPluginManager(t *testing.T) { features := featuremgmt.WithFeatures() hcp := httpclient.NewProvider() - am := azuremonitor.ProvideService(cfg, hcp, features, tracer) + am := azuremonitor.ProvideService(cfg, hcp, features) cw := cloudwatch.ProvideService(cfg, hcp, features) cm := cloudmonitoring.ProvideService(hcp, tracer) es := elasticsearch.ProvideService(hcp, tracer) diff --git a/pkg/tsdb/azuremonitor/azuremonitor.go b/pkg/tsdb/azuremonitor/azuremonitor.go index d541b8d44fe..ac94cb02842 100644 --- a/pkg/tsdb/azuremonitor/azuremonitor.go +++ b/pkg/tsdb/azuremonitor/azuremonitor.go @@ -17,7 +17,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" "github.com/grafana/grafana-plugin-sdk-go/backend/resource/httpadapter" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics" @@ -26,7 +25,7 @@ import ( "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" ) -func ProvideService(cfg *setting.Cfg, httpClientProvider *httpclient.Provider, features featuremgmt.FeatureToggles, tracer tracing.Tracer) *Service { +func ProvideService(cfg *setting.Cfg, httpClientProvider *httpclient.Provider, features featuremgmt.FeatureToggles) *Service { proxy := &httpServiceProxy{} executors := map[string]azDatasourceExecutor{ azureMonitor: &metrics.AzureMonitorDatasource{Proxy: proxy, Features: features}, @@ -40,7 +39,6 @@ func ProvideService(cfg *setting.Cfg, httpClientProvider *httpclient.Provider, f s := &Service{ im: im, executors: executors, - tracer: tracer, } s.queryMux = s.newQueryMux() @@ -63,7 +61,6 @@ type Service struct { queryMux *datasource.QueryTypeMux resourceHandler backend.CallResourceHandler - tracer tracing.Tracer } func getDatasourceService(settings *backend.DataSourceInstanceSettings, cfg *setting.Cfg, clientProvider *httpclient.Provider, dsInfo types.DatasourceInfo, routeName string) (types.DatasourceService, error) { @@ -156,7 +153,7 @@ func getAzureRoutes(cloud string, jsonData json.RawMessage) (map[string]types.Az } type azDatasourceExecutor interface { - ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.QueryDataResponse, error) + ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.QueryDataResponse, error) ResourceRequest(rw http.ResponseWriter, req *http.Request, cli *http.Client) (http.ResponseWriter, error) } @@ -191,7 +188,7 @@ func (s *Service) newQueryMux() *datasource.QueryTypeMux { if !ok { return nil, fmt.Errorf("missing service for %s", dst) } - return executor.ExecuteTimeSeriesQuery(ctx, req.Queries, dsInfo, service.HTTPClient, service.URL, s.tracer) + return executor.ExecuteTimeSeriesQuery(ctx, req.Queries, dsInfo, service.HTTPClient, service.URL) }) } return mux diff --git a/pkg/tsdb/azuremonitor/azuremonitor_test.go b/pkg/tsdb/azuremonitor/azuremonitor_test.go index ff703df414f..15aa4d787de 100644 --- a/pkg/tsdb/azuremonitor/azuremonitor_test.go +++ b/pkg/tsdb/azuremonitor/azuremonitor_test.go @@ -17,7 +17,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" @@ -135,7 +134,7 @@ func (f *fakeExecutor) ResourceRequest(rw http.ResponseWriter, req *http.Request return nil, nil } -func (f *fakeExecutor) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.QueryDataResponse, error) { +func (f *fakeExecutor) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.QueryDataResponse, error) { if client == nil { f.t.Errorf("The HTTP client for %s is missing", f.queryType) } else { diff --git a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go index 275dd587756..42007a7720f 100644 --- a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go +++ b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource.go @@ -17,12 +17,12 @@ import ( "time" "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/tracing" "github.com/grafana/grafana-plugin-sdk-go/data" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" "k8s.io/utils/strings/slices" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" @@ -60,15 +60,15 @@ func (e *AzureLogAnalyticsDatasource) ResourceRequest(rw http.ResponseWriter, re // 1. build the AzureMonitor url and querystring for each query // 2. executes each query by calling the Azure Monitor API // 3. parses the responses for each query into data frames -func (e *AzureLogAnalyticsDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.QueryDataResponse, error) { +func (e *AzureLogAnalyticsDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.QueryDataResponse, error) { result := backend.NewQueryDataResponse() - queries, err := e.buildQueries(ctx, originalQueries, dsInfo, tracer) + queries, err := e.buildQueries(ctx, originalQueries, dsInfo) if err != nil { return nil, err } for _, query := range queries { - res, err := e.executeQuery(ctx, query, dsInfo, client, url, tracer) + res, err := e.executeQuery(ctx, query, dsInfo, client, url) if err != nil { result.Responses[query.RefID] = backend.DataResponse{Error: err} continue @@ -93,7 +93,7 @@ func getApiURL(resourceOrWorkspace string, isAppInsightsQuery bool) string { } } -func (e *AzureLogAnalyticsDatasource) buildQueries(ctx context.Context, queries []backend.DataQuery, dsInfo types.DatasourceInfo, tracer tracing.Tracer) ([]*AzureLogAnalyticsQuery, error) { +func (e *AzureLogAnalyticsDatasource) buildQueries(ctx context.Context, queries []backend.DataQuery, dsInfo types.DatasourceInfo) ([]*AzureLogAnalyticsQuery, error) { azureLogAnalyticsQueries := []*AzureLogAnalyticsQuery{} appInsightsRegExp, err := regexp.Compile("providers/Microsoft.Insights/components") if err != nil { @@ -192,7 +192,7 @@ func (e *AzureLogAnalyticsDatasource) buildQueries(ctx context.Context, queries operationId := "" if queryJSONModel.AzureTraces.OperationId != nil && *queryJSONModel.AzureTraces.OperationId != "" { operationId = *queryJSONModel.AzureTraces.OperationId - resourcesMap, err = getCorrelationWorkspaces(ctx, resourceOrWorkspace, resourcesMap, dsInfo, operationId, tracer) + resourcesMap, err = getCorrelationWorkspaces(ctx, resourceOrWorkspace, resourcesMap, dsInfo, operationId) if err != nil { return nil, fmt.Errorf("failed to retrieve correlation resources for operation ID - %s: %s", operationId, err) } @@ -261,7 +261,7 @@ func (e *AzureLogAnalyticsDatasource) buildQueries(ctx context.Context, queries return azureLogAnalyticsQueries, nil } -func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *AzureLogAnalyticsQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.DataResponse, error) { +func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *AzureLogAnalyticsQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.DataResponse, error) { // If azureLogAnalyticsSameAs is defined and set to false, return an error if sameAs, ok := dsInfo.JSONData["azureLogAnalyticsSameAs"]; ok && !sameAs.(bool) { return nil, fmt.Errorf("credentials for Log Analytics are no longer supported. Go to the data source configuration to update Azure Monitor credentials") @@ -284,7 +284,7 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A return nil, err } - ctx, span := tracer.Start(ctx, "azure log analytics query", trace.WithAttributes( + _, span := tracing.DefaultTracer().Start(ctx, "azure log analytics query", trace.WithAttributes( attribute.String("target", query.Query), attribute.Int64("from", query.TimeRange.From.UnixNano()/int64(time.Millisecond)), attribute.Int64("until", query.TimeRange.To.UnixNano()/int64(time.Millisecond)), @@ -293,8 +293,6 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A )) defer span.End() - tracer.Inject(ctx, req.Header, span) - res, err := client.Do(req) if err != nil { return nil, err @@ -544,7 +542,7 @@ func getTracesQueryUrl(resources []string, azurePortalUrl string) (string, error return portalUrl, nil } -func getCorrelationWorkspaces(ctx context.Context, baseResource string, resourcesMap map[string]bool, dsInfo types.DatasourceInfo, operationId string, tracer tracing.Tracer) (map[string]bool, error) { +func getCorrelationWorkspaces(ctx context.Context, baseResource string, resourcesMap map[string]bool, dsInfo types.DatasourceInfo, operationId string) (map[string]bool, error) { azMonService := dsInfo.Services["Azure Monitor"] correlationUrl := azMonService.URL + fmt.Sprintf("%s/providers/microsoft.insights/transactions/%s", baseResource, operationId) @@ -560,15 +558,13 @@ func getCorrelationWorkspaces(ctx context.Context, baseResource string, resource req.URL.RawQuery = values.Encode() req.Method = "GET" - ctx, span := tracer.Start(ctx, "azure traces correlation request", trace.WithAttributes( + _, span := tracing.DefaultTracer().Start(ctx, "azure traces correlation request", trace.WithAttributes( attribute.String("target", req.URL.String()), attribute.Int64("datasource_id", dsInfo.DatasourceID), attribute.Int64("org_id", dsInfo.OrgID), )) defer span.End() - tracer.Inject(ctx, req.Header, span) - res, err := azMonService.HTTPClient.Do(req) if err != nil { return AzureCorrelationAPIResponse{}, err diff --git a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource_test.go b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource_test.go index cefd8c116d9..4790664322d 100644 --- a/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource_test.go +++ b/pkg/tsdb/azuremonitor/loganalytics/azure-log-analytics-datasource_test.go @@ -16,7 +16,6 @@ import ( "github.com/grafana/grafana-plugin-sdk-go/backend/httpclient" "github.com/stretchr/testify/require" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" ) @@ -26,7 +25,6 @@ func TestBuildingAzureLogAnalyticsQueries(t *testing.T) { fromStart := time.Date(2018, 3, 15, 13, 0, 0, 0, time.UTC).In(time.Local) timeRange := backend.TimeRange{From: fromStart, To: fromStart.Add(34 * time.Minute)} ctx := context.Background() - tracer := tracing.InitializeTracerForTest() svr := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") w.WriteHeader(http.StatusOK) @@ -1452,7 +1450,7 @@ func TestBuildingAzureLogAnalyticsQueries(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - queries, err := datasource.buildQueries(ctx, tt.queryModel, dsInfo, tracer) + queries, err := datasource.buildQueries(ctx, tt.queryModel, dsInfo) tt.Err(t, err) if diff := cmp.Diff(tt.azureLogAnalyticsQueries[0], queries[0]); diff != "" { t.Errorf("Result mismatch (-want +got): \n%s", diff) @@ -1571,9 +1569,11 @@ func Test_executeQueryErrorWithDifferentLogAnalyticsCreds(t *testing.T) { query := &AzureLogAnalyticsQuery{ TimeRange: backend.TimeRange{}, } - tracer := tracing.InitializeTracerForTest() - _, err := ds.executeQuery(ctx, query, dsInfo, &http.Client{}, dsInfo.Services["Azure Log Analytics"].URL, tracer) + _, err := ds.executeQuery(ctx, query, dsInfo, &http.Client{}, dsInfo.Services["Azure Log Analytics"].URL) + if err == nil { + t.Fatal("expecting an error") + } if !strings.Contains(err.Error(), "credentials for Log Analytics are no longer supported") { - t.Error("Expecting the error to inform of bad credentials") + t.Error("expecting the error to inform of bad credentials") } } diff --git a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go index 340d4aa11a8..cae6134a2b6 100644 --- a/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go +++ b/pkg/tsdb/azuremonitor/metrics/azuremonitor-datasource.go @@ -14,11 +14,11 @@ import ( "time" "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/tracing" "github.com/grafana/grafana-plugin-sdk-go/data" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/services/featuremgmt" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics" @@ -48,7 +48,7 @@ func (e *AzureMonitorDatasource) ResourceRequest(rw http.ResponseWriter, req *ht // 1. build the AzureMonitor url and querystring for each query // 2. executes each query by calling the Azure Monitor API // 3. parses the responses for each query into data frames -func (e *AzureMonitorDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.QueryDataResponse, error) { +func (e *AzureMonitorDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.QueryDataResponse, error) { result := backend.NewQueryDataResponse() queries, err := e.buildQueries(originalQueries, dsInfo) @@ -57,7 +57,7 @@ func (e *AzureMonitorDatasource) ExecuteTimeSeriesQuery(ctx context.Context, ori } for _, query := range queries { - res, err := e.executeQuery(ctx, query, dsInfo, client, url, tracer) + res, err := e.executeQuery(ctx, query, dsInfo, client, url) if err != nil { result.Responses[query.RefID] = backend.DataResponse{Error: err} continue @@ -244,7 +244,7 @@ func getParams(azJSONModel *dataquery.AzureMetricQuery, query backend.DataQuery) return params, nil } -func (e *AzureMonitorDatasource) retrieveSubscriptionDetails(cli *http.Client, ctx context.Context, tracer tracing.Tracer, subscriptionId string, baseUrl string, dsId int64, orgId int64) (string, error) { +func (e *AzureMonitorDatasource) retrieveSubscriptionDetails(cli *http.Client, ctx context.Context, subscriptionId string, baseUrl string, dsId int64, orgId int64) (string, error) { req, err := e.createRequest(ctx, fmt.Sprintf("%s/subscriptions/%s", baseUrl, subscriptionId)) if err != nil { return "", fmt.Errorf("failed to retrieve subscription details for subscription %s: %s", subscriptionId, err) @@ -253,14 +253,14 @@ func (e *AzureMonitorDatasource) retrieveSubscriptionDetails(cli *http.Client, c values.Add("api-version", "2022-12-01") req.URL.RawQuery = values.Encode() - ctx, span := tracer.Start(ctx, "azuremonitor query", trace.WithAttributes( + _, span := tracing.DefaultTracer().Start(ctx, "azuremonitor subscription query", trace.WithAttributes( attribute.String("subscription", subscriptionId), attribute.Int64("datasource_id", dsId), attribute.Int64("org_id", orgId), - )) + ), + ) defer span.End() - tracer.Inject(ctx, req.Header, span) res, err := cli.Do(req) if err != nil { return "", fmt.Errorf("failed to request subscription details: %s", err) @@ -290,8 +290,7 @@ func (e *AzureMonitorDatasource) retrieveSubscriptionDetails(cli *http.Client, c return data.DisplayName, nil } -func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types.AzureMonitorQuery, dsInfo types.DatasourceInfo, cli *http.Client, - url string, tracer tracing.Tracer) (*backend.DataResponse, error) { +func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types.AzureMonitorQuery, dsInfo types.DatasourceInfo, cli *http.Client, url string) (*backend.DataResponse, error) { req, err := e.createRequest(ctx, url) if err != nil { return nil, err @@ -304,17 +303,16 @@ func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types. req.Body = io.NopCloser(strings.NewReader(fmt.Sprintf(`{"filter": "%s"}`, query.BodyFilter))) } - ctx, span := tracer.Start(ctx, "azuremonitor query", trace.WithAttributes( + _, span := tracing.DefaultTracer().Start(ctx, "azuremonitor query", trace.WithAttributes( attribute.String("target", query.Target), attribute.Int64("from", query.TimeRange.From.UnixNano()/int64(time.Millisecond)), attribute.Int64("until", query.TimeRange.To.UnixNano()/int64(time.Millisecond)), attribute.Int64("datasource_id", dsInfo.DatasourceID), attribute.Int64("org_id", dsInfo.OrgID), - )) + ), + ) defer span.End() - tracer.Inject(ctx, req.Header, span) - res, err := cli.Do(req) if err != nil { return nil, err @@ -336,7 +334,7 @@ func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types. return nil, err } - subscription, err := e.retrieveSubscriptionDetails(cli, ctx, tracer, query.Subscription, dsInfo.Routes["Azure Monitor"].URL, dsInfo.DatasourceID, dsInfo.OrgID) + subscription, err := e.retrieveSubscriptionDetails(cli, ctx, query.Subscription, dsInfo.Routes["Azure Monitor"].URL, dsInfo.DatasourceID, dsInfo.OrgID) if err != nil { return nil, err } diff --git a/pkg/tsdb/azuremonitor/resourcegraph/azure-resource-graph-datasource.go b/pkg/tsdb/azuremonitor/resourcegraph/azure-resource-graph-datasource.go index 56b531ddac9..c04aecc562e 100644 --- a/pkg/tsdb/azuremonitor/resourcegraph/azure-resource-graph-datasource.go +++ b/pkg/tsdb/azuremonitor/resourcegraph/azure-resource-graph-datasource.go @@ -12,11 +12,11 @@ import ( "time" "github.com/grafana/grafana-plugin-sdk-go/backend" + "github.com/grafana/grafana-plugin-sdk-go/backend/tracing" "github.com/grafana/grafana-plugin-sdk-go/data" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" - "github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/kinds/dataquery" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros" @@ -56,7 +56,7 @@ func (e *AzureResourceGraphDatasource) ResourceRequest(rw http.ResponseWriter, r // 1. builds the AzureMonitor url and querystring for each query // 2. executes each query by calling the Azure Monitor API // 3. parses the responses for each query into data frames -func (e *AzureResourceGraphDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string, tracer tracing.Tracer) (*backend.QueryDataResponse, error) { +func (e *AzureResourceGraphDatasource) ExecuteTimeSeriesQuery(ctx context.Context, originalQueries []backend.DataQuery, dsInfo types.DatasourceInfo, client *http.Client, url string) (*backend.QueryDataResponse, error) { result := &backend.QueryDataResponse{ Responses: map[string]backend.DataResponse{}, } @@ -67,7 +67,7 @@ func (e *AzureResourceGraphDatasource) ExecuteTimeSeriesQuery(ctx context.Contex } for _, query := range queries { - res, err := e.executeQuery(ctx, query, dsInfo, client, url, tracer) + res, err := e.executeQuery(ctx, query, dsInfo, client, url) if err != nil { result.Responses[query.RefID] = backend.DataResponse{Error: err} continue @@ -121,8 +121,7 @@ func (e *AzureResourceGraphDatasource) buildQueries(queries []backend.DataQuery, return azureResourceGraphQueries, nil } -func (e *AzureResourceGraphDatasource) executeQuery(ctx context.Context, query *AzureResourceGraphQuery, dsInfo types.DatasourceInfo, client *http.Client, - dsURL string, tracer tracing.Tracer) (*backend.DataResponse, error) { +func (e *AzureResourceGraphDatasource) executeQuery(ctx context.Context, query *AzureResourceGraphQuery, dsInfo types.DatasourceInfo, client *http.Client, dsURL string) (*backend.DataResponse, error) { params := url.Values{} params.Add("api-version", ArgAPIVersion) @@ -151,16 +150,17 @@ func (e *AzureResourceGraphDatasource) executeQuery(ctx context.Context, query * req.URL.Path = path.Join(req.URL.Path, argQueryProviderName) req.URL.RawQuery = params.Encode() - ctx, span := tracer.Start(ctx, "azure resource graph query", trace.WithAttributes( + _, span := tracing.DefaultTracer().Start(ctx, "azure resource graph query", trace.WithAttributes( attribute.String("interpolated_query", query.InterpolatedQuery), attribute.Int64("from", query.TimeRange.From.UnixNano()/int64(time.Millisecond)), attribute.Int64("until", query.TimeRange.To.UnixNano()/int64(time.Millisecond)), attribute.Int64("datasource_id", dsInfo.DatasourceID), attribute.Int64("org_id", dsInfo.OrgID), - )) - defer span.End() + ), + ) - tracer.Inject(ctx, req.Header, span) + defer span.End() + backend.Logger.Debug("azure resource graph query", "traceID", trace.SpanContextFromContext(ctx).TraceID()) res, err := client.Do(req) if err != nil {