Skip to content

Commit 4113129

Browse files
committed
wire up otel tracing to track2 Azure SDK
1 parent 4543ef5 commit 4113129

File tree

5 files changed

+36
-5
lines changed

5 files changed

+36
-5
lines changed

azure/defaults.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package azure
1818

1919
import (
20+
"context"
2021
"fmt"
2122
"net/http"
2223
"regexp"
@@ -26,6 +27,8 @@ import (
2627
"github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
2728
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
2829
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5"
30+
"github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel"
31+
"sigs.k8s.io/cluster-api-provider-azure/pkg/ot"
2932
"sigs.k8s.io/cluster-api-provider-azure/util/tele"
3033
"sigs.k8s.io/cluster-api-provider-azure/version"
3134
)
@@ -378,6 +381,12 @@ func ARMClientOptions(azureEnvironment string, extraPolicies ...policy.Policy) (
378381
opts.PerCallPolicies = append(opts.PerCallPolicies, extraPolicies...)
379382
opts.Retry.MaxRetries = -1 // Less than zero means one try and no retries.
380383

384+
otelTP, err := ot.OTLPTracerProvider(context.TODO())
385+
if err != nil {
386+
return nil, err
387+
}
388+
opts.TracingProvider = azotel.NewTracingProvider(otelTP, nil)
389+
381390
return opts, nil
382391
}
383392

azure/scope/identity.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ import (
2323
"github.com/Azure/azure-sdk-for-go/sdk/azcore"
2424
"github.com/Azure/azure-sdk-for-go/sdk/azcore/cloud"
2525
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
26+
"github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel"
2627
"github.com/pkg/errors"
2728
corev1 "k8s.io/api/core/v1"
2829
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2930
"k8s.io/apimachinery/pkg/types"
3031
infrav1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
32+
"sigs.k8s.io/cluster-api-provider-azure/pkg/ot"
3133
"sigs.k8s.io/cluster-api-provider-azure/util/tele"
3234
"sigs.k8s.io/controller-runtime/pkg/client"
3335
)
@@ -81,6 +83,12 @@ func (p *AzureCredentialsProvider) GetTokenCredential(ctx context.Context, resou
8183
var authErr error
8284
var cred azcore.TokenCredential
8385

86+
otelTP, err := ot.OTLPTracerProvider(ctx)
87+
if err != nil {
88+
return nil, err
89+
}
90+
tracingProvider := azotel.NewTracingProvider(otelTP, nil)
91+
8492
switch p.Identity.Spec.Type {
8593
case infrav1.WorkloadIdentity:
8694
azwiCredOptions, err := NewWorkloadIdentityCredentialOptions().
@@ -90,6 +98,7 @@ func (p *AzureCredentialsProvider) GetTokenCredential(ctx context.Context, resou
9098
if err != nil {
9199
return nil, errors.Wrapf(err, "failed to setup azwi options for identity %s", p.Identity.Name)
92100
}
101+
azwiCredOptions.ClientOptions.TracingProvider = tracingProvider
93102
cred, authErr = NewWorkloadIdentityCredential(azwiCredOptions)
94103

95104
case infrav1.ManualServicePrincipal:
@@ -102,6 +111,7 @@ func (p *AzureCredentialsProvider) GetTokenCredential(ctx context.Context, resou
102111
}
103112
options := azidentity.ClientSecretCredentialOptions{
104113
ClientOptions: azcore.ClientOptions{
114+
TracingProvider: tracingProvider,
105115
Cloud: cloud.Configuration{
106116
ActiveDirectoryAuthorityHost: activeDirectoryEndpoint,
107117
Services: map[cloud.ServiceName]cloud.ServiceConfiguration{
@@ -124,10 +134,17 @@ func (p *AzureCredentialsProvider) GetTokenCredential(ctx context.Context, resou
124134
if err != nil {
125135
return nil, errors.Wrap(err, "failed to parse certificate data")
126136
}
127-
cred, authErr = azidentity.NewClientCertificateCredential(p.GetTenantID(), p.Identity.Spec.ClientID, certs, key, nil)
137+
cred, authErr = azidentity.NewClientCertificateCredential(p.GetTenantID(), p.Identity.Spec.ClientID, certs, key, &azidentity.ClientCertificateCredentialOptions{
138+
ClientOptions: azcore.ClientOptions{
139+
TracingProvider: tracingProvider,
140+
},
141+
})
128142

129143
case infrav1.UserAssignedMSI:
130144
options := azidentity.ManagedIdentityCredentialOptions{
145+
ClientOptions: azcore.ClientOptions{
146+
TracingProvider: tracingProvider,
147+
},
131148
ID: azidentity.ClientID(p.Identity.Spec.ClientID),
132149
}
133150
cred, authErr = azidentity.NewManagedIdentityCredential(&options)

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ require (
1717
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/privatedns/armprivatedns v1.2.0
1818
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resourcehealth/armresourcehealth v1.3.0
1919
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0
20+
github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel v0.4.0
2021
github.com/Azure/azure-service-operator/v2 v2.8.0
2122
github.com/Azure/go-autorest/autorest v0.11.29
2223
github.com/Azure/go-autorest/autorest/azure/auth v0.5.13

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0
7777
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc=
7878
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription v1.2.0 h1:UrGzkHueDwAWDdjQxC+QaXHd4tVCkISYE9j7fSSXF8k=
7979
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription v1.2.0/go.mod h1:qskvSQeW+cxEE2bcKYyKimB1/KiQ9xpJ99bcHY0BX6c=
80+
github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel v0.4.0 h1:RTTsXUJWn0jumeX62Mb153wYXykqnrzYBYDeHp0kiuk=
81+
github.com/Azure/azure-sdk-for-go/sdk/tracing/azotel v0.4.0/go.mod h1:k4MMjrPHIEK+umaMGk1GNLgjEybJZ9mHSRDZ+sDFv3Y=
8082
github.com/Azure/azure-service-operator/v2 v2.8.0 h1:BcyB8LvRmtgVIIUaXwWIJz5eHvknyno0qq5LkDuvM/s=
8183
github.com/Azure/azure-service-operator/v2 v2.8.0/go.mod h1:ezbJS56PcORFFqLV8XZmM9xZ12m6aGAkg353fQhWD/8=
8284
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
@@ -501,6 +503,8 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0 h1:9l89oX4
501503
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.52.0/go.mod h1:XLZfZboOJWHNKUv7eH0inh0E9VV6eWDFB/9yJyTLPp0=
502504
go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo=
503505
go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4=
506+
go.opentelemetry.io/otel/exporters/jaeger v1.16.0 h1:YhxxmXZ011C0aDZKoNw+juVWAmEfv/0W2XBOv9aHTaA=
507+
go.opentelemetry.io/otel/exporters/jaeger v1.16.0/go.mod h1:grYbBo/5afWlPpdPZYhyn78Bk04hnvxn2+hvxQhKIQM=
504508
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY=
505509
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI=
506510
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.28.0 h1:R3X6ZXmNPRR8ul6i3WgFURCHzaXjHdm0karRG/+dj3s=

pkg/ot/traces.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import (
3434

3535
// RegisterTracing enables code tracing via OpenTelemetry.
3636
func RegisterTracing(ctx context.Context, log logr.Logger) error {
37-
tp, err := otlpTracerProvider(ctx, "opentelemetry-collector:4317")
37+
tp, err := OTLPTracerProvider(ctx)
3838
if err != nil {
3939
return err
4040
}
@@ -53,8 +53,8 @@ func RegisterTracing(ctx context.Context, log logr.Logger) error {
5353
return nil
5454
}
5555

56-
// otlpTracerProvider initializes an OTLP exporter and configures the corresponding tracer provider.
57-
func otlpTracerProvider(ctx context.Context, url string) (*sdktrace.TracerProvider, error) {
56+
// OTLPTracerProvider initializes an OTLP exporter and configures the corresponding tracer provider.
57+
func OTLPTracerProvider(ctx context.Context) (*sdktrace.TracerProvider, error) {
5858
res, err := resource.New(ctx,
5959
resource.WithAttributes(
6060
semconv.ServiceNameKey.String("capz"),
@@ -69,7 +69,7 @@ func otlpTracerProvider(ctx context.Context, url string) (*sdktrace.TracerProvid
6969

7070
traceExporter, err := otlptracegrpc.New(ctx,
7171
otlptracegrpc.WithInsecure(),
72-
otlptracegrpc.WithEndpoint(url),
72+
otlptracegrpc.WithEndpoint("opentelemetry-collector:4317"),
7373
)
7474
if err != nil {
7575
return nil, errors.Wrap(err, "failed to create otlp trace exporter")

0 commit comments

Comments
 (0)