tsdb

package
v1.16.0-rc.0 Latest Latest
Warning

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

Go to latest
Published: Nov 9, 2023 License: Apache-2.0 Imports: 38 Imported by: 3

Documentation

Index

Constants

View Source
const (
	CacheBackendMemcached = "memcached"
	CacheBackendRedis     = "redis"
)
View Source
const (
	// TenantIDExternalLabel is the external label containing the tenant ID,
	// set when shipping blocks to the storage.
	TenantIDExternalLabel = "__org_id__"

	// IngesterIDExternalLabel is the external label containing the ingester ID,
	// set when shipping blocks to the storage.
	IngesterIDExternalLabel = "__ingester_id__"

	// How often are open TSDBs checked for being idle and closed.
	DefaultCloseIdleTSDBInterval = 5 * time.Minute

	// How often to check for tenant deletion mark.
	DeletionMarkCheckInterval = 1 * time.Hour

	// Default minimum bucket size (bytes) of the chunk pool.
	ChunkPoolDefaultMinBucketSize = store.EstimatedMaxChunkSize

	// Default maximum bucket size (bytes) of the chunk pool.
	ChunkPoolDefaultMaxBucketSize = 50e6
)
View Source
const (
	// IndexCacheBackendInMemory is the value for the in-memory index cache backend.
	IndexCacheBackendInMemory = "inmemory"

	// IndexCacheBackendMemcached is the value for the memcached index cache backend.
	IndexCacheBackendMemcached = "memcached"

	// IndexCacheBackendRedis is the value for the redis index cache backend.
	IndexCacheBackendRedis = "redis"

	// IndexCacheBackendDefault is the value for the default index cache backend.
	IndexCacheBackendDefault = IndexCacheBackendInMemory
)
View Source
const TenantDeletionMarkPath = "markers/tenant-deletion-mark.json"

Relative to user-specific prefix.

Variables

This section is empty.

Functions

func AllUsers added in v1.6.0

func AllUsers(_ string) (bool, error)

AllUsers returns true to each call and should be used whenever the UsersScanner should not filter out any user due to sharding.

func CreateCachingBucket added in v1.2.0

func CreateCachingBucket(chunksConfig ChunksCacheConfig, metadataConfig MetadataCacheConfig, bkt objstore.Bucket, logger log.Logger, reg prometheus.Registerer) (objstore.Bucket, error)

func HashBlockID added in v1.1.0

func HashBlockID(id ulid.ULID) uint32

HashBlockID returns a 32-bit hash of the block ID useful for ring-based sharding.

func IsOneOfTheExpectedErrors added in v1.16.0

func NewIndexCache added in v0.7.0

func NewIndexCache(cfg IndexCacheConfig, logger log.Logger, registerer prometheus.Registerer) (storecache.IndexCache, error)

NewIndexCache creates a new index cache based on the input configuration.

func TenantDeletionMarkExists added in v1.6.0

func TenantDeletionMarkExists(ctx context.Context, bkt objstore.BucketReader, userID string) (bool, error)

Checks for deletion mark for tenant. Errors other than "object not found" are returned.

func WriteTenantDeletionMark added in v1.6.0

func WriteTenantDeletionMark(ctx context.Context, bkt objstore.Bucket, userID string, mark *TenantDeletionMark) error

Uploads deletion mark to the tenant location in the bucket.

Types

type BlocksStorageConfig added in v1.3.0

type BlocksStorageConfig struct {
	Bucket      bucket.Config     `yaml:",inline"`
	BucketStore BucketStoreConfig `` /* 141-byte string literal not displayed */
	TSDB        TSDBConfig        `yaml:"tsdb"`
}

BlocksStorageConfig holds the config information for the blocks storage.

func (*BlocksStorageConfig) RegisterFlags added in v1.3.0

