monitoring

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 24, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package monitoring exposes Prometheus metrics over HTTP.

MetricsServer serves a /metrics endpoint from a private registry populated by the MetricsProvider implementations passed to Init. The package also ships ready-made collectors: ErrorMonitoring (classifies AppError into business/system/panic counters) and RegexpMonitoring (counts text matches).

Index

Constants

View Source
const (
	ErrCodePrometheusRegisterGoMetrics      = "MON-001"
	ErrCodePrometheusRegisterProcessMetrics = "MON-002"
	ErrCodePrometheusHttpServer             = "MON-003"
	ErrCodePrometheusInvalidPort            = "MON-004"
	ErrCodePrometheusRegisterAppMetrics     = "MON-005"
)
View Source
const (
	BusinessErrorCounter = "business_error_counter"
	SystemErrorCounter   = "system_error_counter"
	PanicCounter         = "panic_counter"
)
View Source
const (
	RegexpMatchCounter = "regexp_match_counter"
)

Variables

View Source
var (
	ErrPrometheusRegisterGoMetrics = func(cause error) error {
		return jet.NewAppErrBuilder(ErrCodePrometheusRegisterGoMetrics, "").Wrap(cause).Err()
	}
	ErrPrometheusRegisterProcessMetrics = func(cause error) error {
		return jet.NewAppErrBuilder(ErrCodePrometheusRegisterProcessMetrics, "").Wrap(cause).Err()
	}
	ErrPrometheusHttpServer = func(cause error) error {
		return jet.NewAppErrBuilder(ErrCodePrometheusHttpServer, "").Wrap(cause).Err()
	}
	ErrPrometheusInvalidPort = func(port string) error {
		return jet.NewAppErrBuilder(ErrCodePrometheusInvalidPort, "invalid port").F(jet.KV{"port": port}).Err()
	}
	ErrPrometheusRegisterAppMetrics = func(cause error) error {
		return jet.NewAppErrBuilder(ErrCodePrometheusRegisterAppMetrics, "").Wrap(cause).Err()
	}
)

Functions

This section is empty.

Types

type Config

type Config struct {
	// Enabled indicates if monitoring enabled
	Enabled bool
	// Port indicates on which port to listen
	Port string
	// UrlPath (default /metrics)
	UrlPath string
	// GoMetrics if true, then built-in metrics are exposed
	GoMetrics bool `mapstructure:"go_metrics"`
}

type ErrorMonitoring

type ErrorMonitoring interface {
	// BusinessErrorInc increases business error counter
	BusinessErrorInc(errCode string)
	// SystemErrorInc increases system error counter
	SystemErrorInc(errCode string)
	// PanicInc increases panic counter
	PanicInc()
	// Error analyze passed error and incs proper metric
	Error(err error)
	// GetCollector returns metric collector
	GetCollector() MetricsCollector
}

ErrorMonitoring manages error metrics

func NewErrorMonitoring

func NewErrorMonitoring() ErrorMonitoring

type MetricsCollection

type MetricsCollection []prometheus.Collector

type MetricsCollector

type MetricsCollector func() MetricsCollection

type MetricsProvider

type MetricsProvider interface {
	GetCollector() MetricsCollector
}

type MetricsServer

type MetricsServer interface {
	// Init initializes server with given opts
	Init(config *Config, MetricProviders ...MetricsProvider) error
	// Listen starts async listening
	Listen()
	// Close closes connection
	Close()
}

MetricsServer exposes metrics via HTTP server

func NewMetricsServer

func NewMetricsServer(logger jet.CLoggerFunc) MetricsServer

type Regexp

type Regexp struct {
	Code   string // Code name in monitoring
	Regexp string // Regexp regular expression to search text match
}

type RegexpMonitoring

type RegexpMonitoring interface {
	AddRegexps(regexps ...*Regexp)
	Text(text string)
	// GetCollector returns metric collector
	GetCollector() MetricsCollector
}

RegexpMonitoring text metrics

func NewRegexpMonitoring

func NewRegexpMonitoring(cfg *Config, source string) RegexpMonitoring

Jump to

Keyboard shortcuts

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