Skip to content
HALKON telemetry ingest & retention
all ingest points accepting | regions 6/6 | now — M ev/s | agents — | refreshed —

Telemetry ingest, storage and query

Your servers push telemetry around the clock.
We accept it, keep it in one jurisdiction, and bill per gigabyte.

Halkon terminates long-lived connections from agents running on your hosts, writes what arrives into a regional store, and gives you a query language, charts and alert rules on top. One published price per accepted gigabyte. No per-host licence, no per-seat fee, no surprise egress line.

1 284TB accepted, Aug 2026 Wire-normalised bytes before compression. This is the number invoices are calculated from.
3.10M ev/s peak accepted rate Observed 2026-08-19 13:47 UTC across all six regions. Sustained monthly mean 1.16 M ev/s.
58 200 agents connected Each holds an open HTTP/2 stream to its nearest ingest point across 1 940 accounts.
1.4PB under management Compressed on disk; 11.8 PB logical at a blended 8.4:1 ratio.

Right now

Live counters

These four values are computed in your browser from the current clock against the ingest profile we publish. They are not a live feed — this page is static — but they follow the same daily curve the platform actually runs at, so the shape is honest.

accepted_events_rate — ev/s
accepted_bytes_rate —
events_since_00:00Z —
bytes_since_00:00Z —
ingest_to_query_lag_p95 — s
server_time —
0.0 0.5 1.0 1.5 2.0 1.72 M 00Z 06Z 12Z 18Z 24Z million accepted events per second, all regions, 30-day mean by hour
Fig. 1 — The floor never reaches zero. Agents do not sleep, so the quiet hours still carry 0.66 M ev/s of heartbeat, host metrics and background logs.

The shape of the system

Four hops, one jurisdiction

An agent on your host opens one connection and keeps it. Everything it collects goes up that stream to the ingest point you chose. From there the data is written, indexed and read inside the same region — it is never copied to another region for storage, indexing, backup or support.

REGION BOUNDARY · no copy leaves for storage, index, backup or support YOUR HOSTS hkagent 4.2.1 OTel Collector syslog forwarder disk buffer 512 MiB INGEST POINT TLS 1.3 termination auth, quota, dedup normalise + zstd-3 ack p50 24 ms STORAGE columnar, 2 h blocks 3 copies, one rack apart 8.4:1 blended 15 d — 400 d retention QUERY & ALERTS HKQL v3 charts, dashboards rule eval every 15 s webhook / email out push 24/7 write read customer premises operated by Halkon, inside the chosen jurisdiction your browser or API OTLP · Prometheus remote write · syslog RFC 5424 · HTTP NDJSON — all four terminate at the same ingest point
Fig. 2 — The only leg that crosses a network you do not control is the first one, and it is the one you can buffer.

Four ways in

Protocols accepted at every ingest point

No protocol is a second-class citizen and none costs extra. Pick whatever your fleet already speaks; mix them freely within one account.

OTLP

OpenTelemetry

gRPC on :4317, HTTP/protobuf and HTTP/JSON on :4318. Logs, metrics and traces. Resource attributes are preserved verbatim.

max batch 10 000 · 8 MiB compressed

PROM

Remote write

Protocol v1, snappy-framed protobuf, at /api/v1/prom/write. Labels land as event attributes; __name__ becomes the metric name.

5 M active series per account

SYSLOG

RFC 5424 over TLS

Octet-counted framing per RFC 5425 on :6514. Structured data elements are parsed into attributes; RFC 3164 accepted with a lossy-parse flag.

64 KiB per message

HTTP

Batch JSON / NDJSON

A plain POST to /v1/ingest/logs with gzip or zstd. For build pipelines, cron jobs and anything that cannot host an agent.

1 MiB per event, 512 KiB body

Full limit and retry tables: ingest reference.

Geography is a legal question

Six ingest points, pinned to a jurisdiction

Telemetry is not neutral data. Log lines carry user identifiers, request paths, internal hostnames and sometimes payload fragments. Which court can compel disclosure of that depends on where the bytes physically sit, so we let you pin it and then refuse to move it.

An account is bound to one region at creation. Data written there is stored, indexed, replicated and read there. Cross-region copying is not a setting you can turn on by accident — it requires a signed change order and a new account in the target region.

The second reason is dull physics. A host in Asia writing to a European ingest point pays 160–280 ms per round trip, which turns a 10 000-event batch into a stalled buffer. Local termination keeps acknowledgement under 40 ms for 95% of batches.

