config

package
v0.15.10 Latest Latest
Warning

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

Go to latest
Published: Aug 20, 2020 License: Apache-2.0 Imports: 22 Imported by: 22

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TagOptionsFromConfig added in v0.4.8

func TagOptionsFromConfig(cfg TagOptionsConfiguration) (models.TagOptions, error)

TagOptionsFromConfig translates tag option configuration into tag options.

Types

type BackendStorageType added in v0.4.4

type BackendStorageType string

BackendStorageType is an enum for different backends.

const (
	// GRPCStorageType is for backends which only support grpc endpoints.
	GRPCStorageType BackendStorageType = "grpc"
	// M3DBStorageType is for m3db backend.
	M3DBStorageType BackendStorageType = "m3db"
	// NoopEtcdStorageType is for a noop backend which returns empty results for
	// any query and blackholes any writes, but requires that a valid etcd cluster
	// is defined and can be connected to. Primarily used for standalone
	// coordinators used only to serve m3admin APIs.
	NoopEtcdStorageType BackendStorageType = "noop-etcd"
)

type CacheConfiguration added in v0.7.0

type CacheConfiguration struct {
	// Deprecated: remove from config.
	DeprecatedQueryConversion *DeprecatedQueryConversionCacheConfiguration `yaml:"queryConversion"`
}

CacheConfiguration contains the cache configurations.

type CarbonConfiguration added in v0.5.0

type CarbonConfiguration struct {
	Ingester *CarbonIngesterConfiguration `yaml:"ingester"`
}

CarbonConfiguration is the configuration for the carbon server.

type CarbonIngesterAggregationConfiguration added in v0.5.0

type CarbonIngesterAggregationConfiguration struct {
	Enabled *bool             `yaml:"enabled"`
	Type    *aggregation.Type `yaml:"type"`
}

CarbonIngesterAggregationConfiguration is the configuration struct for the aggregation for a carbon ingest rule's storage policy.

func (*CarbonIngesterAggregationConfiguration) EnabledOrDefault added in v0.5.0

func (c *CarbonIngesterAggregationConfiguration) EnabledOrDefault() bool

EnabledOrDefault returns whether aggregation should be enabled based on the provided configuration, or a default value otherwise.

func (*CarbonIngesterAggregationConfiguration) TypeOrDefault added in v0.5.0

TypeOrDefault returns the aggregation type that should be used based on the provided configuration, or a default value otherwise.

type CarbonIngesterConfiguration added in v0.5.0

type CarbonIngesterConfiguration struct {
	// Deprecated: simply use the logger debug level, this has been deprecated
	// in favor of setting the log level to debug.
	DeprecatedDebug bool                              `yaml:"debug"`
	ListenAddress   string                            `yaml:"listenAddress"`
	MaxConcurrency  int                               `yaml:"maxConcurrency"`
	Rules           []CarbonIngesterRuleConfiguration `yaml:"rules"`
}

CarbonIngesterConfiguration is the configuration struct for carbon ingestion.

func (*CarbonIngesterConfiguration) ListenAddressOrDefault added in v0.6.0

func (c *CarbonIngesterConfiguration) ListenAddressOrDefault() string

ListenAddressOrDefault returns the specified carbon ingester listen address if provided, or the default value if not.

func (*CarbonIngesterConfiguration) RulesOrDefault added in v0.5.0

RulesOrDefault returns the specified carbon ingester rules if provided, or generates reasonable defaults using the provided aggregated namespaces if not.

type CarbonIngesterRuleConfiguration added in v0.5.0

type CarbonIngesterRuleConfiguration struct {
	Pattern     string                                     `yaml:"pattern"`
	Continue    bool                                       `yaml:"continue"`
	Aggregation CarbonIngesterAggregationConfiguration     `yaml:"aggregation"`
	Policies    []CarbonIngesterStoragePolicyConfiguration `yaml:"policies"`
}

CarbonIngesterRuleConfiguration is the configuration struct for a carbon ingestion rule.

type CarbonIngesterStoragePolicyConfiguration added in v0.5.0

type CarbonIngesterStoragePolicyConfiguration struct {
	Resolution time.Duration `yaml:"resolution" validate:"nonzero"`
	Retention  time.Duration `yaml:"retention" validate:"nonzero"`
}

CarbonIngesterStoragePolicyConfiguration is the configuration struct for a carbon rule's storage policies.

type ClusterManagementConfiguration

type ClusterManagementConfiguration struct {
	// Etcd is the client configuration for etcd.
	Etcd etcdclient.Configuration `yaml:"etcd"`
}

