Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a configuration for an index cache ttl
Browse files Browse the repository at this point in the history
Signed-off-by: SungJin1212 <tjdwls1201@gmail.com>
SungJin1212 committed Oct 13, 2024
1 parent d3778ce commit 05bca36
Showing 5 changed files with 31 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -8,6 +8,7 @@
* [FEATURE] Ruler: Minimize chances of missed rule group evaluations that can occur due to OOM kills, bad underlying nodes, or due to an unhealthy ruler that appears in the ring as healthy. This feature is enabled via `-ruler.enable-ha-evaluation` flag. #6129
* [FEATURE] Store Gateway: Add an in-memory chunk cache. #6245
* [FEATURE] Chunk Cache: Support multi level cache and add metrics. #6249
* [ENHANCEMENT] Index Cache: Add a configuration for an index cache ttl. #6234
* [ENHANCEMENT] Ingester: Add `blocks-storage.tsdb.wal-compression-type` to support zstd wal compression type. #6232
* [ENHANCEMENT] Query Frontend: Add info field to query response. #6207
* [ENHANCEMENT] Query Frontend: Add peakSample in query stats response. #6188
8 changes: 8 additions & 0 deletions docs/blocks-storage/querier.md
Original file line number Diff line number Diff line change
@@ -660,6 +660,10 @@ blocks_storage:
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.index-ttl
[index_ttl: <duration> | default = 24h]

redis:
# Comma separated list of redis addresses. Supported prefixes are: dns+
# (looked up as an A/AAAA query), dnssrv+ (looked up as a SRV query,
@@ -790,6 +794,10 @@ blocks_storage:
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.index-ttl
[index_ttl: <duration> | default = 24h]

multilevel:
# The maximum number of concurrent asynchronous operations can occur
# when backfilling cache items.
8 changes: 8 additions & 0 deletions docs/blocks-storage/store-gateway.md
Original file line number Diff line number Diff line change
@@ -757,6 +757,10 @@ blocks_storage:
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.index-ttl
[index_ttl: <duration> | default = 24h]

redis:
# Comma separated list of redis addresses. Supported prefixes are: dns+
# (looked up as an A/AAAA query), dnssrv+ (looked up as a SRV query,
@@ -887,6 +891,10 @@ blocks_storage:
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.index-ttl
[index_ttl: <duration> | default = 24h]

multilevel:
# The maximum number of concurrent asynchronous operations can occur
# when backfilling cache items.
8 changes: 8 additions & 0 deletions docs/configuration/config-file-reference.md
Original file line number Diff line number Diff line change
@@ -1194,6 +1194,10 @@ bucket_store:
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.memcached.index-ttl
[index_ttl: <duration> | default = 24h]

redis:
# Comma separated list of redis addresses. Supported prefixes are: dns+
# (looked up as an A/AAAA query), dnssrv+ (looked up as a SRV query,
@@ -1323,6 +1327,10 @@ bucket_store:
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.enabled-items
[enabled_items: <list of string> | default = []]

# How long to cache an index for a block.
# CLI flag: -blocks-storage.bucket-store.index-cache.redis.index-ttl
[index_ttl: <duration> | default = 24h]

multilevel:
# The maximum number of concurrent asynchronous operations can occur when
# backfilling cache items.
10 changes: 6 additions & 4 deletions pkg/storage/tsdb/index_cache.go
Original file line number Diff line number Diff line change
@@ -157,6 +157,7 @@ func (cfg *InMemoryIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, pr
type MemcachedIndexCacheConfig struct {
ClientConfig MemcachedClientConfig `yaml:",inline"`
EnabledItems []string `yaml:"enabled_items"`
IndexTTL time.Duration `yaml:"index_ttl"`
}

func (cfg *MemcachedIndexCacheConfig) Validate() error {
@@ -169,16 +170,19 @@ func (cfg *MemcachedIndexCacheConfig) Validate() error {
func (cfg *MemcachedIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string) {
cfg.ClientConfig.RegisterFlagsWithPrefix(f, prefix)
f.Var((*flagext.StringSlice)(&cfg.EnabledItems), prefix+"enabled-items", "Selectively cache index item types. Supported values are Postings, ExpandedPostings and Series")
f.DurationVar(&cfg.IndexTTL, prefix+"index-ttl", defaultTTL, "How long to cache an index for a block.")
}

type RedisIndexCacheConfig struct {
ClientConfig RedisClientConfig `yaml:",inline"`
EnabledItems []string `yaml:"enabled_items"`
IndexTTL time.Duration `yaml:"index_ttl"`
}

func (cfg *RedisIndexCacheConfig) RegisterFlagsWithPrefix(f *flag.FlagSet, prefix string) {
cfg.ClientConfig.RegisterFlagsWithPrefix(f, prefix)
f.Var((*flagext.StringSlice)(&cfg.EnabledItems), prefix+"enabled-items", "Selectively cache index item types. Supported values are Postings, ExpandedPostings and Series")
f.DurationVar(&cfg.IndexTTL, prefix+"index-ttl", defaultTTL, "How long to cache an index for a block.")
}

func (cfg *RedisIndexCacheConfig) Validate() error {
@@ -217,8 +221,7 @@ func NewIndexCache(cfg IndexCacheConfig, logger log.Logger, registerer prometheu
if err != nil {
return nil, err
}
// TODO(yeya24): expose TTL
cache, err := storecache.NewRemoteIndexCache(logger, c, nil, iReg, defaultTTL)
cache, err := storecache.NewRemoteIndexCache(logger, c, nil, iReg, cfg.Memcached.IndexTTL)
if err != nil {
return nil, err
}
@@ -229,8 +232,7 @@ func NewIndexCache(cfg IndexCacheConfig, logger log.Logger, registerer prometheu
if err != nil {
return nil, err
}
// TODO(yeya24): expose TTL
cache, err := storecache.NewRemoteIndexCache(logger, c, nil, iReg, defaultTTL)
cache, err := storecache.NewRemoteIndexCache(logger, c, nil, iReg, cfg.Redis.IndexTTL)
if err != nil {
return nil, err
}

0 comments on commit 05bca36

Please sign in to comment.