Accepted share of the 1 284 TB written in August 2026.
RegionJurisdictionShareLive since
eu-north-1EU / EEA27.1%2021-03
na-east-1North America24.2%2022-01
eu-central-1EU / EEA20.8%2022-06
eu-west-1EU / EEA14.7%2023-02
ap-southeast-1Asia-Pacific9.3%2024-04
sa-east-1South America3.9%2025-09
total6 regions100%—

Latency budget

What an acknowledgement costs

0 10 20 30 2.1 11.4 29.6 31.2 17.3 6.2 1.8 0.4 <5 5–10 10–20 20–40 40–80 80–160 160–320 >320 percent of accepted batches by acknowledgement latency, milliseconds, in-region
Fig. 3 — Red buckets are the ones we treat as a defect. They are dominated by batches that arrive compressed above 6 MiB.

Acknowledgement means durably written to two of three replicas in the region, not merely received. An agent only drops a batch from its buffer after that acknowledgement, which is why the tail matters more than the median.

ack_latency_p5024 ms
ack_latency_p9571 ms
ack_latency_p99138 ms
ingest_to_query_p952.6 s
alert_eval_interval15 s (default)
accept_success_90d99.973 %
Measured, not promised

These figures are the trailing 90-day distribution across all six regions, recomputed at every release. The contractual availability target is lower on purpose — see the service levels.

Storage economics

What we keep and what it compresses to

Billing is on accepted bytes, before compression, because that is the number you can predict from your own fleet. Compression is our problem, not a variable in your invoice — but it is worth knowing, because it is why 400-day retention is affordable at all.

Events are normalised on arrival: timestamps to nanosecond integers, attribute keys interned per block, bodies left byte-for-byte intact. Blocks close every two hours or at 512 MiB, whichever comes first, then get zstd level 3 and an inverted index over attribute keys.

Average accepted event across the whole platform: 412 B. Metrics samples pull that down, multi-kilobyte stack traces pull it up.

metrics 26.1:1 logs 7.2:1 traces 5.8:1 blended 8.4:1 zstd level 3 over 2-hour columnar blocks, 30-day sample 1 284 TB accepted → 152.9 TB written, Aug 2026
Fig. 4 — Metric samples are near-identical row to row, which is why they collapse so far. Do not expect that ratio on free-text logs.

Price

One number you can put in a spreadsheet

Ingest is charged per accepted gigabyte. Retention beyond the included window is charged per gigabyte-month of retained accepted volume. Queries, dashboards, alert rules, seats, agents and API calls are not metered.

Effective 2026-07-01. Prices in USD, excluding any local tax.
  Starter Standard Regional
Accepted ingest, per GB$0.34$0.28$0.24
Retention included15 d30 d30 d
Retention ceiling90 d400 d400 d
Extra retention, per GB-month$0.021$0.019$0.017
Account ingest ceiling50 000 ev/s400 000 ev/snegotiated
Monthly minimumnone$150$1 800

Worked examples, overage behaviour and the retention arithmetic: pricing.

Who sends us data

Three anonymised profiles

We do not publish customer names. These are real usage shapes with the identifying details removed, chosen because they sit at different corners of the cost model.

Profile A

A logistics company running 400 hosts

Mostly structured application logs plus host metrics from the agent. Retention pushed to 180 days for a regulatory audit trail on a filtered subset.

accepted / month0.70 TB
events / s mean640
regioneu-central-1
monthly cost$203.60
Profile B

A payments platform running 2 100 hosts

High metric cardinality, 360-day retention on a 1.2 TB audit slice, everything else dropped at 30 days. Two accounts, two jurisdictions, no data shared between them.

accepted / month9.40 TB
events / s mean8 900
regioneu-north-1 + na-east-1
monthly cost$2 882.80
Profile C

A game studio with a spiky event stream

Launch weekends at fourteen times the weekday floor. Uses the burst allowance rather than a raised ceiling, and accepts shedding on non-critical streams during spikes.

accepted / month31.0 TB
events / s peak186 000
regionap-southeast-1
monthly cost$7 593.00

Next

Ten minutes to first query

Install the agent, paste an ingest key, point one service at it, and run a query. The quick start assumes nothing beyond a shell and outbound TCP 443.

  1. Create an ingest key

    Scoped to one region, one signal set and an optional source prefix. Keys are shown once and stored hashed.

  2. Install hkagent or point your collector

    A 24 MiB static binary, or an OTLP exporter block if you already run a collector.

  3. Confirm acceptance

    The agent prints accepted batch counts; the ingest endpoint returns 202 with a per-batch receipt id.

  4. Query it

    from logs | where service == "checkout" | summarize count() by bin(ts, 1m)