Documentation
¶
Overview ¶
Package telemetry provides OpenTelemetry initialization and management
Index ¶
- Constants
- func MergeResourceAttributes(base *resource.Resource, attrs map[string]string) (*resource.Resource, error)
- func RegisterMetricsEndpoint(e *echo.Echo, provider *Provider, config *Config) error
- func Shutdown(provider *Provider) error
- func ShutdownWithTimeout(provider *Provider, timeout time.Duration) error
- func ValidateExporterConfig(config *Config) error
- func WithShutdownTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc)
- type ApplicationMetricsFilter
- type Config
- type DefaultMetricsFilter
- func (f *DefaultMetricsFilter) AddExcludePattern(pattern string) error
- func (f *DefaultMetricsFilter) AddExcludePrefix(prefix string)
- func (f *DefaultMetricsFilter) AddIncludePattern(pattern string) error
- func (f *DefaultMetricsFilter) AddIncludePrefix(prefix string)
- func (f *DefaultMetricsFilter) FilterRegistry(registry *prometheus.Registry) prometheus.Gatherer
- func (f *DefaultMetricsFilter) ShouldIncludeMetric(name string, _ map[string]string) bool
- type Exporter
- type ExporterFactory
- type HealthMetrics
- type MetricsFilter
- type MetricsHandler
- type Provider
- func (p *Provider) GetMeter(name string, opts ...metric.MeterOption) metric.Meter
- func (p *Provider) GetResource() *resource.Resource
- func (p *Provider) GetTracer(name string, opts ...trace.TracerOption) trace.Tracer
- func (p *Provider) GetTracerProvider() trace.TracerProvider
- func (p *Provider) IsEnabled() bool
- func (p *Provider) Shutdown(ctx context.Context) error
- type SystemMetricsFilter
Constants ¶
const DefaultShutdownTimeout = 10 * time.Second
DefaultShutdownTimeout is the default timeout for telemetry shutdown
Variables ¶
This section is empty.
Functions ¶
func MergeResourceAttributes ¶
func MergeResourceAttributes(base *resource.Resource, attrs map[string]string) (*resource.Resource, error)
MergeResourceAttributes merges additional attributes into an existing resource
func RegisterMetricsEndpoint ¶
RegisterMetricsEndpoint registers the metrics endpoint with Echo router
func ShutdownWithTimeout ¶
ShutdownWithTimeout gracefully shuts down the telemetry provider with a custom timeout
func ValidateExporterConfig ¶
ValidateExporterConfig validates the exporter configuration
func WithShutdownTimeout ¶
func WithShutdownTimeout(parent context.Context, timeout time.Duration) (context.Context, context.CancelFunc)
WithShutdownTimeout creates a context with a timeout for shutdown operations
Types ¶
type ApplicationMetricsFilter ¶
type ApplicationMetricsFilter struct {
*DefaultMetricsFilter
}
ApplicationMetricsFilter filters to show only application-specific metrics
func NewApplicationMetricsFilter ¶
func NewApplicationMetricsFilter() *ApplicationMetricsFilter
NewApplicationMetricsFilter creates a filter for application metrics only
type Config ¶
type Config struct {
Enabled bool
ServiceName string
ServiceVersion string
OTLPEndpoint string
OTLPHeaders map[string]string
OTLPInsecure bool
PrometheusEnabled bool
PrometheusEndpoint string
JaegerEnabled bool
JaegerEndpoint string
TracingEnabled bool
TracingSampleRate float64
MetricsEnabled bool
MetricsInterval int
ResourceAttributes map[string]string
}
Config holds the telemetry configuration
func LoadConfigFromViper ¶
LoadConfigFromViper loads telemetry configuration from Viper
type DefaultMetricsFilter ¶
type DefaultMetricsFilter struct {
IncludePatterns []*regexp.Regexp
ExcludePatterns []*regexp.Regexp
IncludePrefixes []string
ExcludePrefixes []string
}
DefaultMetricsFilter implements basic filtering based on patterns
func NewDefaultMetricsFilter ¶
func NewDefaultMetricsFilter() *DefaultMetricsFilter
NewDefaultMetricsFilter creates a new default metrics filter
func (*DefaultMetricsFilter) AddExcludePattern ¶
func (f *DefaultMetricsFilter) AddExcludePattern(pattern string) error
AddExcludePattern adds a regex pattern for metrics to exclude
func (*DefaultMetricsFilter) AddExcludePrefix ¶
func (f *DefaultMetricsFilter) AddExcludePrefix(prefix string)
AddExcludePrefix adds a prefix for metrics to exclude
func (*DefaultMetricsFilter) AddIncludePattern ¶
func (f *DefaultMetricsFilter) AddIncludePattern(pattern string) error
AddIncludePattern adds a regex pattern for metrics to include
func (*DefaultMetricsFilter) AddIncludePrefix ¶
func (f *DefaultMetricsFilter) AddIncludePrefix(prefix string)
AddIncludePrefix adds a prefix for metrics to include
func (*DefaultMetricsFilter) FilterRegistry ¶
func (f *DefaultMetricsFilter) FilterRegistry(registry *prometheus.Registry) prometheus.Gatherer
FilterRegistry returns a filtered gatherer
func (*DefaultMetricsFilter) ShouldIncludeMetric ¶
func (f *DefaultMetricsFilter) ShouldIncludeMetric(name string, _ map[string]string) bool
ShouldIncludeMetric determines if a metric should be included
type ExporterFactory ¶
type ExporterFactory struct {
// contains filtered or unexported fields
}
ExporterFactory creates exporters based on configuration
func NewExporterFactory ¶
func NewExporterFactory(config *Config) *ExporterFactory
NewExporterFactory creates a new exporter factory
func (*ExporterFactory) CreateMetricExporters ¶
CreateMetricExporters creates metric exporters based on configuration
func (*ExporterFactory) CreateTraceExporters ¶
func (f *ExporterFactory) CreateTraceExporters(ctx context.Context) ([]sdktrace.SpanExporter, error)
CreateTraceExporters creates trace exporters based on configuration
type HealthMetrics ¶
type HealthMetrics struct {
// contains filtered or unexported fields
}
HealthMetrics provides health-related metrics
func NewHealthMetrics ¶
func NewHealthMetrics(meter metric.Meter, serviceName, serviceVersion string) (*HealthMetrics, error)
NewHealthMetrics creates health-related metrics
func (*HealthMetrics) RecordHealthCheck ¶
func (hm *HealthMetrics) RecordHealthCheck(ctx context.Context, status string)
RecordHealthCheck records a health check metric
type MetricsFilter ¶
type MetricsFilter interface {
FilterRegistry(registry *prometheus.Registry) prometheus.Gatherer
ShouldIncludeMetric(name string, labels map[string]string) bool
}
MetricsFilter defines interface for filtering metrics
func CreateFilterFromConfig ¶
func CreateFilterFromConfig(_ *Config) MetricsFilter
CreateFilterFromConfig creates a metrics filter based on configuration
type MetricsHandler ¶
type MetricsHandler struct {
// contains filtered or unexported fields
}
MetricsHandler manages Prometheus metrics endpoint
func NewMetricsHandler ¶
func NewMetricsHandler(provider *Provider, config *Config) (*MetricsHandler, error)
NewMetricsHandler creates a new metrics handler
func (*MetricsHandler) EchoHandler ¶
func (h *MetricsHandler) EchoHandler() echo.HandlerFunc
EchoHandler returns an Echo handler for Prometheus metrics
func (*MetricsHandler) Handler ¶
func (h *MetricsHandler) Handler() http.Handler
Handler returns the HTTP handler for Prometheus metrics
type Provider ¶
type Provider struct {
// contains filtered or unexported fields
}
Provider manages OpenTelemetry providers and their lifecycle
func Initialize ¶
Initialize sets up OpenTelemetry with the provided configuration
func InitializeWithConfig ¶
InitializeWithConfig sets up OpenTelemetry with a custom configuration
func MustInitialize ¶
MustInitialize initializes telemetry and panics on error
func NewProvider ¶
NewProvider creates a new telemetry provider with the given configuration
func (*Provider) GetResource ¶
GetResource returns the telemetry resource
func (*Provider) GetTracerProvider ¶
func (p *Provider) GetTracerProvider() trace.TracerProvider
GetTracerProvider returns the underlying trace provider
type SystemMetricsFilter ¶
type SystemMetricsFilter struct {
*DefaultMetricsFilter
}
SystemMetricsFilter filters to show only system-level metrics
func NewSystemMetricsFilter ¶
func NewSystemMetricsFilter() *SystemMetricsFilter
NewSystemMetricsFilter creates a filter for system metrics only