otel: go.opentelemetry.io/otel/sdk/metric/processor/reducer Index | Files

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 `label.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) label.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(

reducerProcessor := reducer.New(someFilter{...}, basicProcessor)

pusher := push.New(
return pusher.Stop


Package Files

doc.go reducer.go

type LabelFilterSelector Uses

type LabelFilterSelector interface {
    LabelFilterFor(descriptor *metric.Descriptor) label.Filter

LabelFilterSelector is the interface used to configure a specific Filter to an instrument.

type Processor Uses

type Processor struct {
    // contains filtered or unexported fields

Processor implements "dimensionality reduction" by filtering keys from export label sets.

func New Uses

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 Uses

func (p *Processor) Process(accum export.Accumulation) error

Process implements export.Processor.

Package reducer imports 3 packages (graph). Updated 2020-11-18. Refresh now. Tools for package owners.