config

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 29, 2020 License: Apache-2.0 Imports: 19 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 CarbonConfiguration added in v0.5.0

type CarbonConfiguration struct {
	// Ingester if set defines an ingester to run for carbon.
	Ingester *CarbonIngesterConfiguration `yaml:"ingester"`
	// AggregateNamespacesAllData configures whether all aggregate
	// namespaces contain entire copies of the data set.
	// This affects whether queries can be optimized or not, if false
	// they cannot be since it's unclear if data matching an expression
	// sits in one or many or none of the aggregate namespaces so all
	// must be queried, but if true then it can be determined based
	// on the query range whether a single namespace can fulfill the
	// entire query and if so to only fetch from that one aggregated namespace.
	AggregateNamespacesAllData bool `yaml:"aggregateNamespacesAllData"`
	// ShiftTimeStart sets a constant time to shift start by.
	ShiftTimeStart time.Duration `yaml:"shiftTimeStart"`
	// ShiftTimeEnd sets a constant time to shift end by.
	ShiftTimeEnd time.Duration `yaml:"shiftTimeEnd"`
	// ShiftStepsStart sets a constant set of steps to shift start by.
	ShiftStepsStart int `yaml:"shiftStepsStart"`
	// ShiftStepsEnd sets a constant set of steps to shift end by.
	ShiftStepsEnd int `yaml:"shiftStepsEnd"`
	// ShiftStepsStartWhenAtResolutionBoundary sets a constant set of steps to
	// shift start by if and only if the start is an exact match to the
	// resolution boundary of a query.
	ShiftStepsStartWhenAtResolutionBoundary *int `yaml:"shiftStepsStartWhenAtResolutionBoundary"`
	// ShiftStepsEndWhenAtResolutionBoundary sets a constant set of steps to
	// shift end by if and only if the end is an exact match to the
	// resolution boundary of a query.
	ShiftStepsEndWhenAtResolutionBoundary *int `yaml:"shiftStepsEndWhenAtResolutionBoundary"`
	// ShiftStepsStartWhenEndAtResolutionBoundary sets a constant set of steps to
	// shift start by if and only if the end is an exact match to the resolution boundary
	// of a query AND the start is not an exact match to the resolution boundary.
	ShiftStepsStartWhenEndAtResolutionBoundary *int `yaml:"shiftStepsStartWhenEndAtResolutionBoundary"`
	// ShiftStepsEndWhenStartAtResolutionBoundary sets a constant set of steps to
	// shift end by if and only if the start is an exact match to the resolution boundary
	// of a query AND the end is not an exact match to the resolution boundary.
	ShiftStepsEndWhenStartAtResolutionBoundary *int `yaml:"shiftStepsEndWhenStartAtResolutionBoundary"`
	// RenderPartialStart sets whether to render partial datapoints when
	// the start time is between a datapoint's resolution step size.
	RenderPartialStart bool `yaml:"renderPartialStart"`
	// RenderPartialEnd sets whether to render partial datapoints when
	// the end time is between a datapoint's resolution step size.
	RenderPartialEnd bool `yaml:"renderPartialEnd"`
	// RenderSeriesAllNaNs will render series that have only NaNs for entire
	// output instead of returning an empty array of datapoints.
	RenderSeriesAllNaNs bool `yaml:"renderSeriesAllNaNs"`
	// CompileEscapeAllNotOnlyQuotes will escape all characters when using a backslash
	// in a quoted string rather than just reserving for escaping quotes.
	CompileEscapeAllNotOnlyQuotes bool `yaml:"compileEscapeAllNotOnlyQuotes"`
}

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 {
	ListenAddress  string                             `yaml:"listenAddress"`
	MaxConcurrency int                                `yaml:"maxConcurrency"`
	Rewrite        CarbonIngesterRewriteConfiguration `yaml:"rewrite"`
	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 CarbonIngesterRewriteConfiguration added in v1.0.1

type CarbonIngesterRewriteConfiguration struct {
	// Cleanup will perform:
	// - Trailing/leading dot elimination.
	// - Double dot elimination.
	// - Irregular char replacement with underscores (_), currently irregular
	//   is defined as not being in [0-9a-zA-Z-_:#].
	Cleanup bool `yaml:"cleanup"`
}

CarbonIngesterRewriteConfiguration is the configuration for rewriting metrics at ingestion.

type CarbonIngesterRuleConfiguration added in v0.5.0

type CarbonIngesterRuleConfiguration struct {
	Pattern     string                                     `yaml:"pattern"`
	Contains    string                                     `yaml:"contains"`
	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 *string `yaml:"listenAddress"`

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

	// StoreMetricsType controls if metrics type is stored or not.
	StoreMetricsType *bool `yaml:"storeMetricsType"`

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

	// Debug configuration.
	Debug config.DebugConfiguration `yaml:"debug"`
}

Configuration is the configuration for the query service.

func (*Configuration) ListenAddressOrDefault added in v1.0.0

func (c *Configuration) ListenAddressOrDefault() string

ListenAddressOrDefault returns the listen address or default.

func (*Configuration) LoggingOrDefault added in v1.0.0

func (c *Configuration) LoggingOrDefault() xlog.Configuration

LoggingOrDefault returns the logging config or default.

func (Configuration) LookbackDurationOrDefault added in v0.5.0

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

LookbackDurationOrDefault validates the LookbackDuration

func (*Configuration) MetricsOrDefault added in v1.0.0

func (c *Configuration) MetricsOrDefault() *instrument.MetricsConfiguration

MetricsOrDefault returns the metrics config or default.

func (*Configuration) WriteWorkerPoolOrDefault added in v1.0.0

func (c *Configuration) WriteWorkerPoolOrDefault() xconfig.WorkerPoolPolicy

WriteWorkerPoolOrDefault returns the write worker pool config or default.

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

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

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

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.

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 TypeQuoted.
	Scheme models.IDSchemeType `yaml:"idScheme"`

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

	// AllowTagNameDuplicates allows for duplicate tags to appear on series.
	AllowTagNameDuplicates bool `yaml:"allowTagNameDuplicates"`

	// AllowTagValueEmpty allows for empty tags to appear on series.
	AllowTagValueEmpty bool `yaml:"allowTagValueEmpty"`
}

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