metrics

package
v2.2.6 Latest Latest
Warning

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

Go to latest
Published: Dec 27, 2025 License: BSD-3-Clause Imports: 12 Imported by: 1

Documentation

Overview

Package metrics exposes Prometheus collectors for flow processing.

Index

Constants

View Source
const (
	// NAMESPACE is the Prometheus namespace prefix for goflow2 metrics.
	NAMESPACE = "goflow2"
)

Variables

View Source
var (
	// MetricReceivedDroppedPackets counts packets dropped before processing.
	MetricReceivedDroppedPackets = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_dropped_packets_total",
			Help:      "Packets dropped before processing.",
			Namespace: NAMESPACE,
		},
		[]string{"remote_ip", "local_ip", "local_port"},
	)
	// MetricReceivedDroppedBytes counts bytes dropped before processing.
	MetricReceivedDroppedBytes = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_dropped_bytes_total",
			Help:      "Bytes dropped before processing.",
			Namespace: NAMESPACE,
		},
		[]string{"remote_ip", "local_ip", "local_port"},
	)
	// MetricTrafficBytes counts bytes received by the application.
	MetricTrafficBytes = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_traffic_bytes_total",
			Help:      "Bytes received by the application.",
			Namespace: NAMESPACE,
		},
		[]string{"remote_ip", "local_ip", "local_port", "type"},
	)
	// MetricTrafficPackets counts packets received by the application.
	MetricTrafficPackets = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_traffic_packets_total",
			Help:      "Packets received by the application.",
			Namespace: NAMESPACE},
		[]string{"remote_ip", "local_ip", "local_port", "type"},
	)
	// MetricPacketSizeSum summarizes packet sizes.
	MetricPacketSizeSum = prometheus.NewSummaryVec(
		prometheus.SummaryOpts{
			Name:      "flow_traffic_size_bytes",
			Help:      "Summary of packet size.",
			Namespace: NAMESPACE, Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
		},
		[]string{"remote_ip", "local_ip", "local_port", "type"},
	)
	// DecoderErrors counts decoder errors by router and name.
	DecoderErrors = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_decoder_error_total",
			Help:      "NetFlow/sFlow processed errors.",
			Namespace: NAMESPACE},
		[]string{"router", "name"},
	)
	// DecoderTime summarizes decoding time.
	DecoderTime = prometheus.NewSummaryVec(
		prometheus.SummaryOpts{
			Name:      "flow_decoding_time_seconds",
			Help:      "Decoding time summary.",
			Namespace: NAMESPACE, Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
		},
		[]string{"name"},
	)
	// NetFlowStats counts processed NetFlow packets by router and version.
	NetFlowStats = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_nf_total",
			Help:      "NetFlows processed.",
			Namespace: NAMESPACE},
		[]string{"router", "version"},
	)
	// NetFlowErrors counts NetFlow processing errors.
	NetFlowErrors = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_nf_errors_total",
			Help:      "NetFlows processed errors.",
			Namespace: NAMESPACE},
		[]string{"router", "error"},
	)
	// NetFlowSetRecordsStatsSum counts flow set records by type.
	NetFlowSetRecordsStatsSum = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_nf_flowset_records_total",
			Help:      "NetFlows FlowSets sum of records.",
			Namespace: NAMESPACE},
		[]string{"router", "version", "type"},
	)
	// NetFlowSetStatsSum counts flow sets by type.
	NetFlowSetStatsSum = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_nf_flowset_total",
			Help:      "NetFlows FlowSets sum.",
			Namespace: NAMESPACE},
		[]string{"router", "version", "type"},
	)
	// NetFlowTimeStatsSum summarizes flow-to-processing latency.
	NetFlowTimeStatsSum = prometheus.NewSummaryVec(
		prometheus.SummaryOpts{
			Name:      "flow_process_nf_delay_seconds",
			Help:      "NetFlows time difference between time of flow and processing.",
			Namespace: NAMESPACE, Objectives: map[float64]float64{0.5: 0.05, 0.9: 0.01, 0.99: 0.001},
		},
		[]string{"router", "version"},
	)
	// NetFlowTemplatesStats counts templates observed by router and version.
	NetFlowTemplatesStats = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_nf_templates_total",
			Help:      "NetFlows Template count.",
			Namespace: NAMESPACE},
		[]string{"router", "version", "obs_domain_id", "template_id", "type"},
	)
	// SFlowStats counts processed sFlow packets.
	SFlowStats = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_sf_total",
			Help:      "sFlows processed.",
			Namespace: NAMESPACE},
		[]string{"router", "agent", "version"},
	)
	// SFlowSampleStatsSum counts sFlow samples by type.
	SFlowSampleStatsSum = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_sf_samples_total",
			Help:      "SFlows samples sum.",
			Namespace: NAMESPACE},
		[]string{"router", "agent", "version", "type"},
	)
	// SFlowSampleRecordsStatsSum counts sFlow sample records by type.
	SFlowSampleRecordsStatsSum = prometheus.NewCounterVec(
		prometheus.CounterOpts{
			Name:      "flow_process_sf_samples_records_total",
			Help:      "SFlows samples sum of records.",
			Namespace: NAMESPACE},
		[]string{"router", "agent", "version", "type"},
	)
)

