config

package
v0.0.0-...-9649366 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2019 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TagOptionsFromConfig

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

TagOptionsFromConfig translates tag option configuration into tag options.

Types

type BackendStorageType

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"
)

type CacheConfiguration

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

CacheConfiguration contains the cache configurations.

type CarbonConfiguration

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

CarbonConfiguration is the configuration for the carbon server.

type CarbonIngesterAggregationConfiguration

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

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

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

type CarbonIngesterConfiguration

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

func (c *CarbonIngesterConfiguration) ListenAddressOrDefault() string

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

func (*CarbonIngesterConfiguration) RulesOrDefault

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

type CarbonIngesterRuleConfiguration

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

CarbonIngesterRuleConfiguration is the configuration struct for a carbon ingestion rule.

type CarbonIngesterStoragePolicyConfiguration

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"`

	// 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"`
}

Configuration is the configuration for the query service.

func (Configuration) LookbackDurationOrDefault

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

LookbackDurationOrDefault validates the LookbackDuration

type DeprecatedQueryConversionCacheConfiguration

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

DeprecatedQueryConversionCacheConfiguration is deprecated: remove from config.

type ExperimentalAPIConfiguration

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

ExperimentalAPIConfiguration is the configuration for the experimental API group.

type Filter

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

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

type GlobalLimitsConfiguration struct {
	// MaxFetchedDatapoints limits the total number of datapoints actually
	// fetched by all queries at any given time.
	MaxFetchedDatapoints int64 `yaml:"maxFetchedDatapoints"`
}

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

func (*GlobalLimitsConfiguration) AsLimitManagerOptions

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

AsLimitManagerOptions converts this configuration to cost.LimitManagerOptions for MaxFetchedDatapoints.

type IngestConfiguration

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

type LimitsConfiguration struct {
	// deprecated: use PerQuery.MaxComputedDatapoints instead.
	DeprecatedMaxComputedDatapoints int64 `yaml:"maxComputedDatapoints"`

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

	// PerQuery configures limits which apply to each query individually.
	PerQuery PerQueryLimitsConfiguration `yaml:"perQuery"`
}

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

func (*LimitsConfiguration) MaxComputedDatapoints

func (lc *LimitsConfiguration) MaxComputedDatapoints() int64

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 PerQueryLimitsConfiguration

type PerQueryLimitsConfiguration struct {
	// 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 int64 `yaml:"maxComputedDatapoints"`

	// MaxFetchedDatapoints limits the number of datapoints actually used by a
	// given query.
	MaxFetchedDatapoints int64 `yaml:"maxFetchedDatapoints"`

	// MaxFetchedSeries limits the number of time series returned by a storage node.
	MaxFetchedSeries int64 `yaml:"maxFetchedSeries"`
}

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

func (*PerQueryLimitsConfiguration) AsFetchOptionsBuilderOptions

func (l *PerQueryLimitsConfiguration) AsFetchOptionsBuilderOptions() handler.FetchOptionsBuilderOptions

AsFetchOptionsBuilderOptions converts this configuration to handler.FetchOptionsBuilderOptions.

func (*PerQueryLimitsConfiguration) AsLimitManagerOptions

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

AsLimitManagerOptions converts this configuration to cost.LimitManagerOptions for MaxFetchedDatapoints.

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

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

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

type RemoteConfigurations []RemoteConfiguration

RemoteConfigurations is a set of remote host configurations.

type RemoteOptions

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

func RemoteOptionsFromConfig(cfg *RPCConfiguration) RemoteOptions

RemoteOptionsFromConfig builds remote options given a set of configs.

type ResultOptions

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 TagOptionsConfiguration

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"`
}

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

type WriteForwardingConfiguration

type WriteForwardingConfiguration struct {
	PromRemoteWrite remote.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