ClusterManagementConfiguration is configuration for the placemement, namespaces and database management endpoints (optional).

type Configuration

type Configuration struct {
	// Metrics configuration.
	Metrics instrument.MetricsConfiguration `yaml:"metrics"`

	// Logging configuration.
	Logging xlog.Configuration `yaml:"logging"`

	// Tracing configures opentracing. If not provided, tracing is disabled.
	Tracing opentracing.TracingConfiguration `yaml:"tracing"`

	// Clusters is the DB cluster configurations for read, write and
	// query endpoints.
	Clusters m3.ClustersStaticConfiguration `yaml:"clusters"`

	// LocalConfiguration is the local embedded configuration if running
	// coordinator embedded in the DB.
	Local *LocalConfiguration `yaml:"local"`

	// ClusterManagement for placemement, namespaces and database management
	// endpoints (optional).
	ClusterManagement *ClusterManagementConfiguration `yaml:"clusterManagement"`

	// ListenAddress is the server listen address.
	ListenAddress *listenaddress.Configuration `yaml:"listenAddress" validate:"nonzero"`

	// Filter is the read/write/complete tags filter configuration.
	Filter FilterConfiguration `yaml:"filter"`

	// RPC is the RPC configuration.
	RPC *RPCConfiguration `yaml:"rpc"`

	// Backend is the backend store for query service. We currently support grpc and m3db (default).
	Backend BackendStorageType `yaml:"backend"`

	// TagOptions is the tag configuration options.
	TagOptions TagOptionsConfiguration `yaml:"tagOptions"`

	// ReadWorkerPool is the worker pool policy for read requests.
	ReadWorkerPool xconfig.WorkerPoolPolicy `yaml:"readWorkerPoolPolicy"`

	// WriteWorkerPool is the worker pool policy for write requests.
	WriteWorkerPool xconfig.WorkerPoolPolicy `yaml:"writeWorkerPoolPolicy"`

	// WriteForwarding is the write forwarding options.
	WriteForwarding WriteForwardingConfiguration `yaml:"writeForwarding"`

	// Downsample configurates how the metrics should be downsampled.
	Downsample downsample.Configuration `yaml:"downsample"`

	// Ingest is the ingest server.
	Ingest *IngestConfiguration `yaml:"ingest"`

	// Carbon is the carbon configuration.
	Carbon *CarbonConfiguration `yaml:"carbon"`

	// Query is the query configuration.
	Query QueryConfiguration `yaml:"query"`

	// Limits specifies limits on per-query resource usage.
	Limits LimitsConfiguration `yaml:"limits"`

	// LookbackDuration determines the lookback duration for queries
	LookbackDuration *time.Duration `yaml:"lookbackDuration"`

	// ResultOptions are the results options for query.
	ResultOptions ResultOptions `yaml:"resultOptions"`

	// Experimental is the configuration for the experimental API group.
	Experimental ExperimentalAPIConfiguration `yaml:"experimental"`

	// Cache configurations.
	//
	// Deprecated: cache configurations are no longer supported. Remove from file
	// when we can make breaking changes.
	// (If/when removed it will make existing configurations with the cache
	// stanza not able to startup the binary since we parse YAML in strict mode
	// by default).
	DeprecatedCache CacheConfiguration `yaml:"cache"`

	// MultiProcess is the multi-process configuration.
	MultiProcess MultiProcessConfiguration `yaml:"multiProcess"`
}

Configuration is the configuration for the query service.

func (Configuration) LookbackDurationOrDefault added in v0.5.0

func (c Configuration) LookbackDurationOrDefault() (time.Duration, error)

LookbackDurationOrDefault validates the LookbackDuration

type ConsolidationConfiguration added in v0.15.2

type ConsolidationConfiguration struct {
	// MatchType determines the options by which series should match.
	MatchType consolidators.MatchType `yaml:"matchType"`
}

ConsolidationConfiguration are configs for consolidating fetched queries.

type DeprecatedQueryConversionCacheConfiguration added in v0.8.2

type DeprecatedQueryConversionCacheConfiguration struct {
	Size *int `yaml:"size"`
}

DeprecatedQueryConversionCacheConfiguration is deprecated: remove from config.

type ExperimentalAPIConfiguration added in v0.15.0

type ExperimentalAPIConfiguration struct {
	Enabled bool `yaml:"enabled"`
}

ExperimentalAPIConfiguration is the configuration for the experimental API group.

type Filter added in v0.5.0

type Filter string

Filter is a query filter type.

