Skip to content

Instrumentation

Osuite is an OpenTelemetry-native backend. Instrumenting a service means adding the OpenTelemetry SDK for its language, then pointing the exporter at Osuite so it streams traces, logs, and metrics over OTLP. This section has a guide for every major language and framework, plus a switcher page for services that already emit OpenTelemetry.

Every language exports the same three signals — traces, logs, and metrics — over OTLP. The Agent column is the fastest path: run /osuite-instrument in your AI IDE and it wires the service up. The Manual guide column is the full copy-paste OpenTelemetry setup for that language.

LanguageTracesLogsMetricsAgentManual guide
Node.jsNode.js
PythonPython
GoGo
JavaJava
.NET.NET
PHPPHP
RubyRuby
RustRust
ElixirElixir

Go logs ship through the OpenTelemetry logger bridges for slog and zap rather than the framework setup — see Application logs. Ruby, Rust, and Elixir currently have solid OTLP support for the signals marked above; the remaining signals land as their upstream OpenTelemetry SDKs stabilize.

Each language tree includes framework-specific guides, a custom-instrumentation reference, and a troubleshooting page.

For PHP, Ruby, Rust, and Elixir, each language has a single setup guide covering its SDK, top framework, and verification.

The OpenTelemetry SDK for each language emits all three signals to Osuite, and they arrive correlated by trace and span IDs.

  • Traces — request timing across every service and dependency, with automatic instrumentation for common HTTP clients, servers, and database drivers. View them in APM & Tracing.
  • Logs — application logs shipped through the SDK’s log bridge and tagged with the active trace context, so a log line links back to its span. See Logs.
  • Metrics — counters, histograms, and gauges you record through the Metrics API. See custom metrics.

Every guide in this section documents both paths, and both produce the same result.

  • Agent — the Instrumentation Agent runs in your AI IDE. Give it /osuite-instrument and it installs the OpenTelemetry packages, writes the init module, and sets the environment variables. Fastest for local development.
  • Manual — the full copy-paste OpenTelemetry setup: install packages, add the SDK init, set the ingest endpoint and token, run. Use this in CI, in containers, on hosts without an AI IDE, or when you want to see exactly what is configured.

If your services already export OpenTelemetry — directly from the SDK or through a Collector — you do not need to re-instrument anything. Point your existing exporter at Osuite’s OTLP endpoint. See Already using OpenTelemetry.