Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
aad1fee
rename overrides to overridesConfig
bogdan-st Aug 15, 2025
60d09fb
initial overrides api draft
bogdan-st Aug 15, 2025
9e8166d
Merge branch 'master' into overrides_api
bogdan-st Aug 15, 2025
f97b319
fix docs and integration tests
bogdan-st Aug 15, 2025
608f1ab
remove from all target
bogdan-st Aug 18, 2025
15f9f3c
remove consul and unneeded flags from test
bogdan-st Aug 20, 2025
a2a7665
missed some
bogdan-st Aug 25, 2025
5e21b22
suggestions
bogdan-st Sep 8, 2025
61632a1
Merge branch 'master' into overrides_api
bogdan-st Sep 8, 2025
dff25e3
sugestions from dsabsay
bogdan-st Sep 20, 2025
8e50e9a
lint
bogdan-st Sep 20, 2025
06195e0
lint2
bogdan-st Sep 20, 2025
8ba408b
modernize?
bogdan-st Sep 20, 2025
9a1bb28
Merge upstream/master into overrides_api
bogdan-st Dec 2, 2025
4d9e7c7
fix import
bogdan-st Dec 2, 2025
83b1b7d
fix sum
bogdan-st Dec 2, 2025
255d648
Merge branch 'master' into overrides_api
friedrichg Jan 27, 2026
d2e8c3a
Missing from rebase
friedrichg Jan 27, 2026
1640ed0
Modernize again
friedrichg Jan 27, 2026
1b33cea
fix merging
friedrichg Jan 27, 2026
5dd9cd7
Modernize it
friedrichg Jan 28, 2026
cd5e8d4
Close bucket when stopping to prevent leakage
friedrichg Jan 28, 2026
3ceffe9
Include initial guide on overrides API
friedrichg Jan 28, 2026
fa29aa7
Make sure limits include maximum
friedrichg Jan 28, 2026
9257ce5
Very unlikely, let's remove it
friedrichg Jan 28, 2026
9cc96fd
Merge pull request #1 from cortexproject/pr/6975
bogdan-st Jan 29, 2026
9336c34
Fix more things
friedrichg Feb 9, 2026
b070ba2
Make sure readers are closed
friedrichg Feb 9, 2026
8277244
Merge branch 'master' into pr/6975
friedrichg Feb 9, 2026
03a9e9d
Fix tests
friedrichg Feb 9, 2026
c431a56
Move tests to its own testing thread
friedrichg Feb 9, 2026
10b4787
After more local testing
friedrichg Feb 10, 2026
ab1b285
Merge pull request #2 from cortexproject/pr/6975
bogdan-st Feb 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions docs/api/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ For the sake of clarity, in this document we have grouped API endpoints by servi
| [Delete Alertmanager configuration](#delete-alertmanager-configuration) | Alertmanager || `DELETE /api/v1/alerts` |
| [Tenant delete request](#tenant-delete-request) | Purger || `POST /purger/delete_tenant` |
| [Tenant delete status](#tenant-delete-status) | Purger || `GET /purger/delete_tenant_status` |
| [Get user overrides](#get-user-overrides) | Overrides || `GET /api/v1/user-overrides` |
| [Set user overrides](#set-user-overrides) | Overrides || `PUT /api/v1/user-overrides` |
Comment thread
friedrichg marked this conversation as resolved.
Outdated
| [Delete user overrides](#delete-user-overrides) | Overrides || `DELETE /api/v1/user-overrides` |
| [Store-gateway ring status](#store-gateway-ring-status) | Store-gateway || `GET /store-gateway/ring` |
| [Compactor ring status](#compactor-ring-status) | Compactor || `GET /compactor/ring` |
| [Get rule files](#get-rule-files) | Configs API (deprecated) || `GET /api/prom/configs/rules` |
Expand Down Expand Up @@ -872,6 +875,64 @@ Returns status of tenant deletion. Output format to be defined. Experimental.

_Requires [authentication](#authentication)._

## Overrides

The Overrides service provides an API for managing user overrides.

### Get user overrides

```
GET /api/v1/user-overrides
```

Get the current overrides for the authenticated tenant. Returns the overrides in JSON format.

_Requires [authentication](#authentication)._

### Set user overrides

```
PUT /api/v1/user-overrides
```

Set or update overrides for the authenticated tenant. The request body should contain a JSON object with the override values.

_Requires [authentication](#authentication)._

### Delete user overrides

```
DELETE /api/v1/user-overrides
```

Delete all overrides for the authenticated tenant. This will revert the tenant to using default values.

_Requires [authentication](#authentication)._

#### Example request body for PUT

```json
{
"ingestion_rate": 50000,
"max_global_series_per_user": 1000000,
"ruler_max_rules_per_rule_group": 100
}
```

#### Supported limits

The following limits can be modified via the API:
- `max_global_series_per_user`
- `max_global_series_per_metric`
- `ingestion_rate`
- `ingestion_burst_size`
- `ruler_max_rules_per_rule_group`
- `ruler_max_rule_groups_per_tenant`

#### Hard limits

Overrides are validated against hard limits defined in the runtime configuration file. If a requested override exceeds the hard limit for the tenant, the request will be rejected with a 400 status code.

## Store-gateway

### Store-gateway ring status
Expand Down
295 changes: 295 additions & 0 deletions docs/configuration/config-file-reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -411,6 +411,300 @@ query_scheduler:
# CLI flag: -query-scheduler.grpc-client-config.connect-timeout
[connect_timeout: <duration> | default = 5s]

overrides:
Comment thread
friedrichg marked this conversation as resolved.
Outdated
# Enable the overrides API module
# CLI flag: -overrides.enabled
[enabled: <boolean> | default = false]
Comment thread
friedrichg marked this conversation as resolved.
Outdated

# Path to the runtime configuration file that can be updated via the overrides
# API
# CLI flag: -overrides.runtime-config-file
[runtime_config_file: <string> | default = "runtime.yaml"]

# Backend storage to use. Supported backends are: s3, gcs, azure, swift,
# filesystem.
# CLI flag: -overrides.backend
[backend: <string> | default = "s3"]

s3:
# The S3 bucket endpoint. It could be an AWS S3 endpoint listed at
# https://docs.aws.amazon.com/general/latest/gr/s3.html or the address of an
# S3-compatible service in hostname:port format.
# CLI flag: -overrides.s3.endpoint
[endpoint: <string> | default = ""]

# S3 region. If unset, the client will issue a S3 GetBucketLocation API call
# to autodetect it.
# CLI flag: -overrides.s3.region
[region: <string> | default = ""]

# S3 bucket name
# CLI flag: -overrides.s3.bucket-name
[bucket_name: <string> | default = ""]

# If enabled, S3 endpoint will use the non-dualstack variant.
# CLI flag: -overrides.s3.disable-dualstack
[disable_dualstack: <boolean> | default = false]

# S3 secret access key
# CLI flag: -overrides.s3.secret-access-key
[secret_access_key: <string> | default = ""]

# S3 access key ID
# CLI flag: -overrides.s3.access-key-id
[access_key_id: <string> | default = ""]

# If enabled, use http:// for the S3 endpoint instead of https://. This
# could be useful in local dev/test environments while using an
# S3-compatible backend storage, like Minio.
# CLI flag: -overrides.s3.insecure
[insecure: <boolean> | default = false]

# The signature version to use for authenticating against S3. Supported
# values are: v4, v2.
# CLI flag: -overrides.s3.signature-version
[signature_version: <string> | default = "v4"]

# The s3 bucket lookup style. Supported values are: auto, virtual-hosted,
# path.
# CLI flag: -overrides.s3.bucket-lookup-type
[bucket_lookup_type: <string> | default = "auto"]

# If true, attach MD5 checksum when upload objects and S3 uses MD5 checksum
# algorithm to verify the provided digest. If false, use CRC32C algorithm
# instead.
# CLI flag: -overrides.s3.send-content-md5
[send_content_md5: <boolean> | default = true]

# The list api version. Supported values are: v1, v2, and ''.
# CLI flag: -overrides.s3.list-objects-version
[list_objects_version: <string> | default = ""]

# The s3_sse_config configures the S3 server-side encryption.
# The CLI flags prefix for this block config is: overrides
[sse: <s3_sse_config>]

http:
# The time an idle connection will remain idle before closing.
# CLI flag: -overrides.s3.http.idle-conn-timeout
[idle_conn_timeout: <duration> | default = 1m30s]

# The amount of time the client will wait for a servers response headers.
# CLI flag: -overrides.s3.http.response-header-timeout
[response_header_timeout: <duration> | default = 2m]

# If the client connects via HTTPS and this option is enabled, the client
# will accept any certificate and hostname.
# CLI flag: -overrides.s3.http.insecure-skip-verify
[insecure_skip_verify: <boolean> | default = false]

# Maximum time to wait for a TLS handshake. 0 means no limit.
# CLI flag: -overrides.s3.tls-handshake-timeout
[tls_handshake_timeout: <duration> | default = 10s]

# The time to wait for a server's first response headers after fully
# writing the request headers if the request has an Expect header. 0 to
# send the request body immediately.
# CLI flag: -overrides.s3.expect-continue-timeout
[expect_continue_timeout: <duration> | default = 1s]

# Maximum number of idle (keep-alive) connections across all hosts. 0
# means no limit.
# CLI flag: -overrides.s3.max-idle-connections
[max_idle_connections: <int> | default = 100]

# Maximum number of idle (keep-alive) connections to keep per-host. If 0,
# a built-in default value is used.
# CLI flag: -overrides.s3.max-idle-connections-per-host
[max_idle_connections_per_host: <int> | default = 100]

# Maximum number of connections per host. 0 means no limit.
# CLI flag: -overrides.s3.max-connections-per-host
[max_connections_per_host: <int> | default = 0]

gcs:
# GCS bucket name
# CLI flag: -overrides.gcs.bucket-name
[bucket_name: <string> | default = ""]

# JSON representing either a Google Developers Console
# client_credentials.json file or a Google Developers service account key
# file. If empty, fallback to Google default logic.
# CLI flag: -overrides.gcs.service-account
[service_account: <string> | default = ""]

azure:
# Azure storage account name
# CLI flag: -overrides.azure.account-name
[account_name: <string> | default = ""]

# Azure storage account key
# CLI flag: -overrides.azure.account-key
[account_key: <string> | default = ""]

# The values of `account-name` and `endpoint-suffix` values will not be
# ignored if `connection-string` is set. Use this method over `account-key`
# if you need to authenticate via a SAS token or if you use the Azurite
# emulator.
# CLI flag: -overrides.azure.connection-string
[connection_string: <string> | default = ""]

# Azure storage container name
# CLI flag: -overrides.azure.container-name
[container_name: <string> | default = ""]

# Azure storage endpoint suffix without schema. The account name will be
# prefixed to this value to create the FQDN
# CLI flag: -overrides.azure.endpoint-suffix
[endpoint_suffix: <string> | default = ""]

# Number of retries for recoverable errors
# CLI flag: -overrides.azure.max-retries
[max_retries: <int> | default = 20]

# Deprecated: Azure storage MSI resource. It will be set automatically by
# Azure SDK.
# CLI flag: -overrides.azure.msi-resource
[msi_resource: <string> | default = ""]

# Azure storage MSI resource managed identity client Id. If not supplied
# default Azure credential will be used. Set it to empty if you need to
# authenticate via Azure Workload Identity.
# CLI flag: -overrides.azure.user-assigned-id
[user_assigned_id: <string> | default = ""]

http:
# The time an idle connection will remain idle before closing.
# CLI flag: -overrides.azure.http.idle-conn-timeout
[idle_conn_timeout: <duration> | default = 1m30s]

# The amount of time the client will wait for a servers response headers.
# CLI flag: -overrides.azure.http.response-header-timeout
[response_header_timeout: <duration> | default = 2m]

# If the client connects via HTTPS and this option is enabled, the client
# will accept any certificate and hostname.
# CLI flag: -overrides.azure.http.insecure-skip-verify
[insecure_skip_verify: <boolean> | default = false]

# Maximum time to wait for a TLS handshake. 0 means no limit.
# CLI flag: -overrides.azure.tls-handshake-timeout
[tls_handshake_timeout: <duration> | default = 10s]

# The time to wait for a server's first response headers after fully
# writing the request headers if the request has an Expect header. 0 to
# send the request body immediately.
# CLI flag: -overrides.azure.expect-continue-timeout
[expect_continue_timeout: <duration> | default = 1s]

# Maximum number of idle (keep-alive) connections across all hosts. 0
# means no limit.
# CLI flag: -overrides.azure.max-idle-connections
[max_idle_connections: <int> | default = 100]

# Maximum number of idle (keep-alive) connections to keep per-host. If 0,
# a built-in default value is used.
# CLI flag: -overrides.azure.max-idle-connections-per-host
[max_idle_connections_per_host: <int> | default = 100]

# Maximum number of connections per host. 0 means no limit.
# CLI flag: -overrides.azure.max-connections-per-host
[max_connections_per_host: <int> | default = 0]

swift:
# OpenStack Swift authentication API version. 0 to autodetect.
# CLI flag: -overrides.swift.auth-version
[auth_version: <int> | default = 0]

# OpenStack Swift authentication URL
# CLI flag: -overrides.swift.auth-url
[auth_url: <string> | default = ""]

# OpenStack Swift application credential ID.
# CLI flag: -overrides.swift.application-credential-id
[application_credential_id: <string> | default = ""]

# OpenStack Swift application credential name.
# CLI flag: -overrides.swift.application-credential-name
[application_credential_name: <string> | default = ""]

# OpenStack Swift application credential secret.
# CLI flag: -overrides.swift.application-credential-secret
[application_credential_secret: <string> | default = ""]

# OpenStack Swift username.
# CLI flag: -overrides.swift.username
[username: <string> | default = ""]

# OpenStack Swift user's domain name.
# CLI flag: -overrides.swift.user-domain-name
[user_domain_name: <string> | default = ""]

# OpenStack Swift user's domain ID.
# CLI flag: -overrides.swift.user-domain-id
[user_domain_id: <string> | default = ""]

# OpenStack Swift user ID.
# CLI flag: -overrides.swift.user-id
[user_id: <string> | default = ""]

# OpenStack Swift API key.
# CLI flag: -overrides.swift.password
[password: <string> | default = ""]

# OpenStack Swift user's domain ID.
# CLI flag: -overrides.swift.domain-id
[domain_id: <string> | default = ""]

# OpenStack Swift user's domain name.
# CLI flag: -overrides.swift.domain-name
[domain_name: <string> | default = ""]

# OpenStack Swift project ID (v2,v3 auth only).
# CLI flag: -overrides.swift.project-id
[project_id: <string> | default = ""]

# OpenStack Swift project name (v2,v3 auth only).
# CLI flag: -overrides.swift.project-name
[project_name: <string> | default = ""]

# ID of the OpenStack Swift project's domain (v3 auth only), only needed if
# it differs the from user domain.
# CLI flag: -overrides.swift.project-domain-id
[project_domain_id: <string> | default = ""]

# Name of the OpenStack Swift project's domain (v3 auth only), only needed
# if it differs from the user domain.
# CLI flag: -overrides.swift.project-domain-name
[project_domain_name: <string> | default = ""]

# OpenStack Swift Region to use (v2,v3 auth only).
# CLI flag: -overrides.swift.region-name
[region_name: <string> | default = ""]

# Name of the OpenStack Swift container to put chunks in.
# CLI flag: -overrides.swift.container-name
[container_name: <string> | default = ""]

# Max retries on requests error.
# CLI flag: -overrides.swift.max-retries
[max_retries: <int> | default = 3]

# Time after which a connection attempt is aborted.
# CLI flag: -overrides.swift.connect-timeout
[connect_timeout: <duration> | default = 10s]

# Time after which an idle request is aborted. The timeout watchdog is reset
# each time some data is received, so the timeout triggers after X time no
# data is received on a request.
# CLI flag: -overrides.swift.request-timeout
[request_timeout: <duration> | default = 5s]

filesystem:
# Local filesystem storage directory.
# CLI flag: -overrides.filesystem.dir
[dir: <string> | default = ""]

# The tracing_config configures backends cortex uses.
[tracing: <tracing_config>]
```
Expand Down Expand Up @@ -6077,6 +6371,7 @@ The `s3_sse_config` configures the S3 server-side encryption. The supported CLI

- `alertmanager-storage`
- `blocks-storage`
- `overrides`
- `ruler-storage`
- `runtime-config`

Expand Down
Loading
Loading