Documentation
¶
Overview ¶
This package allows you to init and enable tracing in your app
Index ¶
- func InitMetricProvider(ctx context.Context, serviceName string, options ...metric.ProviderOptionFunc) (func() error, error)
- func InitTraceProvider(ctx context.Context, serviceName string, options ...trace.ProviderOptionFunc) (func() error, error)
- func Start(ctx context.Context, conf *Config) ([]func(ctx context.Context) error, error)
- func StartMetric(ctx context.Context, conf *Config) (func(ctx context.Context) error, error)
- func StartTrace(ctx context.Context, conf *Config) (func(ctx context.Context) error, error)
- type Config
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InitMetricProvider ¶
func InitMetricProvider( ctx context.Context, serviceName string, options ...metric.ProviderOptionFunc, ) (func() error, error)
Example (Collector) ¶
Initialize a otel trace provider with a collector
package main import ( "context" "fmt" "log" "go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc" "github.com/induzo/gocom/monitoring/otelinit" "github.com/induzo/gocom/monitoring/otelinit/metric" ) func main() { ctx := context.Background() shutdown, err := otelinit.InitMetricProvider( ctx, "simple-gohttp", metric.WithGRPCMetricExporter( ctx, otlpmetricgrpc.WithEndpoint(fmt.Sprintf("%s:%d", "otlp.nr-data.net", 4317)), otlpmetricgrpc.WithHeaders(map[string]string{"api-key": "123"}), otlpmetricgrpc.WithCompressor("gzip"), ), ) if err != nil { log.Println("failed to initialize opentelemetry") return } defer func() { if errS := shutdown(); errS != nil { log.Println("failed to shutdown") } }() fmt.Println(err) }
Output: <nil>
Example (DiscardMetrics) ¶
Initialize a otel metric provider and discard traces useful for dev
package main import ( "context" "fmt" "io" "log" "github.com/induzo/gocom/monitoring/otelinit" "github.com/induzo/gocom/monitoring/otelinit/metric" ) func main() { ctx := context.Background() shutdown, err := otelinit.InitMetricProvider( ctx, "simple-gohttp", metric.WithWriterMetricExporter(io.Discard), ) if err != nil { log.Println("failed to initialize opentelemetry") return } defer func() { if errS := shutdown(); errS != nil { log.Println("failed to shutdown") } }() fmt.Println(err) }
Output: <nil>
func InitTraceProvider ¶
func InitTraceProvider( ctx context.Context, serviceName string, options ...trace.ProviderOptionFunc, ) (func() error, error)
Example (Collector) ¶
Initialize a otel trace provider with a collector
package main import ( "context" "fmt" "log" "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc" "github.com/induzo/gocom/monitoring/otelinit" "github.com/induzo/gocom/monitoring/otelinit/trace" ) func main() { ctx := context.Background() shutdown, err := otelinit.InitTraceProvider( ctx, "simple-gohttp", trace.WithGRPCTraceExporter( ctx, otlptracegrpc.WithEndpoint(fmt.Sprintf("%s:%d", "otlp.nr-data.net", 4317)), otlptracegrpc.WithHeaders(map[string]string{"api-key": "123"}), otlptracegrpc.WithCompressor("gzip"), ), ) if err != nil { log.Println("failed to initialize opentelemetry") return } defer func() { if errS := shutdown(); errS != nil { log.Println("failed to shutdown") } }() fmt.Println(err) }
Output: <nil>
Example (DiscardTraces) ¶
Initialize a otel trace provider and discard traces useful for dev
package main import ( "context" "fmt" "io" "log" "github.com/induzo/gocom/monitoring/otelinit" "github.com/induzo/gocom/monitoring/otelinit/trace" ) func main() { ctx := context.Background() shutdown, err := otelinit.InitTraceProvider( ctx, "simple-gohttp", trace.WithWriterTraceExporter(io.Discard), ) if err != nil { log.Println("failed to initialize opentelemetry") return } defer func() { if errS := shutdown(); errS != nil { log.Println("failed to shutdown") } }() fmt.Println(err) }
Output: <nil>
func Start ¶
Example (Collector) ¶
Init and start an otel trace and metric provider with a collector
package main import ( "context" "fmt" "log" "github.com/induzo/gocom/monitoring/otelinit" ) func main() { ctx := context.Background() shutdowns, err := otelinit.Start(ctx, &otelinit.Config{ AppName: "simple-gohttp", Host: "otlp.nr-data.net", Port: 4317, APIKey: "123", IsSecure: true, EnableMetrics: true, }) if err != nil { log.Println("failed to start opentelemetry") return } for _, s := range shutdowns { shutdown := s defer func() { if errS := shutdown(ctx); errS != nil { log.Println("failed to shutdown") } }() } fmt.Println(err) }
Output: <nil>
Example (Collector_trace_only) ¶
Init and start an otel trace provider with a collector only
package main import ( "context" "fmt" "log" "github.com/induzo/gocom/monitoring/otelinit" ) func main() { ctx := context.Background() shutdowns, err := otelinit.Start(ctx, &otelinit.Config{ AppName: "simple-gohttp", Host: "otlp.nr-data.net", Port: 4317, APIKey: "123", IsSecure: true, EnableMetrics: false, }) if err != nil { log.Println("failed to start opentelemetry") return } for _, s := range shutdowns { shutdown := s defer func() { if errS := shutdown(ctx); errS != nil { log.Println("failed to shutdown") } }() } fmt.Println(err) }
Output: <nil>
func StartMetric ¶
Example (Collector) ¶
Init and start an otel metric provider with a collector
package main import ( "context" "fmt" "log" "github.com/induzo/gocom/monitoring/otelinit" ) func main() { ctx := context.Background() shutdown, err := otelinit.StartMetric(ctx, &otelinit.Config{ AppName: "simple-gohttp", Host: "otlp.nr-data.net", Port: 4317, APIKey: "123", IsSecure: true, }) if err != nil { log.Println("failed to start opentelemetry") return } defer func() { if errS := shutdown(ctx); errS != nil { log.Println("failed to shutdown trace") } }() fmt.Println(err) }
Output: <nil>
func StartTrace ¶
Example (Collector) ¶
Init and start an otel trace provider with a collector
package main import ( "context" "fmt" "log" "github.com/induzo/gocom/monitoring/otelinit" ) func main() { ctx := context.Background() shutdown, err := otelinit.StartTrace(ctx, &otelinit.Config{ AppName: "simple-gohttp", Host: "otlp.nr-data.net", Port: 4317, APIKey: "123", IsSecure: true, }) if err != nil { log.Println("failed to start opentelemetry") return } defer func() { if errS := shutdown(ctx); errS != nil { log.Println("failed to shutdown trace") } }() fmt.Println(err) }
Output: <nil>
Types ¶
Click to show internal directories.
Click to hide internal directories.