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.
Instrument by language
Section titled “Instrument by language”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.
| Language | Traces | Logs | Metrics | Agent | Manual guide |
|---|---|---|---|---|---|
| Node.js | ✓ | ✓ | ✓ | ✓ | Node.js |
| Python | ✓ | ✓ | ✓ | ✓ | Python |
| Go | ✓ | ✓ | ✓ | ✓ | Go |
| Java | ✓ | ✓ | ✓ | ✓ | Java |
| .NET | ✓ | ✓ | ✓ | ✓ | .NET |
| PHP | ✓ | ✓ | ✓ | ✓ | PHP |
| Ruby | ✓ | — | ✓ | ✓ | Ruby |
| Rust | ✓ | — | — | ✓ | Rust |
| Elixir | ✓ | — | — | ✓ | Elixir |
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.
Frameworks by language
Section titled “Frameworks by language”Each language tree includes framework-specific guides, a custom-instrumentation reference, and a troubleshooting page.
- Node.js — Express, Next.js, NestJS, Fastify, custom instrumentation, troubleshooting
- Python — Django, FastAPI, Flask, Celery, custom instrumentation, troubleshooting
- Go — net/http, Gin, Echo, gRPC, custom instrumentation, troubleshooting
- Java — Spring Boot, Quarkus, custom instrumentation, troubleshooting
- .NET — ASP.NET Core, custom instrumentation, troubleshooting
For PHP, Ruby, Rust, and Elixir, each language has a single setup guide covering its SDK, top framework, and verification.
Traces, logs, and metrics
Section titled “Traces, logs, and metrics”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.
Agent path or manual path
Section titled “Agent path or manual path”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-instrumentand 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.
Already using OpenTelemetry?
Section titled “Already using OpenTelemetry?”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.
Next steps
Section titled “Next steps”- Getting Started — create an account and get your ingest endpoint and token.
- OTLP endpoints — regions, ports, and headers.
- APM & Tracing and Logs — what to do with the data once it is flowing.