metrics

package
v1.7.2 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2026 License: AGPL-3.0 Imports: 4 Imported by: 0

Documentation

Overview

Package metrics provides a decoupled interface for collecting library metrics.

By using the Provider interface, the lifecycle library remains free of external monitoring dependencies (like Prometheus or OpenTelemetry) while still providing hook points for observability.

Consumers can implement their own Provider or use the provided LogProvider for debugging.

Index

Constants

View Source
const (
	LabelSignal     = "signal"
	LabelWorkerType = "worker_type"
	LabelStrategy   = "strategy"
	LabelSupervisor = "supervisor"
	LabelChild      = "child"
	LabelSource     = "source"
	LabelTopic      = "topic"
	LabelImage      = "image"
)

Label keys used for metrics label cardinality enforcement.

View Source
const (
	LabelValueOther    = "other"
	LabelValueUnknown  = "unknown"
	DefaultLabelMaxLen = 64
)

Variables

This section is empty.

Functions

func SetLabelPolicy

func SetLabelPolicy(p *LabelPolicy)

SetLabelPolicy configures label sanitization for all metrics providers.

Passing nil disables label enforcement and uses raw values.

func SetProvider

func SetProvider(p Provider)

SetProvider sets the global metrics provider.

Types

type LabelPolicy

type LabelPolicy struct {
	MaxLen    int
	Strict    bool
	Allowlist map[string]map[string]struct{}
}

LabelPolicy controls how metric labels are sanitized or rejected.

func DefaultLabelPolicy

func DefaultLabelPolicy() *LabelPolicy

DefaultLabelPolicy provides a conservative allowlist for low-cardinality labels.

func GetLabelPolicy

func GetLabelPolicy() *LabelPolicy

GetLabelPolicy returns the active label policy, if any.

type LogProvider

type LogProvider struct{}

LogProvider is a metrics provider that logs increments at Debug level. This is useful for development and debugging without external dependencies.

func (*LogProvider) DecEventWaiting

func (l *LogProvider) DecEventWaiting(source string)

func (*LogProvider) DecGoroutineWaiting

func (l *LogProvider) DecGoroutineWaiting()

func (*LogProvider) IncBackoffTriggered

func (l *LogProvider) IncBackoffTriggered(c string, d time.Duration)

func (*LogProvider) IncChildRestart

func (l *LogProvider) IncChildRestart(s, c string)

func (*LogProvider) IncCircuitBreakerTriggered

func (l *LogProvider) IncCircuitBreakerTriggered(c string)

func (*LogProvider) IncContainerFailed

func (l *LogProvider) IncContainerFailed(image string)

func (*LogProvider) IncContainerStarted

func (l *LogProvider) IncContainerStarted(image string)

func (*LogProvider) IncContainerStopped

func (l *LogProvider) IncContainerStopped(image string)

func (*LogProvider) IncCriticalSectionFinished

func (l *LogProvider) IncCriticalSectionFinished(success bool)

func (*LogProvider) IncCriticalSectionStarted

func (l *LogProvider) IncCriticalSectionStarted()

func (*LogProvider) IncEventEmitted

func (l *LogProvider) IncEventEmitted(source string)

func (*LogProvider) IncEventRouted

func (l *LogProvider) IncEventRouted(topic string)

func (*LogProvider) IncEventWaiting

func (l *LogProvider) IncEventWaiting(source string)

func (*LogProvider) IncForceExitTriggered

func (l *LogProvider) IncForceExitTriggered()

func (*LogProvider) IncGoroutineFinished

func (l *LogProvider) IncGoroutineFinished()

func (*LogProvider) IncGoroutinePanicked

func (l *LogProvider) IncGoroutinePanicked()

func (*LogProvider) IncGoroutineStarted

func (l *LogProvider) IncGoroutineStarted()

func (*LogProvider) IncGoroutineWaiting

func (l *LogProvider) IncGoroutineWaiting()

func (*LogProvider) IncHandlerError

func (l *LogProvider) IncHandlerError(topic string, err error)

func (*LogProvider) IncHandlerExecuted

func (l *LogProvider) IncHandlerExecuted(topic string)

func (*LogProvider) IncHookExecuted

func (l *LogProvider) IncHookExecuted()

func (*LogProvider) IncHookPanicked

func (l *LogProvider) IncHookPanicked()

func (*LogProvider) IncProcessFailed

func (l *LogProvider) IncProcessFailed()

func (*LogProvider) IncProcessStarted

func (l *LogProvider) IncProcessStarted()

func (*LogProvider) IncSignalReceived

func (l *LogProvider) IncSignalReceived(sig string)

