Mimir SLIs¶
This page documents Service Level Indicators (SLIs) for monitoring the health of Mimir. To set up Service Level Objectives (SLOs), see Set up SLOs with Sloth.
These metrics are recommended as Service Level Indicators for Mimir. They cover the write path (metric ingestion), read path (query serving), storage, and supporting subsystems.
Write path (distributor)¶
The distributor receives samples from Prometheus and replicates them to ingesters. These metrics measure the health of the ingestion pipeline.
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Total samples received from clients |
|
Gauge |
Number of inflight push requests |
|
Gauge |
Current ingestion rate in samples per second |
|
Counter |
Requests rejected due to instance limits |
|
Histogram |
Samples per push request |
An availability SLI for the write path — the ratio of successful requests to total requests:
1 -
(
sum(rate(cortex_distributor_instance_rejected_requests_total[5m]))
/
sum(rate(cortex_distributor_received_requests_total[5m]))
)
Ingester¶
The ingester receives replicated samples, stores them in TSDB blocks, and ships them to long-term object storage.
Metric |
Type |
Description |
|---|---|---|
|
Gauge |
Number of in-memory series per tenant |
|
Gauge |
Number of active series per tenant |
|
Counter |
Total samples ingested |
|
Counter |
Samples that failed ingestion |
|
Counter |
Requests rejected due to instance limits |
TSDB¶
Metric |
Type |
Description |
|---|---|---|
|
Gauge |
Number of chunks in the TSDB head |
|
Counter |
Failed TSDB block compactions |
|
Counter |
WAL corruption events |
Shipper¶
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Total block uploads to object storage |
|
Counter |
Block upload failures |
|
Gauge |
Timestamp of the oldest block not yet shipped |
Query frontend¶
The query frontend handles query decomposition, queuing, and caching. These metrics measure read-path performance.
Metric |
Type |
Description |
|---|---|---|
|
Histogram |
Time queries spend in the queue before dispatch |
|
Histogram |
Number of retries per query |
|
Counter |
Query result cache hits |
|
Counter |
Query result cache requests |
A query result cache hit ratio SLI:
sum(rate(cortex_frontend_query_result_cache_hits_total[5m]))
/
sum(rate(cortex_frontend_query_result_cache_requests_total[5m]))
Querier¶
Queriers execute PromQL queries against ingesters and store gateways.
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Total blocks queried from store gateways |
|
Counter |
Block consistency checks performed |
|
Counter |
Block consistency checks that failed |
Store gateway¶
Store gateways serve long-term data from object storage.
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Block loading failures |
|
Gauge |
Number of blocks currently loaded |
|
Counter |
Series hash cache hits |
|
Counter |
Series hash cache requests |
HTTP API / gRPC¶
These metrics cover general request health across all Mimir components.
Metric |
Type |
Description |
|---|---|---|
|
Histogram |
Request latency by route, method, and status code |
|
Gauge |
Number of inflight requests across all routes |
An error rate SLI (ratio of 5xx responses to all requests):
sum by (route) (rate(cortex_request_duration_seconds_count{status_code=~"5.."}[5m]))
/
sum by (route) (rate(cortex_request_duration_seconds_count[5m]))
Compactor¶
The compactor merges smaller TSDB blocks into larger ones and applies retention.
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Compaction runs started |
|
Counter |
Compaction runs completed |
|
Counter |
Compaction runs that failed |
|
Gauge |
Timestamp of the last successful compaction run |
Ruler¶
The ruler evaluates PromQL recording and alerting rules.
Metric |
Type |
Description |
|---|---|---|
|
Counter |
Total rule evaluations |
|
Counter |
Failed rule evaluations |
|
Summary |
Rule evaluation duration |
|
Counter |
Alert notifications dropped |
Ring / cluster membership¶
Mimir uses a distributed hash ring for component discovery. Unhealthy members indicate cluster connectivity problems.
Metric |
Type |
Description |
|---|---|---|
|
Gauge |
Ring members by name and state |
|
Gauge |
Tokens in the ring per component |
A ring health SLI (unhealthy members should be 0):
sum by (name) (cortex_ring_members{state="Unhealthy"})