Skip to content

See where every request spends its time

Instrument services with upstream OpenTelemetry SDKs, your own OpenTelemetry Operator or zero-code eBPF on Linux. Tracix rolls spans up into rate, errors and latency for every service and endpoint, and links each trace to its logs and the Kubernetes pod it ran on.

  • Upstream OpenTelemetry SDKs
  • 12 languages in Setup
  • p50 · p95 · p99 latency

How it works

From the first span to a release you can trust

Instrumentation is standard OpenTelemetry, so it keeps working with any backend that speaks OTLP. Everything after export happens in your own workspace.

  1. 01InstrumentAdd the OpenTelemetry agent or SDK for your language, let your OpenTelemetry Operator inject it, or turn on eBPF in the collector.
  2. 02ExportServices send OTLP over gRPC or HTTP to your workspace, with an ingest key for each environment.
  3. 03MeasureSpans roll up every minute into rate, errors and p50, p95 and p99 latency for each service and endpoint.
  4. 04InvestigateFind a slow trace, read its spans, logs and exception, and see the pod and node it ran on.
  5. 05CompareEach new version is detected and compared with the one before it, so a faulty release stands out.

Services

Every service with its rate, errors and latency

The service inventory reads each service's server and consumer spans, so every service gets throughput, error rate, p50, p95 and p99 latency and a health state. Open one to see its transactions, dependencies, errors, logs, profiles and deployments.

  • The service map draws calls between services and the databases, queues and hosts they use
  • Error groups collect failures by service, operation and message, with the stack parsed per language
  • Runtime metrics for the JVM, .NET, Node.js, Python and Go sit beside each service's traces

Instrumentation

No Tracix SDK. OpenTelemetry from end to end.

Tracix reads OTLP from the upstream SDKs and agents, so your code stays vendor-neutral. Setup writes the exact configuration for your platform, language and method, then checks that the first spans arrive.

  • Agents and SDKs

    Java, .NET, Node.js, Python, Go, Ruby, PHP, C++, Rust, Swift, Erlang and any SDK that reads OTEL_ variables.

  • Kubernetes injection

    Your own OpenTelemetry Operator injects agents for Java, .NET, Node.js and Python as pods start.

  • Zero-code eBPF

    OBI in the collector records HTTP, gRPC and database calls on Linux, with no code or image changes.

  • Instrumentation health

    See which SDK and version each service runs, which signals it sends and which deprecated attributes it uses.

Deployments

Every release, judged by its own traffic

Tracix records a deployment when a new service.version starts serving, when Kubernetes rolls out a workload, or when GitHub, GitLab or your CI reports one. After 30 minutes of traffic it compares the new version with the one before and marks the release healthy or faulty.

  • Requests, error rate and p50, p95 and p99 latency, before and after
  • Faulty on a significant rise in errors, a new error signature or a p95 at least 1.5 times higher
  • Deployment, rollout and config-change markers on each service's charts

Languages and runtimes

How each language gets instrumented

Agents and SDKs export OTLP straight to your workspace. Kubernetes injection uses your own OpenTelemetry Operator; Tracix does not ship one.

LanguageAgent or SDKWhat it takesOperator injectionRuntime metrics
Java and KotlinOpenTelemetry Java agentRestart with the agentYesYes
.NETAutomatic instrumentationRestart with the agentYesYes
Node.jsAuto-instrumentationRestart with the agentYesYes
PythonAuto-instrumentationRestart with the agentYesYes
GoOpenTelemetry Go SDKA small code changeTraces only, eBPF sidecarYes
PHPAuto-instrumentation extensionExtension and Composer packagesSDK in the imageNot yet
RubyOpenTelemetry Ruby SDKGemfile and initializerSDK in the imageNot yet
Erlang and ElixirOpenTelemetry SDKDependencies and a setup callSDK in the imageNot yet
Swift on the serverswift-otelA package and a few linesSDK in the imageNot yet
C++ and RustOpenTelemetry SDKSpans in your codeSDK in the imageNot yet

OBI, the eBPF instrumentation in the collector, works with any of these languages on Linux kernel 5.8 or later with BTF. It records each request at the protocol level, without spans from inside the process. AWS Lambda functions use the OpenTelemetry layers for Java, Node.js, Python and Ruby.

FAQ

Questions developers ask first

Do I need a Tracix agent in my code?
No. Tracix reads OTLP from the upstream OpenTelemetry SDKs and agents. There is no Tracix SDK or wrapper, so your instrumentation keeps working with any backend that speaks OTLP.
Can Tracix trace a service without code changes?
Yes, on Linux. OBI in the collector uses eBPF on kernel 5.8 or later with BTF and records HTTP, gRPC, database and messaging calls. It does not link requests across services by default or see work inside the process, so it complements an SDK rather than replacing it.
Can I sample traces?
Yes. Tail sampling is off by default. Turned on, it keeps every error trace, every trace slower than 500 ms and a 10 percent baseline of the rest, with overrides per service. Today the service summaries count stored spans, so with sampling on, request counts read low and error rate and p95 read high. The Ingestion page shows received and stored spans side by side.
Does Tracix ship a Kubernetes operator?
No. Setup gives you an Instrumentation resource for your own OpenTelemetry Operator, which injects agents for Java, .NET, Node.js and Python, and an eBPF sidecar for Go traces. Other languages build the SDK into the image.

Send your first trace in minutes

Create an ingest key, set the standard OTEL_ variables in your service and let Setup confirm the first spans.