Categorygithub.com/xmlking/toolkit/telemetry
modulepackage
0.5.2
Repository: https://github.com/xmlking/toolkit.git
Documentation: pkg.go.dev

# README

Telemetry

OpenTelemetry initialization helpers

Usage

Optional environment variables

export OTEL_RESOURCE_ATTRIBUTES=key=value,rk5=7
export OTEL_SERVICE_NAME=play-service

# enable metrics and tracking
export CONFY_FEATURES_METRICS_ENABLED=true
export CONFY_FEATURES_TRACING_ENABLED=true
# enable metrics target: `prometheus` and tracing target: `stdout`
export CONFY_FEATURES_METRICS_TARGET=prometheus
export CONFY_FEATURES_TRACING_TARGET=stdout
# when using with target: `gcp`
export GOOGLE_CLOUD_PROJECT=xyz
export GOOGLE_APPLICATION_CREDENTIALS=../../../Apps/micro-starter-kit.json
import (
	"go.opentelemetry.io/otel/api/global"
	"go.opentelemetry.io/otel/instrumentation/grpctrace"

    "github.com/xmlking/toolkit/telemetry/metrics"
    "github.com/xmlking/toolkit/telemetry/tracing"
)

func main() {
    cfg := config.GetConfig()
    
    if cfg.Features.Tracing.Enabled {
    closeFn := tracing.InitTracing(ctx, cfg.Features.Tracing)
    defer closeFn()
    }

    if cfg.Features.Metrics.Enabled {
    closeFn := metrics.InitMetrics(ctx, cfg.Features.Metrics)
    defer closeFn()
    }

	lis, err := net.Listen("tcp", port)
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}

	s := grpc.NewServer(
		grpc.UnaryInterceptor(grpctrace.UnaryServerInterceptor(global.Tracer(""))),
		grpc.StreamInterceptor(grpctrace.StreamServerInterceptor(global.Tracer(""))),
	)

	api.RegisterHelloServiceServer(s, &server{})
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}

Examples

Integrated GCP observability

gRPC tracking

Metrics:

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Constants

No description provided by the author
No description provided by the author
No description provided by the author

# Structs

MetricsConfig struct.
TracingConfig struct.