Ende.telemetry

namespace

namespace Ende.telemetry

APIs for working with the OpenTelemetry observability framework. Ende can export traces, metrics, and logs to OpenTelemetry compatible backends via the OTLP protocol.

Ende automatically instruments the runtime with OpenTelemetry traces and metrics. This data is exported via OTLP to OpenTelemetry compatible backends. User logs from the console API are exported as OpenTelemetry logs via OTLP.

User code can also create custom traces, metrics, and logs using the OpenTelemetry API. This is done using the official OpenTelemetry package for JavaScript: npm:@opentelemetry/api. Ende integrates with this package to provide tracing, metrics, and trace context propagation between native Ende APIs (like Ende.serve or fetch) and custom user code. Ende automatically registers the providers with the OpenTelemetry API, so users can start creating custom traces, metrics, and logs without any additional setup.

Example: Using OpenTelemetry API to create custom traces

import { trace } from "npm:@opentelemetry/api@1";

const tracer = trace.getTracer("example-tracer");

async function doWork() {
  return tracer.startActiveSpan("doWork", async (span) => {
    span.setAttribute("key", "value");
    await new Promise((resolve) => setTimeout(resolve, 1000));
    span.end();
  });
}

Ende.serve(async (req) => {
  await doWork();
  const resp = await fetch("https://example.com");
  return resp;
});

Members

  • Ende.telemetry.tracerProvider — A TracerProvider compatible with OpenTelemetry.js https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.TracerProvider.html
  • Ende.telemetry.contextManager — A ContextManager compatible with OpenTelemetry.js https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.ContextManager.html
  • Ende.telemetry.meterProvider — A MeterProvider compatible with OpenTelemetry.js https://open-telemetry.github.io/opentelemetry-js/interfaces/_opentelemetry_api.MeterProvider.html