The observability platform for .NET teams

Stop guessing. Start observing.

dotOtel is the OpenTelemetry-powered APM that gives .NET teams logs, traces and metrics in one place. Sign up, send your first trace, and see what your application is actually doing — in under a minute.

Point your OpenTelemetry exporter and you'll see data in under a minute.

Built Around How .NET Teams Actually Work

Three signals, one workspace, zero learning curve.

🔌

Plug In, Don't Rewire

dotOtel speaks OpenTelemetry out of the box. If your app uses the OpenTelemetry SDK, you're already 90% there — swap an endpoint and you're sending data.

📊

Logs, Traces, Metrics — Together

See the slow request, the trace that explains why, and the log line that confirms it — without jumping between four tabs. Everything is correlated by trace and resource.

🔍

Search That Just Works

Full-text log search, trace filtering by service, operation, duration or error, time-series charts for any metric. Find what you need without learning a new query language.

Fast Where It Matters

Sub-second queries on millions of spans. No throttling, no slow dashboards while you're trying to debug a live incident.

👥

Built for Teams

Per-tenant workspaces, role-based access, rotatable ingest tokens. Onboard your team without juggling permissions or rebuilding dashboards.

💸

Pay Only for What You Send

Per-record pricing in cents. No monthly minimums, no per-host fees. A quiet weekend produces a quiet invoice.

From Sign-Up to First Trace in Three Steps

Sixty seconds, roughly.

1

Create an Account

Sign up at app.dototel.net. You get an ingest endpoint and a token immediately.

2

Point Your App

Set the endpoint on your existing OpenTelemetry exporter. No new agents, no sidecars, no library swaps.

3

Watch It Light Up

Open the dashboard. Your services, requests and errors appear in real time — ready to search, filter and chart.

What a Day With dotOtel Actually Looks Like

Four scenarios .NET teams hit every week — and what changes.

Performance

The slow checkout endpoint

Before: "Checkout feels slow." You skim logs, suspect the database, add timing logs, redeploy, wait.

With dotOtel: Open the trace for POST /checkout, see the waterfall — four of six spans are EF queries, one taking 1.2s. N+1 spotted. Fix shipped before lunch.

Incidents

The 3am alert that wasn't yours

Before: Spike in 502s wakes the on-call. Where? Why? Two hours of grepping pod logs.

With dotOtel: Filter errors in the last hour. They cluster around one pod, all timing out on a single downstream service. You know exactly which team to wake — not your code.

Releases

"Did the release break anything?"

Before: Deploy v2.4. Wait nervously. Check error rate by refreshing a Kibana dashboard for twenty minutes.

With dotOtel: Open the metric for request volume, p95 latency, error count. All three look like yesterday. Stand-up is calm. You ship Friday at 3pm.

Background jobs

The Hangfire job that quietly doubled

Before: A scheduled job used to take 8s. Now it's 14s. Nobody knows when it changed.

With dotOtel: Chart the job's duration over a month. See the exact day it stepped up. Diff the trace before/after — one extra HTTP call. Twenty-minute fix.

Plug Into the .NET Stack You Already Run

Every major OpenTelemetry instrumentation library works out of the box — here's what most .NET teams already have running.

  • ASP.NET CoreWeb
  • HttpClientHTTP
  • gRPC.NetRPC
  • Entity Framework CoreORM
  • Microsoft.Data.SqlClientSQL
  • NpgsqlPostgres
  • StackExchange.RedisCache
  • MongoDB.DriverNoSQL
  • Confluent.KafkaQueue
  • MassTransitMessaging
  • Quartz.NETScheduler
  • HangfireBackground
  • ElasticsearchSearch
  • AWS SDKCloud
  • Azure SDKCloud
  • Custom ActivitySourceYour code

Not on .NET? OpenTelemetry SDKs for Go, Python, Node, Java, Rust and Ruby all speak the same protocol — dotOtel ingests them too.

What Your Team Gets Out of It

Less time hunting, more time shipping.

🎯

Find Issues Before Users Do

Spot the slow endpoint, the failing dependency, the silent retry storm — before the support ticket lands.

Cut Debug Time

Click a trace, see the exact span that slowed everything down. Stop reading log files by hand.

📈

Know What's Actually Happening

Real numbers on every request, queue, and dependency. The kind of data that ends arguments in stand-up.

🌐

Stay Vendor-Neutral

OpenTelemetry is the standard. Your instrumentation stays yours — if you ever switch tools, your spans come with you.

🔐

EU-Hosted, GDPR-Ready

Your telemetry lives in EU data centers. Standard DPA, no transatlantic transfer concerns.

