Add resource attributes to go_ metrics
This commit is contained in:
@ -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()),
|
||||
)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user