otel_serverpod 0.1.0-beta.1 copy "otel_serverpod: ^0.1.0-beta.1" to clipboard
otel_serverpod: ^0.1.0-beta.1 copied to clipboard

OpenTelemetry instrumentation for Serverpod. One call opens http.server semconv spans per endpoint method call (route = endpoint.method), db.* client spans for the database layer, and the standard htt [...]

example/main.dart

// The whole wiring diff for a generated Serverpod project's
// `lib/server.dart` — three added lines, marked below.
//
// In a real project `Protocol` and `Endpoints` come from `serverpod
// generate`; minimal stand-ins are defined at the bottom so this example
// compiles standalone.

import 'package:dartastic_opentelemetry/dartastic_opentelemetry.dart' show OTel;
import 'package:otel_serverpod/otel_serverpod.dart';
import 'package:serverpod/serverpod.dart';

Future<void> run(List<String> args) async {
  // 1. Initialize OTel first — endpoint + auth come from the standard
  //    OTEL_EXPORTER_OTLP_* environment variables.
  await OTel.initialize(serviceName: 'mypod');

  final pod = Serverpod(
    args,
    Protocol(),
    Endpoints(),
    // 2. Database spans (`find person`, `insert order`, ...) per session.
    databaseInterceptor: OtelServerpod.databaseInterceptor,
  );

  // 3. Endpoint spans and request metrics.
  OtelServerpod.install(pod);

  await pod.start();
}

// --- stand-ins for the `serverpod generate` output -------------------------

/// Generated by `serverpod generate` in a real project.
class Protocol extends DatabaseSerializationManager {
  @override
  Table? getTableForType(Type t) => null;

  @override
  List<Never> getTargetTableDefinitions() => [];
}

/// Generated by `serverpod generate` in a real project.
class Endpoints extends EndpointDispatch {
  @override
  void initializeEndpoints(Server server) {}
}
0
likes
150
points
59
downloads

Documentation

API reference

Publisher

verified publisherdartastic.io

Weekly Downloads

OpenTelemetry instrumentation for Serverpod. One call opens http.server semconv spans per endpoint method call (route = endpoint.method), db.* client spans for the database layer, and the standard http.server.request.duration metrics. Works with any OTLP backend.

Homepage
Repository (GitHub)
View/report issues

License

Apache-2.0 (license)

Dependencies

dartastic_opentelemetry, dartastic_opentelemetry_api, serverpod

More

Packages that depend on otel_serverpod