🤝

People to Talk To

Real engineers behind the product, reachable when something matters. Not a chatbot that escalates after two days.

How dotOtel Stacks Up

Three paths to observability in a .NET shop — the honest trade-offs.

What matters dotOtel US-hosted SaaS APM DIY OSS stack
Time to first trace Minutes Minutes Days to weeks
EU data residency & DPA Default (Hetzner DE) Add-on or unavailable You choose, you manage
OpenTelemetry-native ingest Yes Via adapters / agents Yes
Logs + traces + metrics in one UI Yes, correlated Usually yes Loki + Tempo + Prometheus + Grafana
.NET-team focus & tested integrations Yes Generic, language-neutral n/a — you wire it
Ongoing operations cost Pay-per-record (Stripe) Annual contract or per-host Infra + engineering hours
Minimum commitment None — cancel from Stripe portal Typically annual Whatever you build
Support contact Direct to engineers Tiered support portal Community / yourself
Vendor lock-in on instrumentation None — OpenTelemetry Often vendor SDK None — OpenTelemetry

None of these are wrong. Pick the column that matches what you actually need.

Pay Only for What You Send

Three signals, three flat rates — per million ingested records. Billed monthly via Stripe.

Logs
0.35
per million log records

Full-text searchable, correlated to traces by id, retained according to your account settings.

Datapoints
0.12
per million datapoints

Gauges, counters and histograms. Chart per metric, alert on thresholds, slice by attribute.

  • No monthly minimum. Quiet month = small bill.
  • Per-record metering, so a noisy log doesn't blow your budget like per-GB pricing can.
  • Card on file via Stripe, monthly invoice, cancel any time from the Stripe Customer Portal.
  • All prices in EUR, exclusive of VAT.

Metered per record, so any volume scales linearly — 10 000 000 logs is €3.50, 100 000 000 spans is €35. See the Terms for the full schedule.

Questions Buyers Actually Ask

If yours isn't here, mail us — we read everything.

Which OpenTelemetry SDKs work with dotOtel?

Any OTLP-compatible exporter. For .NET that's the official OpenTelemetry.Exporter.OpenTelemetryProtocol NuGet package. We also accept OTLP from Go, Python, Node.js, Java, Rust, Ruby and PHP — the protocol is the same regardless of language.

Where is my telemetry stored?

Inside the European Union, on infrastructure operated by Hetzner Online GmbH in Germany. We can sign a standard Data Processing Agreement on request before you upload production data.

How long is data retained?

Retention is configurable per workspace. Default windows are sized so most teams never need to think about it; longer retention for compliance scenarios is available on request. After account termination, your data stays available for export for 30 days, then is irreversibly deleted.

Do you support alerting?

Yes — you can define rules on metrics, logs and traces, and route alerts to email or webhook (Slack, Teams, PagerDuty via a webhook URL). Per-tenant channels, no extra add-on.

Can I send telemetry from non-.NET services?

Absolutely. dotOtel is OpenTelemetry-native, not .NET-only. Any service that speaks OTLP/HTTP — Go microservice, Python data pipeline, Node.js API, Java backend — sends to the same workspace. The .NET focus is about which integrations we test against and which audience we write the docs for, not a hard restriction on what you can ingest.

What about a self-hosted or on-premises option?

For regulated industries or air-gapped environments we offer on-premises deployment under a separate agreement. The hosted product at app.dototel.net is the default and where most teams start.

How does billing work?

Pay-per-use, no monthly minimum. We meter every ingested record and charge per 100 000: €10 for logs, €15 for spans, €5 for metric datapoints. Stripe issues an automatic monthly invoice to the card on file; you can pause, update the payment method or cancel directly from the Stripe Customer Portal. All prices in EUR, exclusive of VAT.

What happens if I exceed a usage spike?

There is no hard cap by default — pay-per-use means the next month's bill simply reflects the spike. If you need a fixed ceiling (for example to protect against runaway log floods from a misconfigured library), set drop rules in the workspace or contact us to configure a hard ingest limit on the account.

Can I export my data if I leave?

Yes. Telemetry can be exported in standard formats (OTLP JSON, Parquet for long-form archives). After cancellation you have 30 days to pull everything out before deletion.

Get Started Today

A workspace and your first trace in the time it takes to grab a coffee.

Get Started

Open dotOtel, create a workspace, send your first trace. Self-serve, ready in minutes.

Account anlegen →

Talk to a Human First?

Larger team, regulated environment, custom retention? Tell us what you need — we'll get back within one business day.

Send Inquiry

Prefer email?

mail@software.tirol