storage

package
v0.11.0 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2019 License: Apache-2.0 Imports: 24 Imported by: 62

Documentation

Overview

Package storage is a generated GoMock package.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FetchOptionsToAggregateOptions added in v0.8.0

func FetchOptionsToAggregateOptions(
	fetchOptions *FetchOptions,
	tagQuery *CompleteTagsQuery,
) index.AggregationOptions

FetchOptionsToAggregateOptions converts a set of coordinator options as well as complete tags query to an M3 aggregate query option.

func FetchOptionsToM3Options

func FetchOptionsToM3Options(fetchOptions *FetchOptions, fetchQuery *FetchQuery) index.QueryOptions

FetchOptionsToM3Options converts a set of coordinator options to M3 options.

func FetchQueryToM3Query

func FetchQueryToM3Query(
	fetchQuery *FetchQuery,
) (index.Query, error)

FetchQueryToM3Query converts an m3coordinator fetch query to an M3 query.

func FetchResultToBlockResult

func FetchResultToBlockResult(
	result *FetchResult,
	query *FetchQuery,
	lookbackDuration time.Duration,
	enforcer cost.ChainedEnforcer,
) (block.Result, error)

FetchResultToBlockResult converts a fetch result into coordinator blocks

func FetchResultToPromResult

func FetchResultToPromResult(
	result *FetchResult,
	keepEmpty bool,
) *prompb.QueryResult

FetchResultToPromResult converts fetch results from M3 to Prometheus result. TODO(rartoul): We should pool all of these intermediary datastructures, or at least the []*prompb.Sample (as thats the most heavily allocated object) since we have full control over the lifecycle.

func FromIdentTagIteratorToTags

func FromIdentTagIteratorToTags(
	identTags ident.TagIterator,
	tagOptions models.TagOptions,
) (models.Tags, error)

FromIdentTagIteratorToTags converts ident tags to coordinator tags.

func FromM3IdentToMetric

func FromM3IdentToMetric(
	identID ident.ID,
	iterTags ident.TagIterator,
	tagOptions models.TagOptions,
) (models.Metric, error)

FromM3IdentToMetric converts an M3 ident metric to a coordinator metric.

func NewMultiBlockWrapper added in v0.4.6

func NewMultiBlockWrapper(unconsolidatedBlock block.UnconsolidatedBlock) block.Block

NewMultiBlockWrapper returns a block wrapper over an unconsolidated block

func NewMultiSeriesBlock added in v0.4.6

func NewMultiSeriesBlock(seriesList ts.SeriesList, query *FetchQuery, lookbackDuration time.Duration) (block.UnconsolidatedBlock, error)

NewMultiSeriesBlock returns a new unconsolidated block

func NewUnconsolidatedStep added in v0.5.0

func NewUnconsolidatedStep(
	time time.Time,
	values []ts.Datapoints,
) block.UnconsolidatedStep

NewUnconsolidatedStep returns an unconsolidated step with given values.

func PromLabelsToM3Tags

func PromLabelsToM3Tags(
	labels []*prompb.Label,
	tagOptions models.TagOptions,
) models.Tags

PromLabelsToM3Tags converts Prometheus labels to M3 tags

func PromMatcherToM3

func PromMatcherToM3(matcher *prompb.LabelMatcher) (models.Matcher, error)

PromMatcherToM3 converts a prometheus label matcher to m3 matcher

func PromMatchersToM3

func PromMatchersToM3(matchers []*prompb.LabelMatcher) (models.Matchers, error)

PromMatchersToM3 converts prometheus label matchers to m3 matchers

func PromSamplesToM3Datapoints

func PromSamplesToM3Datapoints(samples []*prompb.Sample) ts.Datapoints

PromSamplesToM3Datapoints converts Prometheus samples to M3 datapoints

func PromTimestampToTime added in v0.10.0

func PromTimestampToTime(timestampMS int64) time.Time

PromTimestampToTime converts a prometheus timestamp to time.Time.

func PromTypeToM3

func PromTypeToM3(labelType prompb.LabelMatcher_Type) (models.MatchType, error)

PromTypeToM3 converts a prometheus label type to m3 matcher type

func SeriesToPromSamples

func SeriesToPromSamples(series *ts.Series) []*prompb.Sample

SeriesToPromSamples series datapoints to prometheus samples.SeriesToPromSamples.

func SeriesToPromTS

func SeriesToPromTS(series *ts.Series) prompb.TimeSeries

SeriesToPromTS converts a series to prometheus timeseries.

func TagsToIdentTagIterator

func TagsToIdentTagIterator(tags models.Tags) ident.TagIterator

TagsToIdentTagIterator converts coordinator tags to ident tags.

func TagsToPromLabels

func TagsToPromLabels(tags models.Tags) []*prompb.Label

