mirror of
https://github.com/hanzoai/krakend-otel.git
synced 2026-09-30 22:49:38 +00:00
add deployment env as attribute at the service level
This commit is contained in:
@@ -11,6 +11,7 @@ import (
|
||||
type ConfigData struct {
|
||||
ServiceName string `json:"service_name"`
|
||||
ServiceVersion string `json:"service_version"`
|
||||
DeployEnv string `json:"deploy_env"`
|
||||
Layers *LayersOpts `json:"layers"`
|
||||
Exporters Exporters `json:"exporters"`
|
||||
SkipPaths []string `json:"skip_paths"`
|
||||
|
||||
@@ -56,7 +56,8 @@ func RegisterWithConfig(ctx context.Context, l logging.Logger, cfg *config.Confi
|
||||
return shutdownFn, err
|
||||
}
|
||||
exporter.SetGlobalExporterInstances(me, te)
|
||||
shutdown, err := RegisterGlobalInstance(ctx, l, me, te, *cfg.MetricReportingPeriod, *cfg.TraceSampleRate, cfg.ServiceName, cfg.ServiceVersion)
|
||||
shutdown, err := RegisterGlobalInstanceWithEnv(ctx, l, me, te, *cfg.MetricReportingPeriod,
|
||||
*cfg.TraceSampleRate, cfg.ServiceName, cfg.ServiceVersion, cfg.DeployEnv)
|
||||
if err == nil {
|
||||
state.SetGlobalConfig(state.NewConfig(cfg))
|
||||
}
|
||||
@@ -67,6 +68,16 @@ func RegisterWithConfig(ctx context.Context, l logging.Logger, cfg *config.Confi
|
||||
func RegisterGlobalInstance(ctx context.Context, l logging.Logger,
|
||||
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||
metricReportingPeriod int, traceSampleRate float64, serviceName string, serviceVersion string,
|
||||
) (func(), error) {
|
||||
return RegisterGlobalInstanceWithEnv(ctx, l, me, te, metricReportingPeriod,
|
||||
traceSampleRate, serviceName, serviceVersion, "")
|
||||
}
|
||||
|
||||
// RegisterGlobalInstanceWithEnv creates the instance that will be used to report metrics and traces
|
||||
func RegisterGlobalInstanceWithEnv(ctx context.Context, l logging.Logger,
|
||||
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||
metricReportingPeriod int, traceSampleRate float64, serviceName string, serviceVersion string,
|
||||
env string,
|
||||
) (func(), error) {
|
||||
shutdownFn := func() {}
|
||||
prop := propagation.NewCompositeTextMapPropagator(
|
||||
@@ -103,7 +114,7 @@ func RegisterGlobalInstance(ctx context.Context, l logging.Logger,
|
||||
version = lcore.KrakendVersion
|
||||
}
|
||||
|
||||
s, err := state.NewWithVersion(serviceName, globalStateCfg, version, me, te)
|
||||
s, err := state.NewWithVersionAndEnv(serviceName, globalStateCfg, version, env, me, te)
|
||||
if err != nil {
|
||||
return shutdownFn, err
|
||||
}
|
||||
|
||||
+16
-3
@@ -8,6 +8,7 @@ import (
|
||||
"time"
|
||||
|
||||
"go.opentelemetry.io/otel"
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
"go.opentelemetry.io/otel/metric"
|
||||
noopmetric "go.opentelemetry.io/otel/metric/noop"
|
||||
"go.opentelemetry.io/otel/propagation"
|
||||
@@ -64,10 +65,22 @@ type OTELState struct {
|
||||
func NewWithVersion(serviceName string, cfg *OTELStateConfig, version string,
|
||||
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||
) (*OTELState, error) {
|
||||
res := sdkresource.NewWithAttributes(
|
||||
semconv.SchemaURL,
|
||||
return NewWithVersionAndEnv(serviceName, cfg, version, "", me, te)
|
||||
}
|
||||
|
||||
// NewWithVersionAndEnv create a new OTELState with a version for
|
||||
// the KrakenD service, with the provided metrics and traces exporters
|
||||
func NewWithVersionAndEnv(serviceName string, cfg *OTELStateConfig, version string,
|
||||
env string, me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||
) (*OTELState, error) {
|
||||
sdkAttrs := []attribute.KeyValue{
|
||||
semconv.ServiceName(serviceName),
|
||||
semconv.ServiceVersion(version))
|
||||
semconv.ServiceVersion(version),
|
||||
}
|
||||
if env != "" {
|
||||
sdkAttrs = append(sdkAttrs, semconv.DeploymentEnvironment(env))
|
||||
}
|
||||
res := sdkresource.NewWithAttributes(semconv.SchemaURL, sdkAttrs...)
|
||||
|
||||
reportingPeriod := time.Duration(cfg.MetricReportingPeriod) * time.Second
|
||||
metricOpts := make([]sdkmetric.Option, 0, len(cfg.MetricProviders)+2)
|
||||
|
||||
Reference in New Issue
Block a user