Documentation
¶
Overview ¶
Package metrics exposes Prometheus collectors for flow processing.
Index ¶
- Constants
- Variables
- func NewDefaultPromTemplateSystem(key string) netflow.NetFlowTemplateSystem
- func NewPromTemplateSystem(key string, wrapped netflow.NetFlowTemplateSystem) netflow.NetFlowTemplateSystem
- func PromDecoderWrapper(wrapped utils.DecoderFunc, name string) utils.DecoderFunc
- func WrapPromProducer(wrapped producer.ProducerInterface) producer.ProducerInterface
- type PromProducerWrapper
- type PromTemplateSystem
- func (s *PromTemplateSystem) AddTemplate(version uint16, obsDomainId uint32, templateId uint16, template interface{}) error
- func (s *PromTemplateSystem) GetTemplate(version uint16, obsDomainId uint32, templateId uint16) (interface{}, error)
- func (s *PromTemplateSystem) GetTemplates() netflow.FlowBaseTemplateSet
- func (s *PromTemplateSystem) RemoveTemplate(version uint16, obsDomainId uint32, templateId uint16) (interface{}, error)
- type ReceiverMetric
Constants ¶
const (
// NAMESPACE is the Prometheus namespace prefix for goflow2 metrics.
NAMESPACE = "goflow2"
)
Variables ¶
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
func (s *PromTemplateSystem) GetTemplates() netflow.FlowBaseTemplateSet
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.