TagsToPromLabels converts tags to prometheus labels.

func TimeToPromTimestamp added in v0.10.0

func TimeToPromTimestamp(timestamp time.Time) int64

TimeToPromTimestamp converts a time.Time to prometheus timestamp.

func ValidateMetricsType

func ValidateMetricsType(v MetricsType) error

ValidateMetricsType validates a stored metrics type.

Types

type Appender

type Appender interface {
	// Write value to the database for an ID
	Write(ctx context.Context, query *WriteQuery) error
}

Appender provides batched appends against a storage.

type Attributes

type Attributes struct {
	MetricsType MetricsType
	Retention   time.Duration
	Resolution  time.Duration
}

Attributes is a set of stored metrics attributes.

type CompleteTagsQuery added in v0.4.8

type CompleteTagsQuery struct {
	CompleteNameOnly bool
	FilterNameTags   [][]byte
	TagMatchers      models.Matchers
	Start            time.Time
	End              time.Time
}

CompleteTagsQuery represents a query that returns an autocompleted set of tags that exist in the db

func (*CompleteTagsQuery) String added in v0.4.8

func (q *CompleteTagsQuery) String() string

type CompleteTagsResult added in v0.4.8

type CompleteTagsResult struct {
	CompleteNameOnly bool
	CompletedTags    []CompletedTag
}

CompleteTagsResult represents a set of autocompleted tag names and values

type CompleteTagsResultBuilder added in v0.4.8

type CompleteTagsResultBuilder interface {
	Add(*CompleteTagsResult) error
	Build() CompleteTagsResult
}

CompleteTagsResultBuilder is a builder that accumulates and deduplicates incoming CompleteTagsResult values

func NewCompleteTagsResultBuilder added in v0.4.8

func NewCompleteTagsResultBuilder(
	nameOnly bool,
) CompleteTagsResultBuilder

NewCompleteTagsResultBuilder creates a new complete tags result builder.

type CompletedTag added in v0.4.8

type CompletedTag struct {
	Name   []byte
	Values [][]byte
}

CompletedTag is an autocompleted tag with a name and a list of possible values

type FanoutOption added in v0.5.0

type FanoutOption uint

FanoutOption describes the fanout option.

const (
	// FanoutDefault defaults to the fanout option.
	FanoutDefault FanoutOption = iota
	// FanoutForceDisable forces disabling fanout.
	FanoutForceDisable
	// FanoutForceEnable forces enabling fanout.
	FanoutForceEnable
)

type FanoutOptions added in v0.5.0

type FanoutOptions struct {
	// FanoutUnaggregated describes the fanout options for
	// unaggregated namespaces.
	FanoutUnaggregated FanoutOption
	// FanoutAggregated describes the fanout options for
	// aggregated namespaces.
	FanoutAggregated FanoutOption
	// FanoutAggregatedOptimized describes the fanout options for the
	// aggregated namespace optimization.
	FanoutAggregatedOptimized FanoutOption
}

FanoutOptions describes which namespaces should be fanned out to for the query.

type FetchOptions

type FetchOptions struct {
	// Remote is set when this fetch is originated by a remote grpc call.
	Remote bool
	// Limit is the maximum number of series to return.
	Limit int
	// BlockType is the block type that the fetch function returns.
	BlockType models.FetchedBlockType
	// FanoutOptions are the options for the fetch namespace fanout.
	FanoutOptions *FanoutOptions
	// RestrictFetchOptions restricts the fetch to a specific set of
	// conditions.
	RestrictFetchOptions *RestrictFetchOptions
	// Step is the configured step size.
	Step time.Duration
	// LookbackDuration if set overrides the default lookback duration.
	LookbackDuration *time.Duration
	// Enforcer is used to enforce resource limits on the number of datapoints
	// used by a given query. Limits are imposed at time of decompression.
	Enforcer cost.ChainedEnforcer
	// Scope is used to report metrics about the fetch.
	Scope tally.Scope
}

FetchOptions represents the options for fetch query.

func NewFetchOptions added in v0.4.8

func NewFetchOptions() *FetchOptions

NewFetchOptions creates a new fetch options.

func (*FetchOptions) Clone added in v0.9.2

func (o *FetchOptions) Clone() *FetchOptions

Clone will clone and return the fetch options.

func (*FetchOptions) LookbackDurationOrDefault added in v0.11.0

func (o *FetchOptions) LookbackDurationOrDefault(
	defaultValue time.Duration,
) time.Duration

LookbackDurationOrDefault returns either the default lookback duration or overridden lookback duration if set.

func (*FetchOptions) QueryFetchOptions added in v0.11.0

func (o *FetchOptions) QueryFetchOptions(
	queryCtx *models.QueryContext,
	blockType models.FetchedBlockType,
) (*FetchOptions, error)