func (cfg *BlocksStorageConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers the TSDB flags

func (*BlocksStorageConfig) Validate added in v1.3.0

func (cfg *BlocksStorageConfig) Validate() error

Validate the config.

type BucketIndexConfig added in v1.7.0

type BucketIndexConfig struct {
	Enabled               bool          `yaml:"enabled"`
	UpdateOnErrorInterval time.Duration `yaml:"update_on_error_interval"`
	IdleTimeout           time.Duration `yaml:"idle_timeout"`
	MaxStalePeriod        time.Duration `yaml:"max_stale_period"`
}

func (*BucketIndexConfig) RegisterFlagsWithPrefix added in v1.7.0

func (cfg *BucketIndexConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

type BucketStoreConfig added in v0.6.0

type BucketStoreConfig struct {
	SyncDir                  string              `yaml:"sync_dir"`
	SyncInterval             time.Duration       `yaml:"sync_interval"`
	MaxConcurrent            int                 `yaml:"max_concurrent"`
	MaxInflightRequests      int                 `yaml:"max_inflight_requests"`
	TenantSyncConcurrency    int                 `yaml:"tenant_sync_concurrency"`
	BlockSyncConcurrency     int                 `yaml:"block_sync_concurrency"`
	MetaSyncConcurrency      int                 `yaml:"meta_sync_concurrency"`
	ConsistencyDelay         time.Duration       `yaml:"consistency_delay"`
	IndexCache               IndexCacheConfig    `yaml:"index_cache"`
	ChunksCache              ChunksCacheConfig   `yaml:"chunks_cache"`
	MetadataCache            MetadataCacheConfig `yaml:"metadata_cache"`
	IgnoreDeletionMarksDelay time.Duration       `yaml:"ignore_deletion_mark_delay"`
	IgnoreBlocksWithin       time.Duration       `yaml:"ignore_blocks_within"`
	BucketIndex              BucketIndexConfig   `yaml:"bucket_index"`

	// Chunk pool.
	MaxChunkPoolBytes           uint64 `yaml:"max_chunk_pool_bytes"`
	ChunkPoolMinBucketSizeBytes int    `yaml:"chunk_pool_min_bucket_size_bytes" doc:"hidden"`
	ChunkPoolMaxBucketSizeBytes int    `yaml:"chunk_pool_max_bucket_size_bytes" doc:"hidden"`

	// Controls whether index-header lazy loading is enabled.
	IndexHeaderLazyLoadingEnabled     bool          `yaml:"index_header_lazy_loading_enabled"`
	IndexHeaderLazyLoadingIdleTimeout time.Duration `yaml:"index_header_lazy_loading_idle_timeout"`

	// Controls whether lazy expanded posting optimization is enabled or not.
	LazyExpandedPostingsEnabled bool `yaml:"lazy_expanded_postings_enabled"`

	// Controls the partitioner, used to aggregate multiple GET object API requests.
	// The config option is hidden until experimental.
	PartitionerMaxGapBytes uint64 `yaml:"partitioner_max_gap_bytes" doc:"hidden"`

	// Controls the estimated size to fetch for series and chunk in Store Gateway. Using
	// a large value might cause data overfetch while a small value might need to refetch.
	EstimatedMaxSeriesSizeBytes uint64 `yaml:"estimated_max_series_size_bytes" doc:"hidden"`
	EstimatedMaxChunkSizeBytes  uint64 `yaml:"estimated_max_chunk_size_bytes" doc:"hidden"`

	// Controls what is the ratio of postings offsets store will hold in memory.
	// Larger value will keep less offsets, which will increase CPU cycles needed for query touching those postings.
	// It's meant for setups that want low baseline memory pressure and where less traffic is expected.
	// On the contrary, smaller value will increase baseline memory usage, but improve latency slightly.
	// 1 will keep all in memory. Default value is the same as in Prometheus which gives a good balance.
	PostingOffsetsInMemSampling int `yaml:"postings_offsets_in_mem_sampling" doc:"hidden"`

	// Controls how many series to fetch per batch in Store Gateway. Default value is 10000.
	SeriesBatchSize int `yaml:"series_batch_size"`
}

BucketStoreConfig holds the config information for Bucket Stores used by the querier and store-gateway.

func (*BucketStoreConfig) RegisterFlags added in v0.6.0

func (cfg *BucketStoreConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers the BucketStore flags

func (*BucketStoreConfig) Validate added in v1.0.0

func (cfg *BucketStoreConfig) Validate() error

Validate the config.

type CacheBackend added in v1.2.0

type CacheBackend struct {
	Backend   string                `yaml:"backend"`
	Memcached MemcachedClientConfig `yaml:"memcached"`
	Redis     RedisClientConfig     `yaml:"redis"`
}

func (*CacheBackend) Validate added in v1.2.0

func (cfg *CacheBackend) Validate() error

Validate the config.

type ChunksCacheConfig added in v1.2.0

type ChunksCacheConfig struct {
	CacheBackend `yaml:",inline"`

	SubrangeSize        int64         `yaml:"subrange_size"`
	MaxGetRangeRequests int           `yaml:"max_get_range_requests"`
	AttributesTTL       time.Duration `yaml:"attributes_ttl"`
	SubrangeTTL         time.Duration `yaml:"subrange_ttl"`
}

func (*ChunksCacheConfig) RegisterFlagsWithPrefix added in v1.2.0

func (cfg *ChunksCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*ChunksCacheConfig) Validate added in v1.2.0

func (cfg *ChunksCacheConfig) Validate() error

type DurationList

type DurationList []time.Duration

DurationList is the block ranges for a tsdb

func (*DurationList) Set

func (d *DurationList) Set(s string) error

Set implements the flag.Value interface

func (*DurationList) String

func (d *DurationList) String() string

String implements the flag.Value interface

func (*DurationList) ToMilliseconds added in v0.6.0

func (d *DurationList) ToMilliseconds() []int64

ToMilliseconds returns the duration list in milliseconds

type InMemoryIndexCacheConfig added in v1.0.0

type InMemoryIndexCacheConfig struct {
	MaxSizeBytes uint64   `yaml:"max_size_bytes"`
	EnabledItems []string `yaml:"enabled_items"`
}

func (*InMemoryIndexCacheConfig) RegisterFlagsWithPrefix added in v1.0.0

func (cfg *InMemoryIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*InMemoryIndexCacheConfig) Validate added in v1.16.0

func (cfg *InMemoryIndexCacheConfig) Validate() error

type IndexCacheConfig added in v1.0.0

type IndexCacheConfig struct {
	Backend   string                    `yaml:"backend"`
	InMemory  InMemoryIndexCacheConfig  `yaml:"inmemory"`
	Memcached MemcachedIndexCacheConfig `yaml:"memcached"`
	Redis     RedisIndexCacheConfig     `yaml:"redis"`
}

func (*IndexCacheConfig) RegisterFlags added in v1.0.0

func (cfg *IndexCacheConfig) RegisterFlags(f *flag.FlagSet)

func (*IndexCacheConfig) RegisterFlagsWithPrefix added in v1.0.0

func (cfg *IndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*IndexCacheConfig) Validate added in v1.0.0

func (cfg *IndexCacheConfig) Validate() error

Validate the config.

type MemcachedClientConfig added in v1.2.0

type MemcachedClientConfig struct {
	Addresses              string        `yaml:"addresses"`
	Timeout                time.Duration `yaml:"timeout"`
	MaxIdleConnections     int           `yaml:"max_idle_connections"`
	MaxAsyncConcurrency    int           `yaml:"max_async_concurrency"`
	MaxAsyncBufferSize     int           `yaml:"max_async_buffer_size"`
	MaxGetMultiConcurrency int           `yaml:"max_get_multi_concurrency"`
	MaxGetMultiBatchSize   int           `yaml:"max_get_multi_batch_size"`
	MaxItemSize            int           `yaml:"max_item_size"`
	AutoDiscovery          bool          `yaml:"auto_discovery"`
}

func (*MemcachedClientConfig) GetAddresses added in v1.2.0

func (cfg *MemcachedClientConfig) GetAddresses() []string

func (*MemcachedClientConfig) RegisterFlagsWithPrefix added in v1.2.0

func (cfg *MemcachedClientConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (MemcachedClientConfig) ToMemcachedClientConfig added in v1.2.0

func (cfg MemcachedClientConfig) ToMemcachedClientConfig() cacheutil.MemcachedClientConfig

func (*MemcachedClientConfig) Validate added in v1.2.0

func (cfg *MemcachedClientConfig) Validate() error

Validate the config.

type MemcachedIndexCacheConfig added in v1.0.0

type MemcachedIndexCacheConfig struct {
	ClientConfig MemcachedClientConfig `yaml:",inline"`
	EnabledItems []string              `yaml:"enabled_items"`
}

func (*MemcachedIndexCacheConfig) RegisterFlagsWithPrefix added in v1.0.0

func (cfg *MemcachedIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*MemcachedIndexCacheConfig) Validate added in v1.0.0

func (cfg *MemcachedIndexCacheConfig) Validate() error

type MetadataCacheConfig added in v1.2.0

type MetadataCacheConfig struct {
	CacheBackend `yaml:",inline"`

	TenantsListTTL          time.Duration `yaml:"tenants_list_ttl"`
	TenantBlocksListTTL     time.Duration `yaml:"tenant_blocks_list_ttl"`
	ChunksListTTL           time.Duration `yaml:"chunks_list_ttl"`
	MetafileExistsTTL       time.Duration `yaml:"metafile_exists_ttl"`
	MetafileDoesntExistTTL  time.Duration `yaml:"metafile_doesnt_exist_ttl"`
	MetafileContentTTL      time.Duration `yaml:"metafile_content_ttl"`
	MetafileMaxSize         int           `yaml:"metafile_max_size_bytes"`
	MetafileAttributesTTL   time.Duration `yaml:"metafile_attributes_ttl"`
	BlockIndexAttributesTTL time.Duration `yaml:"block_index_attributes_ttl"`
	BucketIndexContentTTL   time.Duration `yaml:"bucket_index_content_ttl"`
	BucketIndexMaxSize      int           `yaml:"bucket_index_max_size_bytes"`
}

func (*MetadataCacheConfig) RegisterFlagsWithPrefix added in v1.2.0

func (cfg *MetadataCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*MetadataCacheConfig) Validate added in v1.2.0

func (cfg *MetadataCacheConfig) Validate() error

type RedisClientConfig added in v1.15.0

type RedisClientConfig struct {
	Addresses  string `yaml:"addresses"`
	Username   string `yaml:"username"`
	Password   string `yaml:"password"`
	DB         int    `yaml:"db"`
	MasterName string `yaml:"master_name"`

	MaxGetMultiConcurrency int `yaml:"max_get_multi_concurrency"`
	GetMultiBatchSize      int `yaml:"get_multi_batch_size"`
	MaxSetMultiConcurrency int `yaml:"max_set_multi_concurrency"`
	SetMultiBatchSize      int `yaml:"set_multi_batch_size"`
	MaxAsyncConcurrency    int `yaml:"max_async_concurrency"`
	MaxAsyncBufferSize     int `yaml:"max_async_buffer_size"`

	DialTimeout  time.Duration `yaml:"dial_timeout"`
	ReadTimeout  time.Duration `yaml:"read_timeout"`
	WriteTimeout time.Duration `yaml:"write_timeout"`

	TLSEnabled bool             `yaml:"tls_enabled"`
	TLS        tls.ClientConfig `yaml:",inline"`

	// If not zero then client-side caching is enabled.
	// Client-side caching is when data is stored in memory
	// instead of fetching data each time.
	// See https://redis.io/docs/manual/client-side-caching/ for info.
	CacheSize int `yaml:"cache_size"`
}

func (*RedisClientConfig) RegisterFlagsWithPrefix added in v1.15.0

func (cfg *RedisClientConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*RedisClientConfig) ToRedisClientConfig added in v1.15.0

func (cfg *RedisClientConfig) ToRedisClientConfig() cacheutil.RedisClientConfig

func (*RedisClientConfig) Validate added in v1.15.0

func (cfg *RedisClientConfig) Validate() error

Validate the config.

type RedisIndexCacheConfig added in v1.16.0

type RedisIndexCacheConfig struct {
	ClientConfig RedisClientConfig `yaml:",inline"`
	EnabledItems []string          `yaml:"enabled_items"`
}

func (*RedisIndexCacheConfig) RegisterFlagsWithPrefix added in v1.16.0

func (cfg *RedisIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string)

func (*RedisIndexCacheConfig) Validate added in v1.16.0

func (cfg *RedisIndexCacheConfig) Validate() error

type TSDBConfig added in v1.3.0

type TSDBConfig struct {
	Dir                       string        `yaml:"dir"`
	BlockRanges               DurationList  `yaml:"block_ranges_period"`
	Retention                 time.Duration `yaml:"retention_period"`
	ShipInterval              time.Duration `yaml:"ship_interval"`
	ShipConcurrency           int           `yaml:"ship_concurrency"`
	HeadCompactionInterval    time.Duration `yaml:"head_compaction_interval"`
	HeadCompactionConcurrency int           `yaml:"head_compaction_concurrency"`
	HeadCompactionIdleTimeout time.Duration `yaml:"head_compaction_idle_timeout"`
	HeadChunksWriteBufferSize int           `yaml:"head_chunks_write_buffer_size_bytes"`
	StripeSize                int           `yaml:"stripe_size"`
	WALCompressionEnabled     bool          `yaml:"wal_compression_enabled"`
	WALSegmentSizeBytes       int           `yaml:"wal_segment_size_bytes"`
	FlushBlocksOnShutdown     bool          `yaml:"flush_blocks_on_shutdown"`
	CloseIdleTSDBTimeout      time.Duration `yaml:"close_idle_tsdb_timeout"`
	// The size of the in-memory queue used before flushing chunks to the disk.
	HeadChunksWriteQueueSize int `yaml:"head_chunks_write_queue_size"`

	// MaxTSDBOpeningConcurrencyOnStartup limits the number of concurrently opening TSDB's during startup.
	MaxTSDBOpeningConcurrencyOnStartup int `yaml:"max_tsdb_opening_concurrency_on_startup"`

	// If true, user TSDBs are not closed on shutdown. Only for testing.
	// If false (default), user TSDBs are closed to make sure all resources are released and closed properly.
	KeepUserTSDBOpenOnShutdown bool `yaml:"-"`

	// How often to check for idle TSDBs for closing. DefaultCloseIdleTSDBInterval is not suitable for testing, so tests can override.
	CloseIdleTSDBInterval time.Duration `yaml:"-"`

	// Positive value enables experimental support for exemplars. 0 or less to disable.
	MaxExemplars int `yaml:"max_exemplars"`

	// Enable snapshotting of in-memory TSDB data on disk when shutting down.
	MemorySnapshotOnShutdown bool `yaml:"memory_snapshot_on_shutdown"`

	// OutOfOrderCapMax is maximum capacity for OOO chunks (in samples).
	OutOfOrderCapMax int64 `yaml:"out_of_order_cap_max"`
}

TSDBConfig holds the config for TSDB opened in the ingesters.

func (*TSDBConfig) BlocksDir added in v1.3.0

func (cfg *TSDBConfig) BlocksDir(userID string) string

BlocksDir returns the directory path where TSDB blocks and wal should be stored by the ingester

func (*TSDBConfig) IsBlocksShippingEnabled added in v1.8.0

func (cfg *TSDBConfig) IsBlocksShippingEnabled() bool

IsShippingEnabled returns whether blocks shipping is enabled.

func (*TSDBConfig) RegisterFlags added in v1.3.0

func (cfg *TSDBConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers the TSDBConfig flags.

func (*TSDBConfig) Validate added in v1.3.0

func (cfg *TSDBConfig) Validate() error

Validate the config.

type TenantDeletionMark added in v1.6.0

type TenantDeletionMark struct {
	// Unix timestamp when deletion marker was created.
	DeletionTime int64 `json:"deletion_time"`

	// Unix timestamp when cleanup was finished.
	FinishedTime int64 `json:"finished_time,omitempty"`
}

func NewTenantDeletionMark added in v1.7.0

func NewTenantDeletionMark(deletionTime time.Time) *TenantDeletionMark

func ReadTenantDeletionMark added in v1.7.0

func ReadTenantDeletionMark(ctx context.Context, bkt objstore.BucketReader, userID string) (*TenantDeletionMark, error)

Returns tenant deletion mark for given user, if it exists. If it doesn't exist, returns nil mark, and no error.

type UsersScanner added in v1.6.0

type UsersScanner struct {
	// contains filtered or unexported fields
}

func NewUsersScanner added in v1.6.0

func NewUsersScanner(bucketClient objstore.Bucket, isOwned func(userID string) (bool, error), logger log.Logger) *UsersScanner

func (*UsersScanner) ScanUsers added in v1.6.0

func (s *UsersScanner) ScanUsers(ctx context.Context) (users, markedForDeletion []string, err error)

ScanUsers returns a fresh list of users found in the storage, that are not marked for deletion, and list of users marked for deletion.

If sharding is enabled, returned lists contains only the users owned by this instance.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL