Documentation
¶
Index ¶
- Constants
- type Config
- type Limits
- type ListToMap
- type Overrides
- func (o *Overrides) BlockRetention(userID string) time.Duration
- func (o *Overrides) IngestionBurstSizeBytes(userID string) int
- func (o *Overrides) IngestionRateLimitBytes(userID string) float64
- func (o *Overrides) IngestionRateStrategy() string
- func (o *Overrides) MaxBytesPerTrace(userID string) int
- func (o *Overrides) MaxGlobalTracesPerUser(userID string) int
- func (o *Overrides) MaxLocalTracesPerUser(userID string) int
- func (o *Overrides) MaxSearchBytesPerTrace(userID string) int
- func (o *Overrides) SearchTagsAllowList(userID string) map[string]struct{}
- func (o *Overrides) WriteStatusRuntimeConfig(w io.Writer, r *http.Request) error
Constants ¶
const (
// LocalIngestionRateStrategy indicates that this limit can be evaluated in local terms only
LocalIngestionRateStrategy = "local"
// GlobalIngestionRateStrategy indicates that an attempt should be made to consider this limit across the entire Tempo cluster
GlobalIngestionRateStrategy = "global"
// ErrorPrefixLiveTracesExceeded is used to flag batches from the ingester that were rejected b/c they had too many traces
ErrorPrefixLiveTracesExceeded = "LIVE_TRACES_EXCEEDED:"
// ErrorPrefixTraceTooLarge is used to flag batches from the ingester that were rejected b/c they exceeded the single trace limit
ErrorPrefixTraceTooLarge = "TRACE_TOO_LARGE:"
// ErrorPrefixRateLimited is used to flag batches that have exceeded the spans/second of the tenant
ErrorPrefixRateLimited = "RATE_LIMITED:"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶ added in v1.2.0
type Config struct {
Defaults *Limits `yaml:"defaults"`
PerTenantOverrides perTenantOverrides `yaml:",inline"`
}
Config is a struct used to print the complete runtime config (defaults + overrides)
type Limits ¶
type Limits struct {
// Distributor enforced limits.
IngestionRateStrategy string `yaml:"ingestion_rate_strategy" json:"ingestion_rate_strategy"`
IngestionRateLimitBytes int `yaml:"ingestion_rate_limit_bytes" json:"ingestion_rate_limit_bytes"`
IngestionBurstSizeBytes int `yaml:"ingestion_burst_size_bytes" json:"ingestion_burst_size_bytes"`
SearchTagsAllowList ListToMap `yaml:"search_tags_allow_list" json:"search_tags_allow_list"`
// Ingester enforced limits.
MaxLocalTracesPerUser int `yaml:"max_traces_per_user" json:"max_traces_per_user"`
MaxGlobalTracesPerUser int `yaml:"max_global_traces_per_user" json:"max_global_traces_per_user"`
MaxBytesPerTrace int `yaml:"max_bytes_per_trace" json:"max_bytes_per_trace"`
MaxSearchBytesPerTrace int `yaml:"max_search_bytes_per_trace" json:"max_search_bytes_per_trace"`
// Compactor enforced limits.
BlockRetention model.Duration `yaml:"block_retention" json:"block_retention"`
// Configuration for overrides, convenient if it goes here.
PerTenantOverrideConfig string `yaml:"per_tenant_override_config" json:"per_tenant_override_config"`
PerTenantOverridePeriod model.Duration `yaml:"per_tenant_override_period" json:"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
type ListToMap ¶ added in v1.2.0
type ListToMap map[string]struct{}
func (ListToMap) MarshalJSON ¶ added in v1.2.0
func (l ListToMap) MarshalJSON() ([]byte, error)
MarshalJSON implements the Marshal interface of the json pkg.
func (ListToMap) MarshalYAML ¶ added in v1.2.0
func (l ListToMap) MarshalYAML() (interface{}, error)
MarshalYAML implements the Marshal interface of the yaml pkg.
func (*ListToMap) UnmarshalJSON ¶ added in v1.2.0
func (l *ListToMap) UnmarshalJSON(b []byte) error
UnmarshalJSON implements the Unmarshal interface of the json pkg.
func (*ListToMap) UnmarshalYAML ¶ added in v1.2.0
func (l *ListToMap) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML implements the Unmarshaler interface of the yaml pkg.
type Overrides ¶
type Overrides struct {
services.Service
// 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) (*Overrides, error)
NewOverrides makes a new Overrides. We store the supplied limits in a global variable to ensure per-tenant limits are defaulted to those values. As such, the last call to NewOverrides will become the new global defaults.
func (*Overrides) BlockRetention ¶ added in v0.6.0
func (o *Overrides) BlockRetention(userID string) time.Duration
BlockRetention is the duration of the block retention for this tenant
func (*Overrides) IngestionBurstSizeBytes ¶ added in v0.7.0
func (o *Overrides) IngestionBurstSizeBytes(userID string) int
IngestionBurstSizeBytes is the burst size in spans allowed for this tenant
func (*Overrides) IngestionRateLimitBytes ¶ added in v0.7.0
func (o *Overrides) IngestionRateLimitBytes(userID string) float64
IngestionRateLimitBytes is the number of spans per second allowed for this tenant
func (*Overrides) IngestionRateStrategy ¶
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) MaxBytesPerTrace ¶ added in v0.7.0
func (o *Overrides) MaxBytesPerTrace(userID string) int
MaxBytesPerTrace returns the maximum size of a single trace in bytes allowed for a user.
func (*Overrides) MaxGlobalTracesPerUser ¶
func (o *Overrides) MaxGlobalTracesPerUser(userID string) int
MaxGlobalTracesPerUser returns the maximum number of traces a user is allowed to store across the cluster.
func (*Overrides) MaxLocalTracesPerUser ¶
func (o *Overrides) MaxLocalTracesPerUser(userID string) int
MaxLocalTracesPerUser returns the maximum number of traces a user is allowed to store in a single ingester.
func (*Overrides) MaxSearchBytesPerTrace ¶ added in v1.2.0
func (o *Overrides) MaxSearchBytesPerTrace(userID string) int
MaxSearchBytesPerTrace returns the maximum size of search data for trace (in bytes) allowed for a user.
func (*Overrides) SearchTagsAllowList ¶ added in v1.2.0
func (o *Overrides) SearchTagsAllowList(userID string) map[string]struct{}
SearchTagsAllowList is the list of tags to be extracted for search, for this tenant
func (*Overrides) WriteStatusRuntimeConfig ¶ added in v1.2.0
func (o *Overrides) WriteStatusRuntimeConfig(w io.Writer, r *http.Request) error