QueryFetchOptions returns fetch options for a given query.

type FetchQuery

type FetchQuery struct {
	Raw         string
	TagMatchers models.Matchers `json:"matchers"`
	Start       time.Time       `json:"start"`
	End         time.Time       `json:"end"`
	Interval    time.Duration   `json:"interval"`
}

FetchQuery represents the input query which is fetched from M3DB

func PromReadQueryToM3

func PromReadQueryToM3(query *prompb.Query) (*FetchQuery, error)

PromReadQueryToM3 converts a prometheus read query to m3 read query

func (*FetchQuery) String

func (q *FetchQuery) String() string

type FetchResult

type FetchResult struct {
	SeriesList ts.SeriesList // The aggregated list of results across all underlying storage calls
	LocalOnly  bool
	HasNext    bool
}

FetchResult provides a fetch result and meta information

func SeriesIteratorsToFetchResult

func SeriesIteratorsToFetchResult(
	seriesIterators encoding.SeriesIterators,
	readWorkerPool xsync.PooledWorkerPool,
	cleanupSeriesIters bool,
	enforcer cost.ChainedEnforcer,
	tagOptions models.TagOptions,
) (*FetchResult, error)

SeriesIteratorsToFetchResult converts SeriesIterators into a fetch result

type MetricsType

type MetricsType uint

MetricsType is a type of stored metrics.

const (
	// UnknownMetricsType is the unknown metrics type and is invalid.
	UnknownMetricsType MetricsType = iota
	// UnaggregatedMetricsType is an unaggregated metrics type.
	UnaggregatedMetricsType
	// AggregatedMetricsType is an aggregated metrics type.
	AggregatedMetricsType

	// DefaultMetricsType is the default metrics type value.
	DefaultMetricsType = UnaggregatedMetricsType
)

func ParseMetricsType added in v0.11.0

func ParseMetricsType(str string) (MetricsType, error)

ParseMetricsType parses a metric type.

func (MetricsType) String

func (t MetricsType) String() string

func (*MetricsType) UnmarshalYAML

func (v *MetricsType) UnmarshalYAML(unmarshal func(interface{}) error) error

UnmarshalYAML unmarshals a stored merics type.

type MockStorage added in v0.8.0

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

MockStorage is a mock of Storage interface

func NewMockStorage added in v0.8.0

func NewMockStorage(ctrl *gomock.Controller) *MockStorage

NewMockStorage creates a new mock instance

func (*MockStorage) Close added in v0.8.0

func (m *MockStorage) Close() error

Close mocks base method

func (*MockStorage) CompleteTags added in v0.8.0

func (m *MockStorage) CompleteTags(arg0 context.Context, arg1 *CompleteTagsQuery, arg2 *FetchOptions) (*CompleteTagsResult, error)

CompleteTags mocks base method

func (*MockStorage) EXPECT added in v0.8.0

func (m *MockStorage) EXPECT() *MockStorageMockRecorder

EXPECT returns an object that allows the caller to indicate expected use

func (*MockStorage) Fetch added in v0.8.0

func (m *MockStorage) Fetch(arg0 context.Context, arg1 *FetchQuery, arg2 *FetchOptions) (*FetchResult, error)

Fetch mocks base method

func (*MockStorage) FetchBlocks added in v0.8.0

func (m *MockStorage) FetchBlocks(arg0 context.Context, arg1 *FetchQuery, arg2 *FetchOptions) (block.Result, error)

FetchBlocks mocks base method

func (*MockStorage) SearchSeries added in v0.8.0

func (m *MockStorage) SearchSeries(arg0 context.Context, arg1 *FetchQuery, arg2 *FetchOptions) (*SearchResults, error)

SearchSeries mocks base method

func (*MockStorage) Type added in v0.8.0

func (m *MockStorage) Type() Type

Type mocks base method

func (*MockStorage) Write added in v0.8.0

func (m *MockStorage) Write(arg0 context.Context, arg1 *WriteQuery) error

Write mocks base method

type MockStorageMockRecorder added in v0.8.0

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

MockStorageMockRecorder is the mock recorder for MockStorage

func (*MockStorageMockRecorder) Close added in v0.8.0

func (mr *MockStorageMockRecorder) Close() *gomock.Call

Close indicates an expected call of Close

func (*MockStorageMockRecorder) CompleteTags added in v0.8.0

func (mr *MockStorageMockRecorder) CompleteTags(arg0, arg1, arg2 interface{}) *gomock.Call

CompleteTags indicates an expected call of CompleteTags

func (*MockStorageMockRecorder) Fetch added in v0.8.0

func (mr *MockStorageMockRecorder) Fetch(arg0, arg1, arg2 interface{}) *gomock.Call

