Skip to content

Commit f68d27a

Browse files
committed
Add tracing component-base utilities
1 parent 9cf6dec commit f68d27a

File tree

3 files changed

+84
-0
lines changed

3 files changed

+84
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
2+
3+
go_library(
4+
name = "go_default_library",
5+
srcs = ["utils.go"],
6+
importmap = "k8s.io/kubernetes/vendor/k8s.io/component-base/traces",
7+
importpath = "k8s.io/component-base/traces",
8+
visibility = ["//visibility:public"],
9+
deps = [
10+
"//vendor/go.opentelemetry.io/otel/api/global:go_default_library",
11+
"//vendor/go.opentelemetry.io/otel/exporters/otlp:go_default_library",
12+
"//vendor/go.opentelemetry.io/otel/sdk/resource:go_default_library",
13+
"//vendor/go.opentelemetry.io/otel/sdk/trace:go_default_library",
14+
"//vendor/go.opentelemetry.io/otel/semconv:go_default_library",
15+
"//vendor/k8s.io/klog/v2:go_default_library",
16+
],
17+
)
18+
19+
filegroup(
20+
name = "package-srcs",
21+
srcs = glob(["**"]),
22+
tags = ["automanaged"],
23+
visibility = ["//visibility:private"],
24+
)
25+
26+
filegroup(
27+
name = "all-srcs",
28+
srcs = [":package-srcs"],
29+
tags = ["automanaged"],
30+
visibility = ["//visibility:public"],
31+
)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# See the OWNERS docs at https://go.k8s.io/owners
2+
3+
approvers:
4+
- sig-instrumentation-approvers
5+
reviewers:
6+
- sig-instrumentation-reviewers
7+
labels:
8+
- sig/instrumentation
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
Copyright 2020 The Kubernetes Authors.
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
http://www.apache.org/licenses/LICENSE-2.0
7+
Unless required by applicable law or agreed to in writing, software
8+
distributed under the License is distributed on an "AS IS" BASIS,
9+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package traces
15+
16+
import (
17+
"go.opentelemetry.io/otel/api/global"
18+
"go.opentelemetry.io/otel/exporters/otlp"
19+
"go.opentelemetry.io/otel/sdk/resource"
20+
sdktrace "go.opentelemetry.io/otel/sdk/trace"
21+
"go.opentelemetry.io/otel/semconv"
22+
23+
"k8s.io/klog/v2"
24+
)
25+
26+
// InitTraces initializes tracing in the component.
27+
// Components must use the OTLP exporter, but can pass additional exporter
28+
// options if needed
29+
func InitTraces(service string, opts ...otlp.ExporterOption) {
30+
opts = append(opts, otlp.WithInsecure())
31+
exporter, err := otlp.NewExporter(opts...)
32+
if err != nil {
33+
klog.Fatalf("Failed to create OTLP exporter: %v", err)
34+
}
35+
36+
// Use ParentBased(NeverSample()) to preserve the sampling decision of the
37+
// parent, but not start additional spans.
38+
tp := sdktrace.NewTracerProvider(
39+
sdktrace.WithConfig(sdktrace.Config{
40+
DefaultSampler: sdktrace.ParentBased(sdktrace.NeverSample())},
41+
),
42+
sdktrace.WithBatcher(exporter),
43+
sdktrace.WithResource(resource.New(semconv.ServiceNameKey.String(service))))
44+
global.SetTracerProvider(tp)
45+
}

0 commit comments

Comments
 (0)