const (
	// FilterLocalOnly is a filter that specifies local only storage should be used.
	FilterLocalOnly Filter = "local_only"
	// FilterRemoteOnly is a filter that specifies remote only storage should be used.
	FilterRemoteOnly Filter = "remote_only"
	// FilterAllowAll is a filter that specifies all storages should be used.
	FilterAllowAll Filter = "allow_all"
	// FilterAllowNone is a filter that specifies no storages should be used.
	FilterAllowNone Filter = "allow_none"
)

type FilterConfiguration added in v0.5.0

type FilterConfiguration struct {
	Read         Filter `yaml:"read"`
	Write        Filter `yaml:"write"`
	CompleteTags Filter `yaml:"completeTags"`
}

FilterConfiguration is the filters for write/read/complete tags storage filters.

type GlobalLimitsConfiguration added in v0.7.1

type GlobalLimitsConfiguration struct {
	// MaxFetchedDatapoints limits the max number of datapoints allowed to be
	// used by all queries at any point in time, this is applied at the query
	// service after the result has been returned by a storage node.
	MaxFetchedDatapoints int `yaml:"maxFetchedDatapoints"`
}

GlobalLimitsConfiguration represents limits on resource usage across a query instance. Zero or negative values imply no limit.

func (*GlobalLimitsConfiguration) AsLimitManagerOptions added in v0.7.1

func (l *GlobalLimitsConfiguration) AsLimitManagerOptions() cost.LimitManagerOptions

AsLimitManagerOptions converts this configuration to cost.LimitManagerOptions for MaxFetchedDatapoints.

type IngestConfiguration added in v0.4.7

type IngestConfiguration struct {
	// Ingester is the configuration for storage based ingester.
	Ingester ingestm3msg.Configuration `yaml:"ingester"`

	// M3Msg is the configuration for m3msg server.
	M3Msg m3msg.Configuration `yaml:"m3msg"`
}

IngestConfiguration is the configuration for ingestion server.

type LimitsConfiguration added in v0.4.8

type LimitsConfiguration struct {
	// PerQuery configures limits which apply to each query individually.
	PerQuery PerQueryLimitsConfiguration `yaml:"perQuery"`

	// Global configures limits which apply across all queries running on this
	// instance.
	Global GlobalLimitsConfiguration `yaml:"global"`

	// deprecated: use PerQuery.MaxComputedDatapoints instead.
	DeprecatedMaxComputedDatapoints int `yaml:"maxComputedDatapoints"`
}

LimitsConfiguration represents limitations on resource usage in the query instance. Limits are split between per-query and global limits.

func (LimitsConfiguration) MaxComputedDatapoints added in v0.4.8

func (lc LimitsConfiguration) MaxComputedDatapoints() int

MaxComputedDatapoints is a getter providing backwards compatibility between LimitsConfiguration.DeprecatedMaxComputedDatapoints and LimitsConfiguration.PerQuery.PrivateMaxComputedDatapoints. See LimitsConfiguration.PerQuery.PrivateMaxComputedDatapoints for a comment on the semantics.

type LocalConfiguration

type LocalConfiguration struct {
	// Namespaces is the list of namespaces that the local embedded DB has.
	Namespaces []m3.ClusterStaticNamespaceConfiguration `yaml:"namespaces"`
}

LocalConfiguration is the local embedded configuration if running coordinator embedded in the DB.

type MultiProcessConfiguration added in v0.15.0

type MultiProcessConfiguration struct {
	// Enabled is whether to enable multi-process execution.
	Enabled bool `yaml:"enabled"`
	// Count is the number of sub-processes to run, leave zero
	// to auto-detect based on number of CPUs.
	Count int `yaml:"count" validate:"min=0"`
	// PerCPU is the factor of processes to run per CPU, leave
	// zero to use the default of 0.5 per CPU (i.e. one process for
	// every two CPUs).
	PerCPU float64 `yaml:"perCPU" validate:"min=0.0, max=0.0"`
	// GoMaxProcs if set will explicitly set the child GOMAXPROCs env var.
	GoMaxProcs int `yaml:"goMaxProcs"`
}

MultiProcessConfiguration is the multi-process configuration which allows running multiple sub-processes of an instance reusing the same listen ports.

type PerQueryLimitsConfiguration added in v0.7.1

