github.com/grafana/pyroscope@v1.18.0/pkg/og/storage/types.go (about)

     1  package storage
     2  
     3  //revive:disable:max-public-structs TODO: we will refactor this later
     4  
     5  import (
     6  	"context"
     7  	"time"
     8  
     9  	"github.com/grafana/pyroscope/api/model/labelset"
    10  	"github.com/grafana/pyroscope/pkg/og/storage/metadata"
    11  	"github.com/grafana/pyroscope/pkg/og/storage/tree"
    12  )
    13  
    14  // MetricsExporter exports values of particular stack traces sample from profiling
    15  // data as a Prometheus metrics.
    16  type MetricsExporter interface {
    17  	// Evaluate evaluates metrics export rules against the input key and creates
    18  	// prometheus counters for new time series, if required. Returned observer can
    19  	// be used to evaluate and observe particular samples.
    20  	//
    21  	// If there are no matching rules, the function returns false.
    22  	Evaluate(*PutInput) (SampleObserver, bool)
    23  }
    24  
    25  type SampleObserver interface {
    26  	// Observe adds v to the matched counters if k satisfies node selector.
    27  	// k is a sample stack trace where frames are delimited by semicolon.
    28  	// v is the sample value.
    29  	Observe(k []byte, v int)
    30  }
    31  
    32  type PutInput struct {
    33  	StartTime       time.Time
    34  	EndTime         time.Time
    35  	LabelSet        *labelset.LabelSet
    36  	Val             *tree.Tree
    37  	SpyName         string
    38  	SampleRate      uint32
    39  	Units           metadata.Units
    40  	AggregationType metadata.AggregationType
    41  }
    42  
    43  type Putter interface {
    44  	Put(context.Context, *PutInput) error
    45  }