diff --git a/CHANGELOG.md b/CHANGELOG.md index 5918e4df529..429fae9183a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ * [CHANGE] Store Gateway: Remove `idle_timeout`, `max_conn_age`, `pool_size`, `min_idle_conns` fields for Redis index cache and caching bucket. #5448 * [CHANGE] Store Gateway: Add flag `-store-gateway.sharding-ring.zone-stable-shuffle-sharding` to enable store gateway to use zone stable shuffle sharding. #5489 * [CHANGE] Bucket Index: Add `series_max_size` and `chunk_max_size` to bucket index. #5489 +* [CHANGE] StoreGateway: Rename `cortex_bucket_store_chunk_pool_returned_bytes_total` and `cortex_bucket_store_chunk_pool_requested_bytes_total` to `cortex_bucket_store_chunk_pool_operation_bytes_total`. #5552 * [CHANGE] Query Frontend/Querier: Make build info API disabled by default and add feature flag `api.build-info-enabled` to enable it. #5533 * [FEATURE] Store Gateway: Add `max_downloaded_bytes_per_request` to limit max bytes to download per store gateway request. * [FEATURE] Added 2 flags `-alertmanager.alertmanager-client.grpc-max-send-msg-size` and ` -alertmanager.alertmanager-client.grpc-max-recv-msg-size` to configure alert manager grpc client message size limits. #5338 diff --git a/pkg/storegateway/chunk_bytes_pool.go b/pkg/storegateway/chunk_bytes_pool.go index fee8ac40266..9972e59c4dc 100644 --- a/pkg/storegateway/chunk_bytes_pool.go +++ b/pkg/storegateway/chunk_bytes_pool.go @@ -10,8 +10,7 @@ type chunkBytesPool struct { pool *pool.BucketedBytes // Metrics. - requestedBytes prometheus.Counter - returnedBytes prometheus.Counter + poolByteStats *prometheus.CounterVec } func newChunkBytesPool(minBucketSize, maxBucketSize int, maxChunkPoolBytes uint64, reg prometheus.Registerer) (*chunkBytesPool, error) { @@ -22,14 +21,10 @@ func newChunkBytesPool(minBucketSize, maxBucketSize int, maxChunkPoolBytes uint6 return &chunkBytesPool{ pool: upstream, - requestedBytes: promauto.With(reg).NewCounter(prometheus.CounterOpts{ - Name: "cortex_bucket_store_chunk_pool_requested_bytes_total", - Help: "Total bytes requested to chunk bytes pool.", - }), - returnedBytes: promauto.With(reg).NewCounter(prometheus.CounterOpts{ - Name: "cortex_bucket_store_chunk_pool_returned_bytes_total", - Help: "Total bytes returned by the chunk bytes pool.", - }), + poolByteStats: promauto.With(reg).NewCounterVec(prometheus.CounterOpts{ + Name: "cortex_bucket_store_chunk_pool_operation_bytes_total", + Help: "Total bytes number of bytes pooled by operation.", + }, []string{"operation", "stats"}), }, nil } @@ -39,12 +34,14 @@ func (p *chunkBytesPool) Get(sz int) (*[]byte, error) { return buffer, err } - p.requestedBytes.Add(float64(sz)) - p.returnedBytes.Add(float64(cap(*buffer))) + p.poolByteStats.WithLabelValues("get", "requested").Add(float64(sz)) + p.poolByteStats.WithLabelValues("get", "cap").Add(float64(cap(*buffer))) return buffer, err } func (p *chunkBytesPool) Put(b *[]byte) { + p.poolByteStats.WithLabelValues("put", "len").Add(float64(len(*b))) + p.poolByteStats.WithLabelValues("put", "cap").Add(float64(cap(*b))) p.pool.Put(b) } diff --git a/pkg/storegateway/chunk_bytes_pool_test.go b/pkg/storegateway/chunk_bytes_pool_test.go index 3ddb3380b61..dc8f1e317c3 100644 --- a/pkg/storegateway/chunk_bytes_pool_test.go +++ b/pkg/storegateway/chunk_bytes_pool_test.go @@ -19,20 +19,23 @@ func TestChunkBytesPool_Get(t *testing.T) { reg := prometheus.NewPedanticRegistry() p, err := newChunkBytesPool(cortex_tsdb.ChunkPoolDefaultMinBucketSize, cortex_tsdb.ChunkPoolDefaultMaxBucketSize, 0, reg) require.NoError(t, err) - + testBytes := []byte("test") _, err = p.Get(store.EstimatedMaxChunkSize - 1) require.NoError(t, err) - _, err = p.Get(store.EstimatedMaxChunkSize + 1) + b, err := p.Get(store.EstimatedMaxChunkSize + 1) require.NoError(t, err) + *b = append(*b, testBytes...) + + p.Put(b) + assert.NoError(t, testutil.GatherAndCompare(reg, bytes.NewBufferString(fmt.Sprintf(` - # HELP cortex_bucket_store_chunk_pool_requested_bytes_total Total bytes requested to chunk bytes pool. - # TYPE cortex_bucket_store_chunk_pool_requested_bytes_total counter - cortex_bucket_store_chunk_pool_requested_bytes_total %d - - # HELP cortex_bucket_store_chunk_pool_returned_bytes_total Total bytes returned by the chunk bytes pool. - # TYPE cortex_bucket_store_chunk_pool_returned_bytes_total counter - cortex_bucket_store_chunk_pool_returned_bytes_total %d - `, store.EstimatedMaxChunkSize*2, store.EstimatedMaxChunkSize*3)))) + # HELP cortex_bucket_store_chunk_pool_operation_bytes_total Total bytes number of bytes pooled by operation. + # TYPE cortex_bucket_store_chunk_pool_operation_bytes_total counter + cortex_bucket_store_chunk_pool_operation_bytes_total{operation="get",stats="cap"} %d + cortex_bucket_store_chunk_pool_operation_bytes_total{operation="get",stats="requested"} %d + cortex_bucket_store_chunk_pool_operation_bytes_total{operation="put",stats="cap"} %d + cortex_bucket_store_chunk_pool_operation_bytes_total{operation="put",stats="len"} %d + `, store.EstimatedMaxChunkSize*3, store.EstimatedMaxChunkSize*2, store.EstimatedMaxChunkSize*2, len(testBytes))))) }