Functions

func NewDefaultPromTemplateSystem

func NewDefaultPromTemplateSystem(key string) netflow.NetFlowTemplateSystem

NewDefaultPromTemplateSystem creates a PromTemplateSystem with default storage.

func NewPromTemplateSystem

func NewPromTemplateSystem(key string, wrapped netflow.NetFlowTemplateSystem) netflow.NetFlowTemplateSystem

NewPromTemplateSystem wraps a template system and records template metrics.

func PromDecoderWrapper

func PromDecoderWrapper(wrapped utils.DecoderFunc, name string) utils.DecoderFunc

PromDecoderWrapper wraps a decoder to emit Prometheus metrics.

func WrapPromProducer

func WrapPromProducer(wrapped producer.ProducerInterface) producer.ProducerInterface

WrapPromProducer wraps a producer with metrics reporting.

Types

type PromProducerWrapper

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

PromProducerWrapper wraps a producer to emit Prometheus metrics.

func (*PromProducerWrapper) Close

func (p *PromProducerWrapper) Close()

Close forwards Close to the wrapped producer.

func (*PromProducerWrapper) Commit

func (p *PromProducerWrapper) Commit(flowMessageSet []producer.ProducerMessage)

Commit forwards Commit to the wrapped producer.

func (*PromProducerWrapper) Produce

func (p *PromProducerWrapper) Produce(msg interface{}, args *producer.ProduceArgs) ([]producer.ProducerMessage, error)

Produce forwards to the wrapped producer and updates metrics.

type PromTemplateSystem

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

PromTemplateSystem wraps a template system to record metrics.

func (*PromTemplateSystem) AddTemplate

func (s *PromTemplateSystem) AddTemplate(version uint16, obsDomainId uint32, templateId uint16, template interface{}) error

func (*PromTemplateSystem) GetTemplate

func (s *PromTemplateSystem) GetTemplate(version uint16, obsDomainId uint32, templateId uint16) (interface{}, error)

GetTemplate retrieves a template from the wrapped system.

func (*PromTemplateSystem) GetTemplates added in v2.2.4

GetTemplates returns all templates from the wrapped system.

func (*PromTemplateSystem) RemoveTemplate added in v2.1.0

func (s *PromTemplateSystem) RemoveTemplate(version uint16, obsDomainId uint32, templateId uint16) (interface{}, error)

RemoveTemplate removes a template and updates metrics.

type ReceiverMetric added in v2.1.1

type ReceiverMetric struct{}

ReceiverMetric records packet drop metrics.

func NewReceiverMetric added in v2.1.1

func NewReceiverMetric() *ReceiverMetric

NewReceiverMetric creates a ReceiverMetric instance.

func (*ReceiverMetric) Dropped added in v2.1.1

func (r *ReceiverMetric) Dropped(pkt utils.Message)

Dropped records a dropped packet metric.

Jump to

Keyboard shortcuts

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