Skip to content
OpenPerf
Esc
↑↓navigate↵open⌘Jpreview
On this page

api-ingest

The OTLP intake. Port 4100.

Accepts OTLP over HTTP at /v1/logs and /v1/traces, as protobuf or JSON, optionally gzipped. The project key comes from Authorization: Bearer <key> or the key query parameter. Logs and spans are queued in Redis and drained into ClickHouse; errors are queued for worker-errors.

Reads PostgreSQL, ClickHouse, Redis, the ingest queue, proxies and logging. All variables below are optional.

Variable Default Description
PORT 4100 HTTP port.
OTLP_MAX_BODY_BYTES 10485760 Largest OTLP body, compressed or not.
INGEST_RATE_LIMIT_PER_MINUTE 10000 Requests per project per minute before 429. 0 turns it off.
INGEST_IP_RATE_LIMIT_PER_MINUTE 10000 Requests per client address per minute. 0 turns it off.
INGEST_AUTH_FAILURE_LIMIT_PER_MINUTE 60 Invalid keys per address per minute before its requests see 429. 0 turns it off.
INGEST_IDEMPOTENCY_WINDOW_MS 900000 How long retried bodies and duplicate errors are recognized and dropped. 0 turns it off.
INGEST_KEY_CACHE_MS 30000 Cache time of a known project key.
INGEST_KEY_NEGATIVE_MS 5000 Cache time of an unknown project key.

Responses

Status When
200 Queued, or the same body was already delivered within the idempotency window. partialSuccess.rejectedSpans counts spans without an id or dated outside the accepted window, partialSuccess.rejectedLogRecords counts log records dated outside it.
400 Malformed body or gzip stream.
401 Invalid project key.
403 The Origin is not in the project’s allowed origins.
413 Body over OTLP_MAX_BODY_BYTES, or rows over INGEST_REQUEST_MAX_BYTES once decoded.
415 Unsupported content type or encoding.
429 A rate limit, too many invalid keys from one address, or a full queue. Retry-After says when to retry.
503 Redis is unreachable. Retry-After: 5.

A request is queued whole or not at all, except for its rejected items: a span or log record dated more than 7 days back or 10 minutes ahead of the server clock is dropped, and so is a span without an id. An error sent twice within the idempotency window, such as both as a span event and a log, is stored once.

An attribute map keeps its first 128 attributes. A key over 256 characters is dropped, and a value is cut at 32768 characters.

Was this page helpful?