Manual instrumentation uses the OpenTelemetry API and SDK in application code to describe operations the team owns.

Setup sequence

  1. Select the OpenTelemetry SDK and exporter supported for the application’s language and version.
  2. Configure the SDK with a stable resource identity, including service.name, and the tenant-specific OTLP exporter settings.
  3. Obtain a tracer from the SDK using a stable instrumentation-scope name, such as the application module or library.
  4. Create spans around meaningful operations and make the active context available to downstream calls.
  5. End each span on success, failure, cancellation, and early return paths.
  6. Export a test trace and confirm the expected service and parent-child structure in OpsRamp.

Where to instrument

Start with request handlers, remote calls, database operations, and important business steps that are not already represented by the application’s selected instrumentation packages. Keep span names stable and attributes low-cardinality; place request-specific values in attributes only when they are useful and approved for telemetry.


Use established semantic conventions for standard protocols and libraries. For application-specific operations, choose consistent names and document their attributes for teams that query the traces.

Implementation details

OpenTelemetry APIs differ by language. Follow the selected SDK’s guidance for span creation, scope activation, context propagation, exception handling, and exporter configuration. Avoid creating spans for trivial helper calls; excess detail increases volume without improving diagnosis.