Documentation ¶
Index ¶
- func TagOptionsFromConfig(cfg TagOptionsConfiguration) (models.TagOptions, error)
- type BackendStorageType
- type CacheConfiguration
- type CarbonConfiguration
- type CarbonIngesterAggregationConfiguration
- type CarbonIngesterConfiguration
- type CarbonIngesterRuleConfiguration
- type CarbonIngesterStoragePolicyConfiguration
- type ClusterManagementConfiguration
- type Configuration
- type ConsolidationConfiguration
- type DeprecatedQueryConversionCacheConfiguration
- type ExperimentalAPIConfiguration
- type Filter
- type FilterConfiguration
- type GlobalLimitsConfiguration
- type IngestConfiguration
- type LimitsConfiguration
- type LocalConfiguration
- type MultiProcessConfiguration
- type PerQueryLimitsConfiguration
- type PrometheusQueryConfiguration
- type QueryConfiguration
- type RPCConfiguration
- type Remote
- type RemoteConfiguration
- type RemoteConfigurations
- type RemoteOptions
- type RestrictTagsConfiguration
- type ResultOptions
- type StringMatch
- type TagFilter
- type TagOptionsConfiguration
- type WriteForwardingConfiguration
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 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"` }
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
func (c *CarbonIngesterAggregationConfiguration) TypeOrDefault() aggregation.Type
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
func (c *CarbonIngesterConfiguration) RulesOrDefault(namespaces m3.ClusterNamespaces) []CarbonIngesterRuleConfiguration
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"` // 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.