Skip to content

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.

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.

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.

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.
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.