func (*LogProvider) IncSupervisorAdd

func (l *LogProvider) IncSupervisorAdd(s string)

func (*LogProvider) IncSupervisorRemove

func (l *LogProvider) IncSupervisorRemove(s string)

func (*LogProvider) IncSupervisorRestart

func (l *LogProvider) IncSupervisorRestart(s, strategy string)

func (*LogProvider) IncTerminalUpgrade

func (l *LogProvider) IncTerminalUpgrade(success bool)

func (*LogProvider) IncWorkerFailed

func (l *LogProvider) IncWorkerFailed(wt string)

func (*LogProvider) IncWorkerStarted

func (l *LogProvider) IncWorkerStarted(wt string)

func (*LogProvider) IncWorkerStopped

func (l *LogProvider) IncWorkerStopped(wt string)

func (*LogProvider) ObserveContainerDuration

func (l *LogProvider) ObserveContainerDuration(image string, d time.Duration)

func (*LogProvider) ObserveCriticalSectionDuration

func (l *LogProvider) ObserveCriticalSectionDuration(d time.Duration)

func (*LogProvider) ObserveEventBlockDuration

func (l *LogProvider) ObserveEventBlockDuration(source string, d time.Duration)

func (*LogProvider) ObserveGoroutineBlockDuration

func (l *LogProvider) ObserveGoroutineBlockDuration(d time.Duration)

func (*LogProvider) ObserveHandlerDuration

func (l *LogProvider) ObserveHandlerDuration(topic string, d time.Duration)

func (*LogProvider) ObserveHookDuration

func (l *LogProvider) ObserveHookDuration(d time.Duration)

func (*LogProvider) ObserveShutdownDuration

func (l *LogProvider) ObserveShutdownDuration(wt string, d time.Duration)

func (*LogProvider) ObserveWorkerDuration

func (l *LogProvider) ObserveWorkerDuration(wt string, d time.Duration)

type NoOpProvider

type NoOpProvider struct{}

NoOpProvider is a metrics provider that does nothing.

func (*NoOpProvider) DecEventWaiting

func (n *NoOpProvider) DecEventWaiting(source string)

func (*NoOpProvider) DecGoroutineWaiting

func (n *NoOpProvider) DecGoroutineWaiting()

func (*NoOpProvider) IncBackoffTriggered

func (n *NoOpProvider) IncBackoffTriggered(c string, d time.Duration)

func (*NoOpProvider) IncChildRestart

func (n *NoOpProvider) IncChildRestart(s, c string)

func (*NoOpProvider) IncCircuitBreakerTriggered

func (n *NoOpProvider) IncCircuitBreakerTriggered(c string)

func (*NoOpProvider) IncContainerFailed

func (n *NoOpProvider) IncContainerFailed(image string)

func (*NoOpProvider) IncContainerStarted

func (n *NoOpProvider) IncContainerStarted(image string)

func (*NoOpProvider) IncContainerStopped

func (n *NoOpProvider) IncContainerStopped(image string)

func (*NoOpProvider) IncCriticalSectionFinished

func (n *NoOpProvider) IncCriticalSectionFinished(success bool)

func (*NoOpProvider) IncCriticalSectionStarted

func (n *NoOpProvider) IncCriticalSectionStarted()

func (*NoOpProvider) IncEventEmitted

func (n *NoOpProvider) IncEventEmitted(source string)

func (*NoOpProvider) IncEventRouted

func (n *NoOpProvider) IncEventRouted(topic string)

func (*NoOpProvider) IncEventWaiting

func (n *NoOpProvider) IncEventWaiting(source string)

func (*NoOpProvider) IncForceExitTriggered

func (n *NoOpProvider) IncForceExitTriggered()

func (*NoOpProvider) IncGoroutineFinished

func (n *NoOpProvider) IncGoroutineFinished()

func (*NoOpProvider) IncGoroutinePanicked

func (n *NoOpProvider) IncGoroutinePanicked()

func (*NoOpProvider) IncGoroutineStarted

func (n *NoOpProvider) IncGoroutineStarted()

func (*NoOpProvider) IncGoroutineWaiting

func (n *NoOpProvider) IncGoroutineWaiting()

func (*NoOpProvider) IncHandlerError

func (n *NoOpProvider) IncHandlerError(topic string, err error)

func (*NoOpProvider) IncHandlerExecuted

func (n *NoOpProvider) IncHandlerExecuted(topic string)

func (*NoOpProvider) IncHookExecuted

func (n *NoOpProvider) IncHookExecuted()

func (*NoOpProvider) IncHookPanicked

func (n *NoOpProvider) IncHookPanicked()

