Logs, metrics and traces in one hosted platform — priced so you can afford to keep the data you actually need when something breaks at 3am.
Free tier, no card required. Point an OTLP exporter at us and you're done.
The problem
Ingest-priced observability quietly turns every debug log into a line item, so teams turn logging down — and then an incident arrives and the evidence isn't there.
A good quarter becomes a budget conversation. Per-gigabyte pricing means success is indistinguishable from cost overrun, and the only lever anyone reaches for is retention.
Head-based sampling drops exactly the rare request you'll be asked about. The p99 you need to explain is the one that got discarded on the way in.
Running Loki, Mimir and Tempo yourself is cheap on paper and expensive in on-call. Three stateful systems is three things to shard, upgrade and get paged about.
Whale is built on one columnar store instead of several specialised ones, which is structurally cheaper to operate — and we price accordingly rather than to what the market will bear. Keep full-fidelity data and stop rationing it.
Getting started
Whale speaks OTLP natively over HTTP and gRPC. If you already emit OpenTelemetry, this is a config change — not a re-instrumentation project.
exporters: otlphttp/whale: endpoint: https://ingest.whale.balajitech.xyz headers: x-api-key: ${WHALE_API_KEY}
# environment variables, nothing else changes OTEL_EXPORTER_OTLP_ENDPOINT=https://ingest.whale.balajitech.xyz OTEL_EXPORTER_OTLP_HEADERS=x-api-key=$WHALE_API_KEY
What you get
Not a log viewer with a roadmap. These ship today, on every paid plan.
The reason the three signals share a store. Follow a trace into a span waterfall with its correlated logs and the service metrics around it — one click, not three tabs.
service:api severity>=ERROR body:"timeout" | last 1h — with a severity histogram and a live tail that streams as it happens.
Throughput, error rate, p50/p95/p99 and Apdex per service, plus a dependency map built from your trace topology rather than a config file you have to maintain.
Errors grouped into issues with counts, first and last seen, and the traces behind them. The Sentry-shaped view, over telemetry you're already sending.
SLOs with error budgets and burn rate, so you can answer "are we still allowed to ship?" with a number instead of a feeling.
Threshold rules to Slack and webhooks with firing/resolved dedup, HTTP and TCP uptime checks, and a public status page you can point customers at.
Rollups are selected automatically by query range, so a 30-day chart doesn't scan thirty days of raw points and time out on you.
Ask in plain English, get the query. Explain an error against its correlated context. Surface metric anomalies you didn't think to alert on.
Scope data by project, invite your team, and keep staging noise out of the view you use during an incident.
Under the hood
One columnar store holds every signal. That's not a detail — it's the entire reason the economics work differently, and it's why correlation is a join rather than an integration.
Pricing
You're metered on events — one log line, one metric point, or one span. Watch the count live in your dashboard before you commit to anything.
Overage is billed per million events, and you can set a hard cap instead if you'd rather be throttled than charged.
The fine print
Free tier, no card, and your existing OpenTelemetry setup works unchanged.