Documentation
¶
Index ¶
- Constants
- Variables
- func SetDefaultLimitsForYAMLUnmarshalling(defaults Limits)
- func ValidateLabels(cfg LabelValidationConfig, userID string, ls []client.LabelAdapter) error
- func ValidateSample(cfg SampleValidationConfig, userID string, metricName string, s client.Sample) error
- type LabelValidationConfig
- type Limits
- type Overrides
- func (o *Overrides) AcceptHASamples(userID string) bool
- func (o *Overrides) CardinalityLimit(userID string) int
- func (o *Overrides) CreationGracePeriod(userID string) time.Duration
- func (o *Overrides) DropLabels(userID string) flagext.StringSlice
- func (o *Overrides) EnforceMetricName(userID string) bool
- func (o *Overrides) HAClusterLabel(userID string) string
- func (o *Overrides) HAReplicaLabel(userID string) string
- func (o *Overrides) IngestionBurstSize(userID string) int
- func (o *Overrides) IngestionRate(userID string) float64
- func (o *Overrides) IngestionRateStrategy() string
- func (o *Overrides) MaxChunksPerQuery(userID string) int
- func (o *Overrides) MaxGlobalSeriesPerMetric(userID string) int
- func (o *Overrides) MaxGlobalSeriesPerUser(userID string) int
- func (o *Overrides) MaxLabelNameLength(userID string) int
- func (o *Overrides) MaxLabelNamesPerSeries(userID string) int
- func (o *Overrides) MaxLabelValueLength(userID string) int
- func (o *Overrides) MaxLocalSeriesPerMetric(userID string) int
- func (o *Overrides) MaxLocalSeriesPerUser(userID string) int
- func (o *Overrides) MaxQueryLength(userID string) time.Duration
- func (o *Overrides) MaxQueryParallelism(userID string) int
- func (o *Overrides) MaxSamplesPerQuery(userID string) int
- func (o *Overrides) MaxSeriesPerQuery(userID string) int
- func (o *Overrides) MinChunkLength(userID string) int
- func (o *Overrides) RejectOldSamples(userID string) bool
- func (o *Overrides) RejectOldSamplesMaxAge(userID string) time.Duration
- type SampleValidationConfig
- type TenantLimits
Constants ¶
const (
LocalIngestionRateStrategy = "local"
GlobalIngestionRateStrategy = "global"
)
Supported values for enum limits
const (
// ErrQueryTooLong is used in chunk store and query frontend.
ErrQueryTooLong = "invalid query, length > limit (%s > %s)"
// RateLimited is one of the values for the reason to discard samples.
// Declared here to avoid duplication in ingester and distributor.
RateLimited = "rate_limited"
)
Variables ¶
var DiscardedSamples = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "cortex_discarded_samples_total",
Help: "The total number of samples that were discarded.",
},
[]string{discardReasonLabel, "user"},
)
DiscardedSamples is a metric of the number of discarded samples, by reason.
Functions ¶
func SetDefaultLimitsForYAMLUnmarshalling ¶ added in v0.6.0
func SetDefaultLimitsForYAMLUnmarshalling(defaults Limits)
SetDefaultLimitsForYAMLUnmarshalling sets global default limits, used when loading Limits from YAML files. This is used to ensure per-tenant limits are defaulted to those values.
func ValidateLabels ¶ added in v0.2.0
func ValidateLabels(cfg LabelValidationConfig, userID string, ls []client.LabelAdapter) error
ValidateLabels returns an err if the labels are invalid.
func ValidateSample ¶ added in v0.2.0
func ValidateSample(cfg SampleValidationConfig, userID string, metricName string, s client.Sample) error
ValidateSample returns an err if the sample is invalid.
Types ¶
type LabelValidationConfig ¶ added in v0.2.0
type LabelValidationConfig interface {
EnforceMetricName(userID string) bool
MaxLabelNamesPerSeries(userID string) int
MaxLabelNameLength(userID string) int
MaxLabelValueLength(userID string) int
}
LabelValidationConfig helps with getting required config to validate labels.
type Limits ¶
type Limits struct {
// Distributor enforced limits.
IngestionRate float64 `yaml:"ingestion_rate"`
IngestionRateStrategy string `yaml:"ingestion_rate_strategy"`
IngestionBurstSize int `yaml:"ingestion_burst_size"`
AcceptHASamples bool `yaml:"accept_ha_samples"`
HAClusterLabel string `yaml:"ha_cluster_label"`
HAReplicaLabel string `yaml:"ha_replica_label"`
DropLabels flagext.StringSlice `yaml:"drop_labels"`
MaxLabelNameLength int `yaml:"max_label_name_length"`
MaxLabelValueLength int `yaml:"max_label_value_length"`
MaxLabelNamesPerSeries int `yaml:"max_label_names_per_series"`
RejectOldSamples bool `yaml:"reject_old_samples"`
RejectOldSamplesMaxAge time.Duration `yaml:"reject_old_samples_max_age"`
CreationGracePeriod time.Duration `yaml:"creation_grace_period"`
EnforceMetricName bool `yaml:"enforce_metric_name"`
// Ingester enforced limits.
MaxSeriesPerQuery int `yaml:"max_series_per_query"`
MaxSamplesPerQuery int `yaml:"max_samples_per_query"`
MaxLocalSeriesPerUser int `yaml:"max_series_per_user"`
MaxLocalSeriesPerMetric int `yaml:"max_series_per_metric"`
MaxGlobalSeriesPerUser int `yaml:"max_global_series_per_user"`
MaxGlobalSeriesPerMetric int `yaml:"max_global_series_per_metric"`
MinChunkLength int `yaml:"min_chunk_length"`
// Querier enforced limits.
MaxChunksPerQuery int `yaml:"max_chunks_per_query"`
MaxQueryLength time.Duration `yaml:"max_query_length"`
MaxQueryParallelism int `yaml:"max_query_parallelism"`
CardinalityLimit int `yaml:"cardinality_limit"`
// Config for overrides, convenient if it goes here. [Deprecated in favor of RuntimeConfig flag in cortex.Config]
PerTenantOverrideConfig string `yaml:"per_tenant_override_config"`
PerTenantOverridePeriod time.Duration `yaml:"per_tenant_override_period"`
}
Limits describe all the limits for users; can be used to describe global default limits via flags, or per-user limits via yaml config.
func (*Limits) RegisterFlags ¶
func (l *Limits) RegisterFlags(f *flag.FlagSet)
RegisterFlags adds the flags required to config this to the given FlagSet
func (*Limits) UnmarshalYAML ¶
func (l *Limits) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the yaml.Unmarshaler interface.
type Overrides ¶
type Overrides struct {
// contains filtered or unexported fields
}
Overrides periodically fetch a set of per-user overrides, and provides convenience functions for fetching the correct value.
func NewOverrides ¶
func NewOverrides(defaults Limits, tenantLimits TenantLimits) (*Overrides, error)
NewOverrides makes a new Overrides.
func (*Overrides) AcceptHASamples ¶
func (o *Overrides) AcceptHASamples(userID string) bool
AcceptHASamples returns whether the distributor should track and accept samples from HA replicas for this user.
func (*Overrides) CardinalityLimit ¶
func (o *Overrides) CardinalityLimit(userID string) int
CardinalityLimit returns the maximum number of timeseries allowed in a query.
func (*Overrides) CreationGracePeriod ¶
func (o *Overrides) CreationGracePeriod(userID string) time.Duration
CreationGracePeriod is misnamed, and actually returns how far into the future we should accept samples.
func (*Overrides) DropLabels ¶ added in v0.6.0
func (o *Overrides) DropLabels(userID string) flagext.StringSlice
DropLabels returns the list of labels to be dropped when ingesting HA samples for the user.
func (*Overrides) EnforceMetricName ¶
func (o *Overrides) EnforceMetricName(userID string) bool
EnforceMetricName whether to enforce the presence of a metric name.
func (*Overrides) HAClusterLabel ¶
func (o *Overrides) HAClusterLabel(userID string) string
HAClusterLabel returns the cluster label to look for when deciding whether to accept a sample from a Prometheus HA replica.
func (*Overrides) HAReplicaLabel ¶
func (o *Overrides) HAReplicaLabel(userID string) string
HAReplicaLabel returns the replica label to look for when deciding whether to accept a sample from a Prometheus HA replica.
func (*Overrides) IngestionBurstSize ¶
func (o *Overrides) IngestionBurstSize(userID string) int
IngestionBurstSize returns the burst size for ingestion rate.
func (*Overrides) IngestionRate ¶
func (o *Overrides) IngestionRate(userID string) float64
IngestionRate returns the limit on ingester rate (samples per second).
func (*Overrides) IngestionRateStrategy ¶ added in v0.6.0
func (o *Overrides) IngestionRateStrategy() string
IngestionRateStrategy returns whether the ingestion rate limit should be individually applied to each distributor instance (local) or evenly shared across the cluster (global).
func (*Overrides) MaxChunksPerQuery ¶
func (o *Overrides) MaxChunksPerQuery(userID string) int
MaxChunksPerQuery returns the maximum number of chunks allowed per query.
func (*Overrides) MaxGlobalSeriesPerMetric ¶ added in v0.4.0
func (o *Overrides) MaxGlobalSeriesPerMetric(userID string) int
MaxGlobalSeriesPerMetric returns the maximum number of series allowed per metric across the cluster.
func (*Overrides) MaxGlobalSeriesPerUser ¶ added in v0.4.0
func (o *Overrides) MaxGlobalSeriesPerUser(userID string) int
MaxGlobalSeriesPerUser returns the maximum number of series a user is allowed to store across the cluster.
func (*Overrides) MaxLabelNameLength ¶
func (o *Overrides) MaxLabelNameLength(userID string) int
MaxLabelNameLength returns maximum length a label name can be.
func (*Overrides) MaxLabelNamesPerSeries ¶
func (o *Overrides) MaxLabelNamesPerSeries(userID string) int
MaxLabelNamesPerSeries returns maximum number of label/value pairs timeseries.
func (*Overrides) MaxLabelValueLength ¶
func (o *Overrides) MaxLabelValueLength(userID string) int
MaxLabelValueLength returns maximum length a label value can be. This also is the maximum length of a metric name.
func (*Overrides) MaxLocalSeriesPerMetric ¶ added in v0.4.0
func (o *Overrides) MaxLocalSeriesPerMetric(userID string) int
MaxLocalSeriesPerMetric returns the maximum number of series allowed per metric in a single ingester.
func (*Overrides) MaxLocalSeriesPerUser ¶ added in v0.4.0
func (o *Overrides) MaxLocalSeriesPerUser(userID string) int
MaxLocalSeriesPerUser returns the maximum number of series a user is allowed to store in a single ingester.
func (*Overrides) MaxQueryLength ¶
func (o *Overrides) MaxQueryLength(userID string) time.Duration
MaxQueryLength returns the limit of the length (in time) of a query.
func (*Overrides) MaxQueryParallelism ¶
func (o *Overrides) MaxQueryParallelism(userID string) int
MaxQueryParallelism returns the limit to the number of sub-queries the frontend will process in parallel.
func (*Overrides) MaxSamplesPerQuery ¶
func (o *Overrides) MaxSamplesPerQuery(userID string) int
MaxSamplesPerQuery returns the maximum number of samples in a query (from the ingester).
func (*Overrides) MaxSeriesPerQuery ¶
func (o *Overrides) MaxSeriesPerQuery(userID string) int
MaxSeriesPerQuery returns the maximum number of series a query is allowed to hit.
func (*Overrides) MinChunkLength ¶ added in v0.2.0
func (o *Overrides) MinChunkLength(userID string) int
MinChunkLength returns the minimum size of chunk that will be saved by ingesters
func (*Overrides) RejectOldSamples ¶
func (o *Overrides) RejectOldSamples(userID string) bool
RejectOldSamples returns true when we should reject samples older than certain age.
func (*Overrides) RejectOldSamplesMaxAge ¶
func (o *Overrides) RejectOldSamplesMaxAge(userID string) time.Duration
RejectOldSamplesMaxAge returns the age at which samples should be rejected.
type SampleValidationConfig ¶ added in v0.2.0
type SampleValidationConfig interface {
RejectOldSamples(userID string) bool
RejectOldSamplesMaxAge(userID string) time.Duration
CreationGracePeriod(userID string) time.Duration
}
SampleValidationConfig helps with getting required config to validate sample.
type TenantLimits ¶ added in v0.6.0
type TenantLimits func(userID string) *Limits
TenantLimits is a function that returns limits for given tenant, or nil, if there are no tenant-specific limits.