package reducer
import "go.opentelemetry.io/otel/sdk/metric/processor/reducer"
Package reducer implements a metrics Processor component to reduce labels.
This package is currently in a pre-GA phase. Backwards incompatible changes may be introduced in subsequent minor version releases as we work to track the evolving OpenTelemetry specification and user feedback.
The metrics Processor component this package implements applies a `attribute.Filter` to each processed `export.Accumulation` to remove labels before passing the result to another Processor. This Processor can be used to reduce inherent dimensionality in the data, as a way to control the cost of collecting high cardinality metric data.
For example, to compose a push controller with a reducer and a basic metric processor:
type someFilter struct{ // configuration for this filter // ... }
func (someFilter) LabelFilterFor(_ *metric.Descriptor) attribute.Filter { return func(label kv.KeyValue) bool { // return true to keep this label, false to drop this label // ... } }
func setupMetrics(exporter export.Exporter) (stop func()) { basicProcessor := basic.New( simple.NewWithExactDistribution(), exporter, ) reducerProcessor := reducer.New(someFilter{...}, basicProcessor) pusher := push.New( reducerProcessor, exporter, pushOpts..., ) pusher.Start() global.SetMeterProvider(pusher.Provider()) return pusher.Stop
Index ¶
Types ¶
type LabelFilterSelector ¶
type LabelFilterSelector interface { LabelFilterFor(descriptor *metric.Descriptor) attribute.Filter }
LabelFilterSelector is the interface used to configure a specific Filter to an instrument.
type Processor ¶
type Processor struct { export.Checkpointer // contains filtered or unexported fields }
Processor implements "dimensionality reduction" by filtering keys from export label sets.
func New ¶
func New(filterSelector LabelFilterSelector, ckpter export.Checkpointer) *Processor
New returns a dimensionality-reducing Processor that passes data to the next stage in an export pipeline.
func (*Processor) Process ¶
func (p *Processor) Process(accum export.Accumulation) error
Process implements export.Processor.
Source Files ¶
doc.go reducer.go
- Version
- v0.21.0
- Published
- Jun 18, 2021
- Platform
- linux/amd64
- Imports
- 3 packages
- Last checked
- 1 hour ago –
Tools for package owners.