The write path
Every signal follows the same five steps.1
Your service exports over OTLP
An OpenTelemetry SDK or collector exports to the aiAxonIQ receiver.
2
The receiver authenticates and stamps
It validates your license key, applies rate limits, and stamps every record
with your tenant ID.
3
Records are queued
Published to a durable log, partitioned by tenant.
4
A worker batches and writes
Records land in ClickHouse, the telemetry store. Logs are additionally
indexed into OpenSearch for full-text search.
5
Rollups are maintained as data lands
Materialised views roll metrics up into one-minute and one-hour tables, so
a query over a long window does not scan raw samples.
200 OK with an empty OTLP success body as soon as the
batch is queued. That is an acknowledgement of receipt, not of storage — it means
your data is in the pipeline, and it becomes queryable a short time later once the
worker has flushed a batch.
Prometheus remote-write is the one exception: it answers 202 Accepted,
because it is not OTLP and its clients do not read an OTLP response body.
Why your first data can take a moment to appear. Workers batch before
writing, flushing when a batch fills or after a few seconds — whichever comes
first. A single test span is in the small-batch case, so give it a few seconds
before concluding something is wrong.
Your tenant ID is assigned, never sent
The receiver derives your tenant from the license key on the request and stamps it onto every record. Nothing your SDK sends can set or change it. This matters in one practical way: there is no attribute you can add to route data into a different tenant. If you want to separate staging from production, separate them with a resource attribute such asdeployment.environment and
filter on it at query time, or use two accounts. Sending a tenant.id attribute
does nothing.
Which store answers which question
You do not query these directly — the dashboard and API do it for you — but knowing the split explains why some queries offer options others do not.ClickHouse
Logs, spans and metric samples. Backs the Logs Explorer, traces, metrics and
every dashboard chart. Supports field filters and boolean operators.
OpenSearch
A full-text index of your logs. Backs the fuzzy log-search API. It is one
shared index across organizations, isolated by the same organization filter
the analytical store uses — not an index per organization.
PostgreSQL
The control plane — your account, users, alert rules, dashboards and
license-key metadata. No telemetry lives here.
What you need to send data
Three things, in order.- A license key — created in the dashboard, sent as the
X-License-Keyheader. See Create a license key. - An endpoint — the receiver’s OTLP/HTTP address. See Send data with OpenTelemetry.
- An exporter — any OpenTelemetry SDK or the OpenTelemetry Collector. aiAxonIQ speaks standard OTLP, so there is no aiAxonIQ-specific SDK to install and nothing to rewrite if you later point the same exporter somewhere else.
Placeholders used throughout these docs
Values marked above differ per deployment, which is why no single URL appears
in these pages. Get Started in the dashboard renders the ones that are
correct for yours.
Next
Create a license key
The credential every ingest request carries.
Send data with OpenTelemetry
Endpoints, headers, and a first request.