Instrument applications
FuseScope has no agent of its own. Applications use the standard OpenTelemetry SDKs and send OTLP to a collector.
Use this page when you want an application to send traces, metrics and logs, and need to pick the right guide for its language.
Zero-code or SDK
Section titled “Zero-code or SDK”| Approach | What you do | Best for |
|---|---|---|
| Zero-code | Attach an agent or run your app through a launcher. Frameworks, HTTP clients and database drivers are instrumented without code changes. | Getting started; most services. |
| SDK | Add the SDK and instrumentation libraries, and initialise them in code. | Go, custom spans and metrics, fine control. |
You can mix both: start zero-code, then add custom spans with the OpenTelemetry API.
Languages
Section titled “Languages”Signal status as published by OpenTelemetry (checked October 2026).
| Language | Approach | Traces | Metrics | Logs |
|---|---|---|---|---|
| Java | Zero-code Java agent | Stable | Stable | Stable |
| .NET | Zero-code automatic instrumentation | Stable | Stable | Stable |
| Node.js | Zero-code auto-instrumentations-node |
Stable | Stable | Development |
| Python | Zero-code opentelemetry-instrument |
Stable | Stable | Development |
| Go | SDK in code + instrumentation libraries | Stable | Stable | Release candidate |
| Ruby | SDK + opentelemetry-instrumentation-all |
Stable | Development | Development |
| PHP | Extension + auto-instrumentation packages | Stable | Stable | Stable |
Development means the signal works but its API and output can still change. Other languages are listed in the OpenTelemetry docs.
Configure the exporter
Section titled “Configure the exporter”Every SDK reads the same environment variables:
| Variable | Example | Purpose |
|---|---|---|
OTEL_SERVICE_NAME |
checkout |
Service name shown in APM and traces. |
OTEL_RESOURCE_ATTRIBUTES |
deployment.environment.name=production,service.version=1.4.2 |
Extra resource attributes, comma separated. |
OTEL_EXPORTER_OTLP_ENDPOINT |
http://fusescope-collector.example.com:4318 |
Where to send. |
OTEL_EXPORTER_OTLP_PROTOCOL |
http/protobuf |
http/protobuf on port 4318 or grpc on port 4317. |
OTEL_TRACES_EXPORTER, OTEL_METRICS_EXPORTER, OTEL_LOGS_EXPORTER |
otlp |
Which signals to export. none turns one off. |
Where to send
Section titled “Where to send”| Option | Endpoint | When |
|---|---|---|
| Direct to the FuseScope collector | http://fusescope-collector.example.com:4318 (HTTP) or fusescope-collector.example.com:4317 (gRPC). In the cluster: http://fusescope-otel-collector.fusescope.svc.cluster.local:4318. |
Simple setups; one hop. |
| Through a local collector | http://localhost:4318 |
You want batching, retries, host metrics, or one place to change the destination. |
To run a local collector, see collector in Docker, collector on a VM or Kubernetes. For endpoints from outside the cluster, see OTLP.
Applications can send logs in two ways:
- Over OTLP from the SDK. The log record carries the trace and span IDs, so you can jump from a trace to its logs. Each language page explains how to turn it on.
- To stdout or files, collected by a collector such as the k8s-infra agent or file log collection, and parsed with log pipelines.
Pick one per service, or you store each line twice.