func (*NoOpProvider) IncProcessFailed

func (n *NoOpProvider) IncProcessFailed()

func (*NoOpProvider) IncProcessStarted

func (n *NoOpProvider) IncProcessStarted()

func (*NoOpProvider) IncSignalReceived

func (n *NoOpProvider) IncSignalReceived(sig string)

func (*NoOpProvider) IncSupervisorAdd

func (n *NoOpProvider) IncSupervisorAdd(s string)

func (*NoOpProvider) IncSupervisorRemove

func (n *NoOpProvider) IncSupervisorRemove(s string)

func (*NoOpProvider) IncSupervisorRestart

func (n *NoOpProvider) IncSupervisorRestart(s, est string)

func (*NoOpProvider) IncTerminalUpgrade

func (n *NoOpProvider) IncTerminalUpgrade(success bool)

func (*NoOpProvider) IncWorkerFailed

func (n *NoOpProvider) IncWorkerFailed(wt string)

func (*NoOpProvider) IncWorkerStarted

func (n *NoOpProvider) IncWorkerStarted(wt string)

func (*NoOpProvider) IncWorkerStopped

func (n *NoOpProvider) IncWorkerStopped(wt string)

func (*NoOpProvider) ObserveContainerDuration

func (n *NoOpProvider) ObserveContainerDuration(image string, d time.Duration)

func (*NoOpProvider) ObserveCriticalSectionDuration

func (n *NoOpProvider) ObserveCriticalSectionDuration(d time.Duration)

func (*NoOpProvider) ObserveEventBlockDuration

func (n *NoOpProvider) ObserveEventBlockDuration(source string, d time.Duration)

func (*NoOpProvider) ObserveGoroutineBlockDuration

func (n *NoOpProvider) ObserveGoroutineBlockDuration(d time.Duration)

func (*NoOpProvider) ObserveHandlerDuration

func (n *NoOpProvider) ObserveHandlerDuration(topic string, d time.Duration)

func (*NoOpProvider) ObserveHookDuration

func (n *NoOpProvider) ObserveHookDuration(d time.Duration)

func (*NoOpProvider) ObserveShutdownDuration

func (n *NoOpProvider) ObserveShutdownDuration(wt string, d time.Duration)

func (*NoOpProvider) ObserveWorkerDuration

func (n *NoOpProvider) ObserveWorkerDuration(wt string, d time.Duration)

type Provider

type Provider interface {
	IncSignalReceived(sig string)
	IncProcessStarted()
	IncProcessFailed()
	IncTerminalUpgrade(success bool)
	IncHookExecuted()
	IncHookPanicked()
	ObserveHookDuration(duration time.Duration)
	IncWorkerStarted(workerType string)
	IncWorkerStopped(workerType string)
	IncWorkerFailed(workerType string)
	ObserveWorkerDuration(workerType string, duration time.Duration)
	IncSupervisorRestart(supervisorName, strategy string)
	IncChildRestart(supervisorName, childName string)
	IncSupervisorAdd(supervisorName string)
	IncSupervisorRemove(supervisorName string)
	IncBackoffTriggered(childName string, delay time.Duration)
	ObserveShutdownDuration(workerType string, duration time.Duration)
	IncForceExitTriggered()
	IncCircuitBreakerTriggered(childName string)

	// Critical Sections
	IncCriticalSectionStarted()
	IncCriticalSectionFinished(success bool)
	ObserveCriticalSectionDuration(duration time.Duration)

	// Container metrics
	IncContainerStarted(image string)
	IncContainerStopped(image string)
	IncContainerFailed(image string)
	ObserveContainerDuration(image string, duration time.Duration)

	// Goroutine metrics (v1.5+)
	IncGoroutineStarted()
	IncGoroutineFinished()
	IncGoroutinePanicked()

	ObserveGoroutineBlockDuration(duration time.Duration)

	// Waiting/Backpressure Gauge
	IncGoroutineWaiting()
	DecGoroutineWaiting()

	// Control Plane Metrics (v1.5+)
	IncEventEmitted(source string)
	IncEventRouted(topic string)
	IncHandlerExecuted(topic string)
	IncHandlerError(topic string, err error)
	ObserveHandlerDuration(topic string, duration time.Duration)

	// Event Backpressure Metrics (v1.5+)
	ObserveEventBlockDuration(source string, duration time.Duration)
	IncEventWaiting(source string)
	DecEventWaiting(source string)
}

Provider defines the interface for collecting lifecycle metrics. Implementations can bridge these calls to Prometheus, OpenTelemetry, etc.

func GetProvider

func GetProvider() Provider

GetProvider returns the current global metrics provider.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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