telemetry

package module
v0.0.0-...-8e06035 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 8, 2024 License: BSD-3-Clause Imports: 24 Imported by: 2

README

telemetry

Latest release Build status Go Report Card Documentation

Package telemetry provides a simple and flexible way to setup OTEL to collect and expose metrics and telemetry data.

go get github.com/go-pogo/telemetry
import "github.com/go-pogo/telemetry"

Documentation

Additional detailed documentation is available at pkg.go.dev

Created with

License

Copyright © 2023-2024 Roel Schut. All rights reserved.

This project is governed by a BSD-style license that can be found in the LICENSE file.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AttributesFromMap

func AttributesFromMap(m map[string]string) []attribute.KeyValue

func StdoutSpanExporter

func StdoutSpanExporter() trace.SpanExporter

Types

type Builder

type Builder struct {
	Config
	MeterProvider  *MeterProviderBuilder
	TracerProvider *TracerProviderBuilder
}

func NewBuilder

func NewBuilder(c Config) *Builder

func NewDevelopmentBuilder

func NewDevelopmentBuilder(c Config) *Builder

func (*Builder) Build

func (b *Builder) Build() (*Telemetry, error)

func (*Builder) Global

func (b *Builder) Global() *Builder

func (*Builder) WithDefaultExporter

func (b *Builder) WithDefaultExporter() *Builder

type Config

type Config struct {
	Meter  MeterProviderConfig
	Tracer TracerProviderConfig

	// https://opentelemetry.io/docs/languages/sdk-configuration/general/
	ServiceName        string            `env:"OTEL_SERVICE_NAME"`
	ResourceAttributes map[string]string `env:"OTEL_RESOURCE_ATTRIBUTES"`

	ExporterOTLP struct {
		Endpoint          string `env:"OTEL_EXPORTER_OTLP_ENDPOINT"`
		Headers           string `env:"OTEL_EXPORTER_OTLP_HEADERS"`
		Protocol          string `env:"OTEL_EXPORTER_OTLP_PROTOCOL" default:"grpc"`
		Timeout           uint64 `env:"OTEL_EXPORTER_OTLP_TIMEOUT" default:"10000"` // 10s
		Certificate       string `env:"OTEL_EXPORTER_OTLP_CERTIFICATE"`
		ClientKey         string `env:"OTEL_EXPORTER_OTLP_CLIENT_KEY"`
		ClientCertificate string `env:"OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE"`
	}
}

func (Config) Environ

func (c Config) Environ() (env.Map, error)

type MeterProvider

type MeterProvider = metric.MeterProvider

type MeterProviderBuilder

type MeterProviderBuilder struct {
	*MeterProviderConfig

	DisableRuntimeMetrics bool
	SetGlobal             bool
	// contains filtered or unexported fields
}

func NewMeterProviderBuilder

func NewMeterProviderBuilder(conf *MeterProviderConfig) *MeterProviderBuilder

func (*MeterProviderBuilder) Build

func (met *MeterProviderBuilder) Build(opts ...metric.Option) (*metric.MeterProvider, error)

func (*MeterProviderBuilder) With

func (*MeterProviderBuilder) WithGrpcExporter

func (met *MeterProviderBuilder) WithGrpcExporter(opts ...otlpmetricgrpc.Option) *MeterProviderBuilder

func (*MeterProviderBuilder) WithPrometheusExporter

func (met *MeterProviderBuilder) WithPrometheusExporter(reg prometheus.Registerer, views ...metric.View) *MeterProviderBuilder

func (*MeterProviderBuilder) WithReader

func (met *MeterProviderBuilder) WithReader(r metric.Reader, views ...metric.View) *MeterProviderBuilder

type MeterProviderConfig

type MeterProviderConfig struct {
	Enabled bool `env:"OTEL_METRIC_ENABLED" default:"true"`

	// ExportInterval is the time interval (in milliseconds) between the start
	// of two export attempts.
	ExportInterval int `env:"OTEL_METRIC_EXPORT_INTERVAL" default:"60000"`
	// ExportTimeout is the maximum allowed time (in milliseconds) to export
	// data.
	ExportTimeout int `env:"OTEL_METRIC_EXPORT_TIMEOUT" default:"30000"`
}

MeterProviderConfig holds the configuration for the MeterProviderBuilder. These values may be set using any external source, such as environment variables, config files, etc.

func (MeterProviderConfig) Environ

func (c MeterProviderConfig) Environ() (env.Map, error)

type Provider

type Provider interface {
	MeterProvider() MeterProvider
	TracerProvider() TracerProvider
}

type Telemetry

type Telemetry struct {
	// contains filtered or unexported fields
}

Telemetry is a wrapper around a MeterProvider and TracerProvider.

func (*Telemetry) ForceFlush

func (t *Telemetry) ForceFlush(ctx context.Context) error

ForceFlush flushes all pending telemetry and/or immediately exports all spans that have not yet been exported for all the registered span processors, depending on whether a MeterProvider and/or TracerProvider is configured. See MeterProvider.ForceFlush and TracerProvider.ForceFlush for more details.

func (*Telemetry) MeterProvider

func (t *Telemetry) MeterProvider() MeterProvider

MeterProvider returns the configured MeterProvider or a noop MeterProvider when none is configured.

func (*Telemetry) Shutdown

func (t *Telemetry) Shutdown(ctx context.Context) error

Shutdown shuts down the MeterProvider and/or TracerProvider depending on whether they are configured. See MeterProvider.Shutdown and TracerProvider.Shutdown for more details.

func (*Telemetry) TracerProvider

func (t *Telemetry) TracerProvider() TracerProvider

TracerProvider returns the configured TracerProvider or a noop TracerProvider when none is configured.

type TracerProvider

type TracerProvider = trace.TracerProvider

type TracerProviderBuilder

type TracerProviderBuilder struct {
	*TracerProviderConfig

	SetGlobal     bool
	Attributes    []attribute.KeyValue
	Sampler       trace.Sampler
	SpanExporters []trace.SpanExporter
	// contains filtered or unexported fields
}

func NewTracerProviderBuilder

func NewTracerProviderBuilder(conf *TracerProviderConfig) *TracerProviderBuilder

func (*TracerProviderBuilder) Build

func (*TracerProviderBuilder) With

func (*TracerProviderBuilder) WithAttributes

func (tra *TracerProviderBuilder) WithAttributes(attrs ...attribute.KeyValue) *TracerProviderBuilder

func (*TracerProviderBuilder) WithBuildInfo

func (tra *TracerProviderBuilder) WithBuildInfo() *TracerProviderBuilder

func (*TracerProviderBuilder) WithGrpcExporter

func (tra *TracerProviderBuilder) WithGrpcExporter(opts ...otlptracegrpc.Option) *TracerProviderBuilder

func (*TracerProviderBuilder) WithSampler

func (tra *TracerProviderBuilder) WithSampler(sample trace.Sampler) *TracerProviderBuilder

func (*TracerProviderBuilder) WithSpanExporters

func (tra *TracerProviderBuilder) WithSpanExporters(exporters ...trace.SpanExporter) *TracerProviderBuilder

type TracerProviderConfig

type TracerProviderConfig struct {
	Enabled bool `env:"OTEL_TRACES_ENABLED" default:"true"`

	Sampler    string `env:"OTEL_TRACES_SAMPLER,noprefix" default:"parentbased_traceidratio"`
	SamplerArg string `env:"OTEL_TRACES_SAMPLER_ARG,noprefix" default:"0.5"`
}

func (TracerProviderConfig) Environ

func (c TracerProviderConfig) Environ() (env.Map, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL