metrics

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2018 License: Apache-2.0 Imports: 11 Imported by: 47

README

Metrics component

We use Prometheus monitoring system and time series database for collecting and store metrics.

Package metrics is based on Prometheus golang client. It contains metrics collectors of entire project. Component starts http server on http://0.0.0.0:8080/metrics by default(can be changed in configuration)

If you want to add metrics in your component code, you need to describe it as global collector variable in this package. Each global collector must be registered in constructor NewMetrics()

When you creating collector, you need to fill Ops structure. You should to read this guide before choosing Opts.Name

Collector types
Labels

Labels is used to create query with filters. For example, when we count total number of sent packets, then we can make query with filter by packet type in report. Generally, You don't need to use Opts.ConstLabels. This field is used for labels, which not be changed in runtime(e. g. for app version).

You should create a metricVec using specific method for particular collector type.

// NetworkPacketSentTotal is total number of sent packets metric
var NetworkPacketSentTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
	Name:      "packet_sent_total",
	Help:      "Total number of sent packets",
	Namespace: insolarNamespace,
	Subsystem: "network",
}, []string{"packetType"})
Using collectors in your code

Collectors are thread safe, you can manipulate with it from any goroutine.

// labeled counter usage example
metrics.NetworkPacketSentTotal.WithLabelValues(packet.Type.String()).Inc()

Documentation

Overview

Package metrics is a gateway for Prometheus monitoring system, it based on Prometheus golang client. Package contains metrics collectors descriptions of entire project. Component starts http server on http://0.0.0.0:8080/metrics by default(can be changed in configuration)

Example:

	// starts metrics server
	cfg := configuration.NewMetrics()
	m, _ := NewMetrics(cfg)
    m.Start(nil)

    // manipulate with network metrics
	NetworkMessageSentTotal.Inc()
	NetworkPacketSentTotal.WithLabelValues("ping").Add(55)

Index

Constants

This section is empty.

Variables

View Source
var NetworkFutures = prometheus.NewGaugeVec(prometheus.GaugeOpts{
	Name:      "futures",
	Help:      "Current network transport futures count",
	Namespace: insolarNamespace,
	Subsystem: "network",
}, []string{"packetType"})

NetworkFutures is current network transport futures count metric

View Source
var NetworkMessageSentTotal = prometheus.NewCounter(prometheus.CounterOpts{
	Name:      "message_sent_total",
	Help:      "Total number of sent messages",
	Namespace: insolarNamespace,
	Subsystem: "network",
})

NetworkMessageSentTotal is total number of sent messages metric

View Source
var NetworkPacketReceivedTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
	Name:      "packet_received_total",
	Help:      "Total number of received packets",
	Namespace: insolarNamespace,
	Subsystem: "network",
}, []string{"packetType"})

NetworkPacketReceivedTotal is is total number of received packets metric

View Source
var NetworkPacketSentTotal = prometheus.NewCounterVec(prometheus.CounterOpts{
	Name:      "packet_sent_total",
	Help:      "Total number of sent packets",
	Namespace: insolarNamespace,
	Subsystem: "network",
}, []string{"packetType"})

NetworkPacketSentTotal is total number of sent packets metric

Functions

This section is empty.

Types

type Metrics

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

Metrics is a component which serve metrics data to Prometheus.

func NewMetrics

func NewMetrics(cfg configuration.Metrics) (*Metrics, error)

NewMetrics creates new Metrics component.

func (*Metrics) Start

func (m *Metrics) Start(components core.Components) error

Start is implementation of core.Component interface.

func (*Metrics) Stop

func (m *Metrics) Stop() error

Stop is implementation of core.Component interface.

Jump to

Keyboard shortcuts

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