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 }