Skip to content

Commit ab244b2

Browse files
authored
🔧 #241 Support overriding OTEL resource attributes (#243)
1 parent a54eb57 commit ab244b2

File tree

1 file changed

+27
-9
lines changed

1 file changed

+27
-9
lines changed

pkg/telemetry/telemetry.go

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ package telemetry
22

33
import (
44
"context"
5+
"os"
56

7+
"github.com/google/uuid"
68
"go.opentelemetry.io/contrib/exporters/autoexport"
79
"go.opentelemetry.io/contrib/propagators/b3"
810
"go.opentelemetry.io/otel"
11+
"go.opentelemetry.io/otel/attribute"
912
"go.opentelemetry.io/otel/propagation"
1013
sdkmetric "go.opentelemetry.io/otel/sdk/metric"
1114
"go.opentelemetry.io/otel/sdk/resource"
@@ -14,28 +17,32 @@ import (
1417
"go.uber.org/zap"
1518
)
1619

17-
var Resource = resource.NewWithAttributes(
18-
semconv.SchemaURL,
19-
semconv.ServiceName("glide"),
20-
)
21-
2220
type Config struct {
23-
LogConfig *LogConfig `yaml:"logging" validate:"required"`
21+
LogConfig *LogConfig `yaml:"logging" validate:"required"`
22+
Resource map[string]string `yaml:"resource"`
2423
}
2524

2625
type Telemetry struct {
2726
Config *Config
2827
Logger *zap.Logger
29-
// TODO: add OTEL meter, tracer
3028
}
3129

3230
func (t Telemetry) L() *zap.Logger {
3331
return t.Logger
3432
}
3533

3634
func DefaultConfig() *Config {
35+
instance := os.Getenv("POD_NAME")
36+
if instance == "" {
37+
instance = uuid.New().String()
38+
}
39+
3740
return &Config{
3841
LogConfig: DefaultLogConfig(),
42+
Resource: map[string]string{
43+
string(semconv.ServiceNameKey): "glide",
44+
string(semconv.ServiceInstanceIDKey): instance,
45+
},
3946
}
4047
}
4148

@@ -45,13 +52,24 @@ func NewTelemetry(cfg *Config) (*Telemetry, error) {
4552
return nil, err
4653
}
4754

55+
resourceAttr := make([]attribute.KeyValue, 0, len(cfg.Resource))
56+
57+
for k, v := range cfg.Resource {
58+
resourceAttr = append(resourceAttr, attribute.String(k, v))
59+
}
60+
61+
resource := resource.NewWithAttributes(
62+
semconv.SchemaURL,
63+
resourceAttr...,
64+
)
65+
4866
spanExporter, err := autoexport.NewSpanExporter(context.Background())
4967
if err != nil {
5068
return nil, err
5169
}
5270

5371
tp := sdktrace.NewTracerProvider(
54-
sdktrace.WithResource(Resource),
72+
sdktrace.WithResource(resource),
5573
sdktrace.WithSampler(sdktrace.AlwaysSample()),
5674
sdktrace.WithBatcher(spanExporter),
5775
)
@@ -68,7 +86,7 @@ func NewTelemetry(cfg *Config) (*Telemetry, error) {
6886
sdkmetric.WithReader(
6987
metricsReader,
7088
),
71-
sdkmetric.WithResource(Resource),
89+
sdkmetric.WithResource(resource),
7290
)
7391

7492
otel.SetMeterProvider(provider)

0 commit comments

Comments
 (0)