Skip to content
Talk to our solutions team

Observability

Observability collects logs, traces and metrics from your services and serves queries over them. It is split in two, and the split matters when you are operating it:

your services
│ logs · traces · metrics
┌──────────────┐ ┌───────────────┐ ┌──────────────┐
│ Collector │ ─────▶ │ Storage │ ◀───── │ Querier │
│ accept, │ │ per tenant │ │ reads across │
│ process, │ │ │ │ signals │
│ route │ └───────────────┘ └──────────────┘
└──────────────┘

The collector accepts telemetry, processes it and writes it to per-tenant storage. The querier reads it back. They scale on different axes — the collector on ingest volume, the querier on how many people are looking — which is why they are separate services rather than one.

SignalAnswersCost driver
LogsWhat happened, in detailVolume — the largest bill, usually
MetricsHow much, how often, how fastCardinality, not volume
TracesWhere the time went across servicesSampling rate

Each has a different failure mode when it grows. Logs get expensive linearly and you notice. Metrics get expensive combinatorially and you do not — one new high-cardinality label on an existing metric multiplies its series count, and nothing warns you before the bill.

Telemetry is collected and stored per tenant. This is a data boundary, not tidiness — a shared observability stack that mixes tenants leaks one customer’s operational detail into another’s queries.

Deploying for the first time? Configure the collector’s processors before you turn everything on, not after the first bill. The two that matter most are metric_filter — which drops metrics by name and strips high-cardinality labels — and the collection interval, which multiplies everything else.

Investigating cost? Start with cardinality, not volume. A single unbounded label such as a user agent or a request id turns one metric into millions of series, and it is almost always the answer. Strip those labels at the collector and move them onto spans, where high cardinality belongs.

  • Usage measures business time — human, AI, idle in a process. Observability measures system behaviour.
  • Audit is a tamper-evident compliance record, not a log stream.
  • Ops Blocks — the rest of the operations surface