Fetch indicates an expected call of Fetch

func (*MockStorageMockRecorder) FetchBlocks added in v0.8.0

func (mr *MockStorageMockRecorder) FetchBlocks(arg0, arg1, arg2 interface{}) *gomock.Call

FetchBlocks indicates an expected call of FetchBlocks

func (*MockStorageMockRecorder) SearchSeries added in v0.8.0

func (mr *MockStorageMockRecorder) SearchSeries(arg0, arg1, arg2 interface{}) *gomock.Call

SearchSeries indicates an expected call of SearchSeries

func (*MockStorageMockRecorder) Type added in v0.8.0

func (mr *MockStorageMockRecorder) Type() *gomock.Call

Type indicates an expected call of Type

func (*MockStorageMockRecorder) Write added in v0.8.0

func (mr *MockStorageMockRecorder) Write(arg0, arg1 interface{}) *gomock.Call

Write indicates an expected call of Write

type Querier

type Querier interface {
	// Fetch fetches timeseries data based on a query
	Fetch(
		ctx context.Context,
		query *FetchQuery,
		options *FetchOptions,
	) (*FetchResult, error)

	// FetchBlocks converts fetch results to storage blocks
	FetchBlocks(
		ctx context.Context,
		query *FetchQuery,
		options *FetchOptions,
	) (block.Result, error)

	// SearchSeries returns series IDs matching the current query
	SearchSeries(
		ctx context.Context,
		query *FetchQuery,
		options *FetchOptions,
	) (*SearchResults, error)

	// CompleteTags returns autocompleted tag results
	CompleteTags(
		ctx context.Context,
		query *CompleteTagsQuery,
		options *FetchOptions,
	) (*CompleteTagsResult, error)
}

Querier handles queries against a storage.

type Query

type Query interface {
	fmt.Stringer
	// contains filtered or unexported methods
}

Query is an interface for a M3DB query

type QueryResult

type QueryResult struct {
	FetchResult *FetchResult
	Err         error
}

QueryResult is the result from a query

type RestrictFetchOptions added in v0.11.0

type RestrictFetchOptions struct {
	// MetricsType restricts the type of metrics being returned.
	MetricsType MetricsType
	// StoragePolicy is required if metrics type is not unaggregated
	// to specify which storage policy metrics should be returned from.
	StoragePolicy policy.StoragePolicy
}

RestrictFetchOptions restricts the fetch to a specific set of conditions.

func NewRestrictFetchOptionsFromProto added in v0.11.0

func NewRestrictFetchOptionsFromProto(
	p *rpcpb.RestrictFetchOptions,
) (RestrictFetchOptions, error)

NewRestrictFetchOptionsFromProto returns a restrict fetch options from protobuf message.

func (RestrictFetchOptions) Proto added in v0.11.0

Proto returns the protobuf message that corresponds to RestrictFetchOptions.

func (RestrictFetchOptions) Validate added in v0.11.0

func (o RestrictFetchOptions) Validate() error

Validate will validate the restrict fetch options.

type SearchResults

type SearchResults struct {
	Metrics models.Metrics
}

SearchResults is the result from a search

type SeriesMatchQuery added in v0.5.0

type SeriesMatchQuery struct {
	TagMatchers []models.Matchers
	Start       time.Time
	End         time.Time
}

SeriesMatchQuery represents a query that returns a set of series that match the query

type Storage

type Storage interface {
	Querier
	Appender
	// Type identifies the type of the underlying storage
	Type() Type
	// Close is used to close the underlying storage and free up resources
	Close() error
}

Storage provides an interface for reading and writing to the tsdb

type Type

type Type int

Type describes the type of storage

const (
	// TypeLocalDC is for storages that reside in the local datacenter
	TypeLocalDC Type = iota
	// TypeRemoteDC is for storages that reside in a remote datacenter
	TypeRemoteDC
	// TypeMultiDC is for storages that will aggregate multiple datacenters
	TypeMultiDC
	// TypeDebug is for storages that are used for debugging purposes
	TypeDebug
)

type WriteQuery

type WriteQuery struct {
	Tags       models.Tags
	Datapoints ts.Datapoints
	Unit       xtime.Unit
	Annotation []byte
	Attributes Attributes
}

WriteQuery represents the input timeseries that is written to the db

func PromWriteTSToM3

func PromWriteTSToM3(
	timeseries *prompb.TimeSeries,
	opts models.TagOptions,
) *WriteQuery

PromWriteTSToM3 converts a prometheus write query to an M3 one

func (*WriteQuery) String

func (q *WriteQuery) String() string

Directories

Path Synopsis
Package m3 is a generated GoMock package.
Package m3 is a generated GoMock package.

Jump to

Keyboard shortcuts

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