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 {
|
type ConfigData struct {
|
||||||
ServiceName string `json:"service_name"`
|
ServiceName string `json:"service_name"`
|
||||||
ServiceVersion string `json:"service_version"`
|
ServiceVersion string `json:"service_version"`
|
||||||
|
DeployEnv string `json:"deploy_env"`
|
||||||
Layers *LayersOpts `json:"layers"`
|
Layers *LayersOpts `json:"layers"`
|
||||||
Exporters Exporters `json:"exporters"`
|
Exporters Exporters `json:"exporters"`
|
||||||
SkipPaths []string `json:"skip_paths"`
|
SkipPaths []string `json:"skip_paths"`
|
||||||
|
|||||||
@@ -56,7 +56,8 @@ func RegisterWithConfig(ctx context.Context, l logging.Logger, cfg *config.Confi
|
|||||||
return shutdownFn, err
|
return shutdownFn, err
|
||||||
}
|
}
|
||||||
exporter.SetGlobalExporterInstances(me, te)
|
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 {
|
if err == nil {
|
||||||
state.SetGlobalConfig(state.NewConfig(cfg))
|
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,
|
func RegisterGlobalInstance(ctx context.Context, l logging.Logger,
|
||||||
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||||
metricReportingPeriod int, traceSampleRate float64, serviceName string, serviceVersion string,
|
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) {
|
) (func(), error) {
|
||||||
shutdownFn := func() {}
|
shutdownFn := func() {}
|
||||||
prop := propagation.NewCompositeTextMapPropagator(
|
prop := propagation.NewCompositeTextMapPropagator(
|
||||||
@@ -103,7 +114,7 @@ func RegisterGlobalInstance(ctx context.Context, l logging.Logger,
|
|||||||
version = lcore.KrakendVersion
|
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 {
|
if err != nil {
|
||||||
return shutdownFn, err
|
return shutdownFn, err
|
||||||
}
|
}
|
||||||
|
|||||||
+16
-3
@@ -8,6 +8,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel"
|
"go.opentelemetry.io/otel"
|
||||||
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/metric"
|
"go.opentelemetry.io/otel/metric"
|
||||||
noopmetric "go.opentelemetry.io/otel/metric/noop"
|
noopmetric "go.opentelemetry.io/otel/metric/noop"
|
||||||
"go.opentelemetry.io/otel/propagation"
|
"go.opentelemetry.io/otel/propagation"
|
||||||
@@ -64,10 +65,22 @@ type OTELState struct {
|
|||||||
func NewWithVersion(serviceName string, cfg *OTELStateConfig, version string,
|
func NewWithVersion(serviceName string, cfg *OTELStateConfig, version string,
|
||||||
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
me map[string]exporter.MetricReader, te map[string]exporter.SpanExporter,
|
||||||
) (*OTELState, error) {
|
) (*OTELState, error) {
|
||||||
res := sdkresource.NewWithAttributes(
|
return NewWithVersionAndEnv(serviceName, cfg, version, "", me, te)
|
||||||
semconv.SchemaURL,
|
}
|
||||||
|
|
||||||
|
// 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.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
|
reportingPeriod := time.Duration(cfg.MetricReportingPeriod) * time.Second
|
||||||
metricOpts := make([]sdkmetric.Option, 0, len(cfg.MetricProviders)+2)
|
metricOpts := make([]sdkmetric.Option, 0, len(cfg.MetricProviders)+2)
|
||||||
|
|||||||
Reference in New Issue
Block a user