storage

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Sep 6, 2022 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AppDeleter added in v0.25.0

type AppDeleter interface {
	DeleteApp(ctx context.Context, appName string) error
}

type AppGetter added in v0.25.0

type AppGetter interface {
	GetApps(ctx context.Context) (GetAppsOutput, error)
}

type AppInfo added in v0.25.0

type AppInfo struct {
	Name string
}

type AppNameGetter added in v0.14.0

type AppNameGetter interface {
	GetAppNames(ctx context.Context) []string
}

type BadgerDB added in v0.17.0

type BadgerDB interface {
	Update(func(txn *badger.Txn) error) error
	View(func(txn *badger.Txn) error) error
	NewWriteBatch() *badger.WriteBatch
	MaxBatchCount() int64
}

type BadgerDBWithCache added in v0.17.0

type BadgerDBWithCache interface {
	BadgerDB
	CacheLayer

	Close()
	Size() bytesize.ByteSize
	CacheSize() uint64

	DBInstance() *badger.DB
	CacheInstance() *cache.Cache
	Name() string
}

type CacheLayer added in v0.17.0

type CacheLayer interface {
	Put(key string, val interface{})
	Evict(percent float64)
	WriteBack()
	Delete(key string) error
	Discard(key string)
	DiscardPrefix(prefix string) error
	GetOrCreate(key string) (interface{}, error)
	Lookup(key string) (interface{}, bool)
}

type Config added in v0.2.5

type Config struct {
	NewBadger func(name string, p Prefix, codec cache.Codec) (BadgerDBWithCache, error)
	// contains filtered or unexported fields
}

func NewConfig added in v0.2.5

func NewConfig(server *config.Server) *Config

NewConfig returns a new storage config from a server config

func (*Config) WithInMemory added in v0.3.0

func (c *Config) WithInMemory() *Config

WithInMemory makes the storage in-memory.

func (*Config) WithPath added in v0.2.5

func (c *Config) WithPath(path string) *Config

WithPath sets the storage base path

type DeleteAppInput added in v0.25.0

type DeleteAppInput struct {
	Name string
}

type DeleteInput added in v0.0.33

type DeleteInput struct {
	// Key must match exactly one segment.
	Key *segment.Key
}

type ExemplarsGetter added in v0.22.1

type ExemplarsGetter interface {
	GetExemplar(context.Context, GetExemplarInput) (GetExemplarOutput, error)
}

type ExemplarsMerger added in v0.22.1

type ExemplarsMerger interface {
	MergeExemplars(context.Context, MergeExemplarsInput) (MergeExemplarsOutput, error)
}

type ExemplarsQuerier added in v0.28.0

type ExemplarsQuerier interface {
	QueryExemplars(context.Context, QueryExemplarsInput) (QueryExemplarsOutput, error)
}

type GetAppsOutput added in v0.25.0

type GetAppsOutput struct {
	Apps []AppInfo
}

type GetExemplarInput added in v0.22.1

type GetExemplarInput struct {
	StartTime time.Time
	EndTime   time.Time
	AppName   string
	ProfileID string
}

type GetExemplarOutput added in v0.22.1

type GetExemplarOutput struct {
	Tree      *tree.Tree
	Labels    map[string]string
	StartTime time.Time
	EndTime   time.Time
	Metadata  metadata.Metadata

	Telemetry map[string]interface{}
}

type GetInput added in v0.0.30

type GetInput struct {
	StartTime time.Time
	EndTime   time.Time
	Key       *segment.Key
	Query     *flameql.Query
	// TODO: make this a part of the query
	GroupBy string
}

type GetLabelKeysByQueryInput added in v0.17.0

type GetLabelKeysByQueryInput struct {
	StartTime time.Time
	EndTime   time.Time
	Query     string
}

type GetLabelKeysByQueryOutput added in v0.17.0

type GetLabelKeysByQueryOutput struct {
	Keys []string
}

type GetLabelValuesByQueryInput added in v0.17.0

type GetLabelValuesByQueryInput struct {
	StartTime time.Time
	EndTime   time.Time
	Label     string
	Query     string
}

type GetLabelValuesByQueryOutput added in v0.17.0

type GetLabelValuesByQueryOutput struct {
	Values []string
}

type GetOutput added in v0.0.30

type GetOutput struct {
	Tree     *tree.Tree
	Timeline *segment.Timeline
	Groups   map[string]*segment.Timeline
	Count    uint64

	// TODO: Replace with metadata.Metadata
	SpyName         string
	SampleRate      uint32
	Units           metadata.Units
	AggregationType metadata.AggregationType

	Telemetry map[string]interface{}
}

