metrics

package module
v4.3.1 Latest Latest
Warning

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

Go to latest
Published: May 2, 2024 License: MIT Imports: 14 Imported by: 2

README

Documentation

Index

Constants

View Source
const (
	// PluginName declares plugin name.
	PluginName = "metrics"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Collector

type Collector struct {
	// Namespace of the metric.
	Namespace string `json:"namespace,omitempty"`
	// Subsystem of the metric.
	Subsystem string `json:"subsystem,omitempty"`
	// Collector type (histogram, gauge, counter, summary).
	Type CollectorType `json:"type"`
	// Help of collector.
	Help string `json:"help"`
	// Labels for vectorized metrics.
	Labels []string `json:"labels"`
	// Buckets for histogram metric.
	Buckets []float64 `json:"buckets"`
	// Objectives for the summary opts
	Objectives map[float64]float64 `json:"objectives,omitempty"`
}

Collector describes a single application specific metric.

type CollectorType

type CollectorType string

CollectorType represents prometheus collector types

const (
	// Histogram type
	Histogram CollectorType = "histogram"
	// Gauge type
	Gauge CollectorType = "gauge"
	// Counter type
	Counter CollectorType = "counter"
	// Summary type
	Summary CollectorType = "summary"
)

type Config

type Config struct {
	// Address to listen
	Address string `mapstructure:"address"`
	// Collect defines application-specific metrics.
	Collect map[string]Collector `mapstructure:"collect"`
}

Config configures metrics service.

func (*Config) InitDefaults

func (c *Config) InitDefaults()

type Configurer

type Configurer interface {
	// UnmarshalKey takes a single key and unmarshal it into a Struct.
	UnmarshalKey(name string, out any) error
	// Has checks if config section exists.
	Has(name string) bool
}

type Logger

type Logger interface {
	NamedLogger(name string) *zap.Logger
}

type Metric

type Metric struct {
	// Collector name.
	Name string `msgpack:"alias:name"`
	// Collector value.
	Value float64 `msgpack:"alias:value"`
	// Labels associated with metric. Only for vector metrics. Must be provided in a form of label values.
	Labels []string `msgpack:"alias:labels"`
}

Metric represents a single metric produced by the application.

type NamedCollector

type NamedCollector struct {
	// Name of the collector
	Name string `json:"name"`
	// Collector structure
	Collector `json:"collector"`
}

type Plugin

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

Plugin to manage application metrics using Prometheus.

func (*Plugin) Collects

func (p *Plugin) Collects() []*dep.In

Collects used to collect all plugins that implement metrics.StatProvider interface (and Named)

func (*Plugin) Init

func (p *Plugin) Init(cfg Configurer, log Logger) error

Init service.

func (*Plugin) Name

func (p *Plugin) Name() string

Name returns user-friendly plugin name

func (*Plugin) RPC

func (p *Plugin) RPC() any

RPC interface satisfaction

func (*Plugin) Register

func (p *Plugin) Register(c prometheus.Collector) error

Register new prometheus collector.

func (*Plugin) Serve

func (p *Plugin) Serve() chan error

Serve prometheus metrics service.

func (*Plugin) Stop

func (p *Plugin) Stop(context.Context) error

Stop prometheus metrics service.

func (*Plugin) Weight added in v4.0.12

func (p *Plugin) Weight() uint

type StatProvider

type StatProvider interface {
	MetricsCollector() []prometheus.Collector
}

StatProvider used to collect all plugins which might report to the prometheus

Jump to

Keyboard shortcuts

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