From 0a7eff41a0141eaf7ade0490cf65afacd55574a2 Mon Sep 17 00:00:00 2001 From: thecraftman Date: Mon, 3 Aug 2026 22:18:37 +0100 Subject: [PATCH] Document request size and name limits for metrics ingest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The limits page covered event ingest only, so there was no documented answer for "what is the request size limit for metrics ingest?" — a question that comes up in support. Adds a "Limits on ingested metrics" section covering the maximum request size (4 MiB, applied to the uncompressed payload), the metric name length limit, and the attribute name/value length limits, plus the resulting 413 and partial_success behaviour. Cross-links it from the event ingest limits table and from the Metrics page. Values verified against the MetricsDB router configuration and the limit enforcement in its ingest path. Co-Authored-By: Claude Opus 5 (1M context) --- .../(documentation)/query-data/metrics.mdx | 2 ++ .../docs/(documentation)/reference/limits.mdx | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/content/docs/(documentation)/query-data/metrics.mdx b/content/docs/(documentation)/query-data/metrics.mdx index fb6651f34..22d78e99e 100644 --- a/content/docs/(documentation)/query-data/metrics.mdx +++ b/content/docs/(documentation)/query-data/metrics.mdx @@ -46,6 +46,8 @@ You can ingest OTel metrics the same way you ingest other types of OTel data. For more information, see [Send OpenTelemetry data to Axiom](/send-data/opentelemetry). +For the maximum request size and the other limits that apply to metrics ingestion, see [Limits on ingested metrics](/reference/limits#limits-on-ingested-metrics). + The `/v1/metrics` endpoint only supports the `application/x-protobuf` content type. JSON format isn’t supported for metrics ingestion. diff --git a/content/docs/(documentation)/reference/limits.mdx b/content/docs/(documentation)/reference/limits.mdx index fbbe64411..95f3efdcc 100644 --- a/content/docs/(documentation)/reference/limits.mdx +++ b/content/docs/(documentation)/reference/limits.mdx @@ -55,7 +55,7 @@ The following limits are applied to all accounts, irrespective of the pricing pl ### Limits on ingested data -The table below summarizes the limits Axiom applies to each data ingest. These limits are independent of your pricing plan. +The table below summarizes the limits Axiom applies to each data ingest. These limits are independent of your pricing plan. For metrics, see [Limits on ingested metrics](#limits-on-ingested-metrics). | | Limit | | ---------------------------- | --------- | @@ -72,6 +72,25 @@ If you try to ingest data that exceeds these limits, Axiom does the following: - +Infty - -Infty +### Limits on ingested metrics + +The limits below apply to OpenTelemetry metrics that you send to the `/v1/metrics` endpoint. They’re separate from the event ingest limits above and independent of your pricing plan. + +| | Limit | +| ------------------------------ | --------------------------- | +| Maximum request size | 4 MiB (4,194,304 bytes) | +| Maximum metric name length | 256 bytes | +| Maximum attribute name length | 256 bytes | +| Maximum attribute value length | 1 KiB (1,024 bytes) | + +The maximum request size applies to the uncompressed payload. Axiom accepts gzip, zstd, brotli, and deflate compression, and compressing requests reduces the bandwidth you use. Axiom checks the request size after decompressing the request, so compression doesn’t allow you to send more data in a single request. + +If a request exceeds the maximum request size, Axiom rejects it with the HTTP status code `413`. The OpenTelemetry Collector treats this status code as a permanent error, so it drops the batch instead of retrying it. + +To keep requests within the limit, use the `batch` processor in your OpenTelemetry Collector configuration and set `send_batch_max_size`. Whether a given batch size stays within 4 MiB depends on the number of attributes that your data points carry. If you receive `413` responses, reduce `send_batch_max_size`. For an example configuration, see [Send OpenTelemetry data to Axiom](/send-data/opentelemetry). + +If a metric name or an attribute exceeds the limits above, Axiom doesn’t reject the whole request. It responds with the HTTP status code `200` and an OpenTelemetry `partial_success` message that reports the number of rejected data points. + ### Special fields Axiom creates the following two fields automatically for a new dataset: