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 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 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
Click to show internal directories.
Click to hide internal directories.