Add resource attributes to go_ metrics

This commit is contained in:
2025-01-12 20:19:59 -05:00
parent 15a597de1d
commit 06bf7ebca7
3 changed files with 34 additions and 12 deletions

View File

@ -8,6 +8,7 @@ import (
"time"
opentelemetry "go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
"go.opentelemetry.io/otel/exporters/prometheus"
@ -139,7 +140,7 @@ func newPropagator() propagation.TextMapPropagator {
func (s *settings) newTracerProvider(ctx context.Context) (traceProvider *traceSDK.TracerProvider, err error) {
traceOpts := []traceSDK.TracerProviderOption{
traceSDK.WithResource(newResource()),
traceSDK.WithResource(newResource(ctx)),
}
host, set := os.LookupEnv("OTEL_EXPORTER_OTLP_ENDPOINT")
@ -164,8 +165,15 @@ func (s *settings) newTracerProvider(ctx context.Context) (traceProvider *traceS
return
}
func newResource() *resource.Resource {
return resource.NewWithAttributes(semconv.SchemaURL)
func newResource(ctx context.Context) *resource.Resource {
cfg := config.MustFromCtx(ctx)
attributes := []attribute.KeyValue{
semconv.ServiceName(cfg.Name),
semconv.ServiceVersion(cfg.Version),
semconv.K8SPodName(os.Getenv("HOSTNAME")),
}
return resource.NewWithAttributes(semconv.SchemaURL, attributes...)
}
// Configures meter provider
@ -173,7 +181,9 @@ func newResource() *resource.Resource {
// Conditionally provides an OTLP metrics exporter
func (s *settings) newMeterProvider(ctx context.Context) (*metric.MeterProvider, error) {
// OTEL Prometheus Exporter
exporter, err := prometheus.New()
exporter, err := prometheus.New(
prometheus.WithResourceAsConstantLabels(attribute.NewDenyKeysFilter()),
)
if err != nil {
return nil, err
}
@ -202,6 +212,7 @@ func (s *settings) newMeterProvider(ctx context.Context) (*metric.MeterProvider,
var meterProvider *metric.MeterProvider
if otlpExporter != nil {
metricOptions = append(metricOptions,
metric.WithResource(newResource(ctx)),
metric.WithReader(exporter),
metric.WithReader(
metric.NewPeriodicReader(
@ -209,12 +220,11 @@ func (s *settings) newMeterProvider(ctx context.Context) (*metric.MeterProvider,
metric.WithInterval(s.MetricExportInterval),
),
),
metric.WithResource(newResource()),
)
} else {
metricOptions = append(metricOptions,
metric.WithResource(newResource(ctx)),
metric.WithReader(exporter),
metric.WithResource(newResource()),
)
}