reducer

package
v0.17.0 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2021 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Overview

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(
                simple.NewWithExactDistribution(),
                exporter,
        )

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

        pusher := push.New(
                reducerProcessor,
                exporter,
                pushOpts...,
        )
        pusher.Start()
        global.SetMeterProvider(pusher.Provider())
        return pusher.Stop

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LabelFilterSelector

type LabelFilterSelector interface {
	LabelFilterFor(descriptor *metric.Descriptor) label.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.

Jump to

Keyboard shortcuts

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