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 that 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 *otel.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-10-20. Refresh now. Tools for package owners.