type PerQueryLimitsConfiguration struct {
	// MaxFetchedSeries limits the number of time series returned for any given
	// individual storage node per query, before returning result to query
	// service.
	MaxFetchedSeries int `yaml:"maxFetchedSeries"`

	// MaxFetchedDocs limits the number of index documents matched for any given
	// individual storage node per query, before returning result to query
	// service.
	MaxFetchedDocs int `yaml:"maxFetchedDocs"`

	// RequireExhaustive results in an error if the query exceeds any limit.
	RequireExhaustive bool `yaml:"requireExhaustive"`

	// MaxFetchedDatapoints limits the max number of datapoints allowed to be
	// used by a given query, this is applied at the query service after the
	// result has been returned by a storage node.
	MaxFetchedDatapoints int `yaml:"maxFetchedDatapoints"`

	// PrivateMaxComputedDatapoints limits the number of datapoints that can be
	// returned by a query. It's determined purely
	// from the size of the time range and the step size (end - start / step).
	//
	// N.B.: the hacky "Private" prefix is to indicate that callers should use
	// LimitsConfiguration.MaxComputedDatapoints() instead of accessing
	// this field directly.
	PrivateMaxComputedDatapoints int `yaml:"maxComputedDatapoints"`
}

PerQueryLimitsConfiguration represents limits on resource usage within a single query. Zero or negative values imply no limit.

func (*PerQueryLimitsConfiguration) AsFetchOptionsBuilderLimitsOptions added in v0.15.4

func (l *PerQueryLimitsConfiguration) AsFetchOptionsBuilderLimitsOptions() handleroptions.FetchOptionsBuilderLimitsOptions

AsFetchOptionsBuilderLimitsOptions converts this configuration to handleroptions.FetchOptionsBuilderLimitsOptions.

func (*PerQueryLimitsConfiguration) AsLimitManagerOptions added in v0.7.1

func (l *PerQueryLimitsConfiguration) AsLimitManagerOptions() cost.LimitManagerOptions

AsLimitManagerOptions converts this configuration to cost.LimitManagerOptions for MaxFetchedDatapoints.

type PrometheusQueryConfiguration added in v0.15.0

type PrometheusQueryConfiguration struct {
	// MaxSamplesPerQuery is the limit on fetched samples per query.
	MaxSamplesPerQuery *int `yaml:"maxSamplesPerQuery"`
}

PrometheusQueryConfiguration is the prometheus query engine configuration.

func (PrometheusQueryConfiguration) MaxSamplesPerQueryOrDefault added in v0.15.0

func (c PrometheusQueryConfiguration) MaxSamplesPerQueryOrDefault() int

MaxSamplesPerQueryOrDefault returns the max samples per query or default.

type QueryConfiguration added in v0.14.3

type QueryConfiguration struct {
	// Timeout is the query timeout.
	Timeout *time.Duration `yaml:"timeout"`
	// DefaultEngine is the default query engine.
	DefaultEngine string `yaml:"defaultEngine"`
	// ConsolidationConfiguration are configs for consolidating fetched queries.
	ConsolidationConfiguration ConsolidationConfiguration `yaml:"consolidation"`
	// Prometheus is prometheus client configuration.
	Prometheus PrometheusQueryConfiguration `yaml:"prometheus"`
	// RestrictTags is an optional configuration that can be set to restrict
	// all queries with certain tags by.
	RestrictTags *RestrictTagsConfiguration `yaml:"restrictTags"`
}

QueryConfiguration is the query configuration.

func (QueryConfiguration) RestrictTagsAsStorageRestrictByTag added in v0.15.4

func (c QueryConfiguration) RestrictTagsAsStorageRestrictByTag() (*storage.RestrictByTag, bool, error)

RestrictTagsAsStorageRestrictByTag returns restrict tags as storage options to restrict all queries by default.

func (QueryConfiguration) TimeoutOrDefault added in v0.14.3

func (c QueryConfiguration) TimeoutOrDefault() time.Duration

TimeoutOrDefault returns the configured timeout or default value.

type RPCConfiguration

type RPCConfiguration struct {
	// Enabled determines if coordinator RPC is enabled for remote calls.
	//
	// NB: this is no longer necessary to set to true if RPC is desired; enabled
	// status is inferred based on which other options are provided;
	// this remains for back-compat, and for disabling any existing RPC options.
	Enabled *bool `yaml:"enabled"`

	// ListenAddress is the RPC server listen address.
	ListenAddress string `yaml:"listenAddress"`

	// Remotes are the configuration settings for remote coordinator zones.
	Remotes RemoteConfigurations `yaml:"remotes"`

	// RemoteListenAddresses is the remote listen addresses to call for
	// remote coordinator calls.
	//
	// NB: this is deprecated in favor of using RemoteZones, as setting
	// RemoteListenAddresses will only allow for a single remote zone to be used.
	RemoteListenAddresses []string `yaml:"remoteListenAddresses"`

	// ErrorBehavior overrides the default error behavior for all rpc hosts.
	//
	// NB: defaults to warning on error.
	ErrorBehavior *storage.ErrorBehavior `yaml:"errorBehavior"`

	// ReflectionEnabled will enable reflection on the GRPC server, useful
	// for testing connectivity with grpcurl, etc.
	ReflectionEnabled bool `yaml:"reflectionEnabled"`
}