type Getter added in v0.14.0

type Getter interface {
	Get(context.Context, *GetInput) (*GetOutput, error)
}

type Heatmap added in v0.28.0

type Heatmap struct {
	// Values matrix contain values that indicate count of value occurrences,
	// satisfying boundaries of the X and Y bins: [StartTime:EndTime) and (MinValue:MaxValue].
	// A value can be accessed via Values[x][y], where:
	//   0 <= x < TimeBuckets, and
	//   0 <= y < ValueBuckets.
	Values [][]uint64
	// TimeBuckets denotes number of ticks on the X-axis.
	TimeBuckets int64
	// ValueBuckets denotes number of ticks on the Y-axis.
	ValueBuckets int64
	// StartTime and EndTime indicate boundaries of the X axis.
	StartTime time.Time
	EndTime   time.Time
	// MinValue and MaxValue indicate boundaries of the Y axis.
	MinValue uint64
	MaxValue uint64
	// MinDepth and MaxDepth indicate boundaries of the Z axis: [MinDepth:MaxDepth].
	// MinDepth is the minimal non-zero value (count of value occurrences) that can
	// be found in Values.
	MinDepth uint64
	MaxDepth uint64
}

type HeatmapColumn added in v0.28.0

type HeatmapColumn struct {
	Values []uint64
	Counts []uint64
}

type HeatmapParams added in v0.28.0

type HeatmapParams struct {
	// TimeBuckets denotes number of ticks on the X-axis.
	TimeBuckets int64
	// ValueBuckets denotes number of ticks on the Y-axis.
	ValueBuckets int64
	// StartTime and EndTime indicate boundaries of the X axis.
	StartTime time.Time
	EndTime   time.Time
}

type HeatmapSketch added in v0.28.0

type HeatmapSketch struct {
	HeatmapParams
	Columns []HeatmapColumn
}

type IngestionQueue added in v0.17.0

type IngestionQueue struct {
	// contains filtered or unexported fields
}

func NewIngestionQueue added in v0.17.0

func NewIngestionQueue(logger logrus.FieldLogger, putter Putter, r prometheus.Registerer, c *Config) *IngestionQueue

func (*IngestionQueue) Put added in v0.17.0

func (s *IngestionQueue) Put(ctx context.Context, input *PutInput) error

func (*IngestionQueue) Stop added in v0.17.0

func (s *IngestionQueue) Stop()

type LabelValuesGetter added in v0.14.0

type LabelValuesGetter interface {
	GetValues(ctx context.Context, key string, cb func(v string) bool)
	GetValuesByQuery(ctx context.Context, in GetLabelValuesByQueryInput) (GetLabelValuesByQueryOutput, error)
}

type LabelsGetter added in v0.14.0

type LabelsGetter interface {
	GetKeys(ctx context.Context, cb func(string) bool)
	GetKeysByQuery(ctx context.Context, in GetLabelKeysByQueryInput) (GetLabelKeysByQueryOutput, error)
}

type MergeExemplarsInput added in v0.22.1

type MergeExemplarsInput struct {
	AppName    string
	ProfileIDs []string
	StartTime  time.Time
	EndTime    time.Time

	// FIXME: Not implemented: parameters are ignored.
	MinValue uint64
	MaxValue uint64

	HeatmapParams HeatmapParams
}

type MergeExemplarsOutput added in v0.22.1

type MergeExemplarsOutput struct {
	Tree          *tree.Tree
	Count         uint64
	Metadata      metadata.Metadata
	HeatmapSketch HeatmapSketch // FIXME: Not implemented: the field is never populated.

	Telemetry map[string]interface{}
}

type MetricsExporter added in v0.2.1

type MetricsExporter interface {
	// Evaluate evaluates metrics export rules against the input key and creates
	// prometheus counters for new time series, if required. Returned observer can
	// be used to evaluate and observe particular samples.
	//
	// If there are no matching rules, the function returns false.
	Evaluate(*PutInput) (SampleObserver, bool)
}

MetricsExporter exports values of particular stack traces sample from profiling data as a Prometheus metrics.

type Prefix added in v0.17.0

type Prefix string

func (Prefix) String added in v0.17.0

func (p Prefix) String() string

type PutInput added in v0.0.30

type PutInput struct {
	StartTime       time.Time
	EndTime         time.Time
	Key             *segment.Key
	Val             *tree.Tree
	SpyName         string
	SampleRate      uint32
	Units           metadata.Units
	AggregationType metadata.AggregationType
}

type Putter added in v0.14.0

type Putter interface {
	Put(context.Context, *PutInput) error
}

type QueryExemplarsInput added in v0.28.0

