Added OpenTelemetry config object
This commit is contained in:
+10
-2
@@ -15,6 +15,9 @@ import (
|
|||||||
"github.com/robindittmar/dttmr-api/internal/telemetry"
|
"github.com/robindittmar/dttmr-api/internal/telemetry"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
serviceName := "dttmr-api"
|
serviceName := "dttmr-api"
|
||||||
serviceVersion := "0.1.0"
|
serviceVersion := "0.1.0"
|
||||||
@@ -32,13 +35,18 @@ func run(serviceName string, serviceVersion string) error {
|
|||||||
Level: slog.LevelInfo,
|
Level: slog.LevelInfo,
|
||||||
})
|
})
|
||||||
traceHandler := &telemetry.TraceHandler{Handler: baseHandler}
|
traceHandler := &telemetry.TraceHandler{Handler: baseHandler}
|
||||||
|
|
||||||
logger := slog.New(traceHandler)
|
logger := slog.New(traceHandler)
|
||||||
slog.SetDefault(logger)
|
slog.SetDefault(logger)
|
||||||
|
|
||||||
slog.Info("Starting service", slog.String("service", serviceName), slog.String("version", serviceVersion))
|
slog.Info("Starting service", slog.String("service", serviceName), slog.String("version", serviceVersion))
|
||||||
|
|
||||||
shutdownTelemetry, err := telemetry.Init(context.Background(), serviceName, serviceVersion)
|
telCfg := telemetry.Config{
|
||||||
|
ServiceName: serviceName,
|
||||||
|
ServiceVersion: serviceVersion,
|
||||||
|
Endpoint: "localhost:4317",
|
||||||
|
Environment: "development",
|
||||||
|
}
|
||||||
|
shutdownTelemetry, err := telemetry.Init(context.Background(), telCfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
slog.Error("Failed to initialize telemetry", err)
|
slog.Error("Failed to initialize telemetry", err)
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -14,11 +14,18 @@ import (
|
|||||||
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
|
semconv "go.opentelemetry.io/otel/semconv/v1.24.0"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Init(ctx context.Context, serviceName string, version string) (func(context.Context) error, error) {
|
type Config struct {
|
||||||
|
ServiceName string
|
||||||
|
ServiceVersion string
|
||||||
|
Endpoint string
|
||||||
|
Environment string
|
||||||
|
}
|
||||||
|
|
||||||
|
func Init(ctx context.Context, cfg Config) (func(context.Context) error, error) {
|
||||||
res, err := resource.New(ctx,
|
res, err := resource.New(ctx,
|
||||||
resource.WithAttributes(
|
resource.WithAttributes(
|
||||||
semconv.ServiceName(serviceName),
|
semconv.ServiceName(cfg.ServiceName),
|
||||||
semconv.ServiceVersion(version),
|
semconv.ServiceVersion(cfg.ServiceVersion),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -34,7 +41,7 @@ func Init(ctx context.Context, serviceName string, version string) (func(context
|
|||||||
|
|
||||||
traceExporter, err := otlptracegrpc.New(ctx,
|
traceExporter, err := otlptracegrpc.New(ctx,
|
||||||
otlptracegrpc.WithInsecure(), // TODO: for local development
|
otlptracegrpc.WithInsecure(), // TODO: for local development
|
||||||
otlptracegrpc.WithEndpoint("localhost:4317"),
|
otlptracegrpc.WithEndpoint(cfg.Endpoint),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -47,7 +54,7 @@ func Init(ctx context.Context, serviceName string, version string) (func(context
|
|||||||
|
|
||||||
metricExporter, err := otlpmetricgrpc.New(ctx,
|
metricExporter, err := otlpmetricgrpc.New(ctx,
|
||||||
otlpmetricgrpc.WithInsecure(),
|
otlpmetricgrpc.WithInsecure(),
|
||||||
otlpmetricgrpc.WithEndpoint("localhost:4317"),
|
otlpmetricgrpc.WithEndpoint(cfg.Endpoint),
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
Reference in New Issue
Block a user