RPCConfiguration is the RPC configuration for the coordinator for the GRPC server used for remote coordinator to coordinator calls.

type Remote added in v0.10.0

type Remote struct {
	// ErrorBehavior describes what this remote client should do on error.
	ErrorBehavior storage.ErrorBehavior
	// Name is the name for this remote client.
	Name string
	// Addresses are the remote addresses for this client.
	Addresses []string
}

Remote is an option for remote storage.

type RemoteConfiguration added in v0.13.0

type RemoteConfiguration struct {
	// Name is the name for the remote zone.
	Name string `yaml:"name"`
	// RemoteListenAddresses is the remote listen addresses to call for remote
	// coordinator calls in the remote zone.
	RemoteListenAddresses []string `yaml:"remoteListenAddresses"`
	// ErrorBehavior overrides the default error behavior for this host.
	//
	// NB: defaults to warning on error.
	ErrorBehavior *storage.ErrorBehavior `yaml:"errorBehavior"`
}

RemoteConfiguration is the configuration for a single remote host.

type RemoteConfigurations added in v0.13.0

type RemoteConfigurations []RemoteConfiguration

RemoteConfigurations is a set of remote host configurations.

type RemoteOptions added in v0.13.0

type RemoteOptions interface {
	// ServeEnabled describes if this RPC should serve rpc requests.
	ServeEnabled() bool
	// ServeAddress describes the address this RPC server will listening on.
	ServeAddress() string
	// ListenEnabled describes if this RPC should connect to remote clients.
	ListenEnabled() bool
	// ReflectionEnabled describes if this RPC server should have reflection
	// enabled.
	ReflectionEnabled() bool
	// Remotes is a list of remote clients.
	Remotes() []Remote
}

RemoteOptions are the options for RPC configurations.

func RemoteOptionsFromConfig added in v0.13.0

func RemoteOptionsFromConfig(cfg *RPCConfiguration) RemoteOptions

RemoteOptionsFromConfig builds remote options given a set of configs.

type RestrictTagsConfiguration added in v0.15.4

type RestrictTagsConfiguration struct {
	Restrict []StringMatch `yaml:"match"`
	Strip    []string      `yaml:"strip"`
}

RestrictTagsConfiguration applies tag restriction to all queries.

type ResultOptions added in v0.7.1

type ResultOptions struct {
	// KeepNans keeps NaNs before returning query results.
	// The default is false, which matches Prometheus
	KeepNans bool `yaml:"keepNans"`
}

ResultOptions are the result options for query.

type StringMatch added in v0.15.4

type StringMatch struct {
	Name  string `yaml:"name"`
	Type  string `yaml:"type"`
	Value string `yaml:"value"`
}

StringMatch is an easy to use representation of models.Matcher.

type TagFilter added in v0.15.5

type TagFilter struct {
	// Values are the values to filter.
	//
	// NB:If this is unset, all series containing
	// a tag with given `Name` are filtered.
	Values []string `yaml:"values"`
	// Name is the tag name.
	Name string `yaml:"name"`
}

TagFilter is a tag filter.

type TagOptionsConfiguration added in v0.4.8

type TagOptionsConfiguration struct {
	// MetricName specifies the tag name that corresponds to the metric's name tag
	// If not provided, defaults to `__name__`.
	MetricName string `yaml:"metricName"`

	// BucketName specifies the tag name that corresponds to the metric's bucket.
	// If not provided, defaults to `le`.
	BucketName string `yaml:"bucketName"`

	// Scheme determines the default ID generation scheme. Defaults to TypeLegacy.
	Scheme models.IDSchemeType `yaml:"idScheme"`

	// Filters are optional tag filters, removing all series with tags
	// matching the filter from computations.
	Filters []TagFilter `yaml:"filters"`
}

TagOptionsConfiguration is the configuration for shared tag options Currently only name, but can expand to cover deduplication settings, or other relevant options.

type WriteForwardingConfiguration added in v0.13.0

type WriteForwardingConfiguration struct {
	PromRemoteWrite handleroptions.PromWriteHandlerForwardingOptions `yaml:"promRemoteWrite"`
}

WriteForwardingConfiguration is the write forwarding configuration.

Jump to

Keyboard shortcuts

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