type QueryExemplarsInput struct {
	Query     *flameql.Query
	StartTime time.Time
	EndTime   time.Time

	MinValue uint64
	MaxValue uint64

	HeatmapParams HeatmapParams
}

type QueryExemplarsOutput added in v0.28.0

type QueryExemplarsOutput struct {
	Tree          *tree.Tree
	Count         uint64
	Metadata      metadata.Metadata
	HeatmapSketch HeatmapSketch

	Telemetry map[string]interface{}
}

type SampleObserver added in v0.2.1

type SampleObserver interface {
	// Observe adds v to the matched counters if k satisfies node selector.
	// k is a sample stack trace where frames are delimited by semicolon.
	// v is the sample value.
	Observe(k []byte, v int)
}

type Storage

type Storage struct {
	// contains filtered or unexported fields
}

func New

func New(c *Config, logger *logrus.Logger, reg prometheus.Registerer, hc *health.Controller) (*Storage, error)

func (*Storage) CacheStats added in v0.0.33

func (s *Storage) CacheStats() map[string]uint64

func (*Storage) Cleanup added in v0.12.0

func (s *Storage) Cleanup(ctx context.Context) error

Cleanup removes malformed data from the storage.

func (*Storage) Close

func (s *Storage) Close() error

func (*Storage) DebugExport added in v0.8.0

func (s *Storage) DebugExport(w http.ResponseWriter, r *http.Request)

func (*Storage) Delete added in v0.0.33

func (s *Storage) Delete(_ context.Context, di *DeleteInput) error

func (*Storage) DeleteApp added in v0.3.1

func (s *Storage) DeleteApp(_ context.Context, appname string) error

DeleteApp fully deletes an app It does so by deleting Segments, Dictionaries, Trees, Dimensions and Labels It's an idempotent call, ie. if the app already does not exist, no error is triggered. TODO cancelation?

func (*Storage) DictsInternals added in v0.16.0

func (s *Storage) DictsInternals() (*badger.DB, *cache.Cache)

func (*Storage) DimensionsInternals added in v0.16.0

func (s *Storage) DimensionsInternals() (*badger.DB, *cache.Cache)

func (*Storage) DiskUsage

func (s *Storage) DiskUsage() map[string]bytesize.ByteSize

func (*Storage) ExemplarsInternals added in v0.20.0

func (s *Storage) ExemplarsInternals() (*badger.DB, func())

func (*Storage) Get

func (s *Storage) Get(ctx context.Context, gi *GetInput) (*GetOutput, error)

func (*Storage) GetAppNames added in v0.3.0

func (s *Storage) GetAppNames(ctx context.Context) []string

GetAppNames returns the list of all app's names

func (*Storage) GetApps added in v0.25.0

func (s *Storage) GetApps(ctx context.Context) (GetAppsOutput, error)

func (*Storage) GetExemplar added in v0.22.1

func (s *Storage) GetExemplar(ctx context.Context, gi GetExemplarInput) (out GetExemplarOutput, err error)

func (*Storage) GetKeys

func (s *Storage) GetKeys(_ context.Context, cb func(string) bool)

func (*Storage) GetKeysByQuery added in v0.0.38

func (*Storage) GetValues

func (s *Storage) GetValues(_ context.Context, key string, cb func(v string) bool)

func (*Storage) GetValuesByQuery added in v0.0.38

func (*Storage) InstallID

func (s *Storage) InstallID() string

func (*Storage) JWT added in v0.0.38

func (s *Storage) JWT() (string, error)

func (*Storage) LoadAnalytics added in v0.8.0

func (s *Storage) LoadAnalytics(a interface{}) error

func (*Storage) MainInternals added in v0.16.0

func (s *Storage) MainInternals() (*badger.DB, *cache.Cache)

func (*Storage) MergeExemplars added in v0.22.1

func (s *Storage) MergeExemplars(ctx context.Context, mi MergeExemplarsInput) (out MergeExemplarsOutput, err error)

func (*Storage) Put

func (s *Storage) Put(ctx context.Context, pi *PutInput) error

func (*Storage) QueryExemplars added in v0.28.0

func (*Storage) SaveAnalytics added in v0.8.0

func (s *Storage) SaveAnalytics(a interface{}) error

func (*Storage) SegmentsInternals added in v0.16.0

func (s *Storage) SegmentsInternals() (*badger.DB, *cache.Cache)

func (*Storage) TreesInternals added in v0.16.0

func (s *Storage) TreesInternals() (*badger.DB, *cache.Cache)

Directories

Path Synopsis
lfu

Jump to

Keyboard shortcuts

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