FLUTTER ECOSYSTEM

Workiva/opentelemetry-dart

Workiva/opentelemetry-dart open-source repository details.

opentelemetry-dart 프로젝트 이미지
Stars
87
Forks
55
최근 푸시(UTC)
2026. 8. 26.
프로젝트 상태
활성
Workiva GitHub avatar
GITHUB Organization

Workiva ↗

언어DartMakefileShell

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 16 개

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

README 펼치기 / 접기

OpenTelemetry for Dart

This repository is the Dart implementation of the OpenTelemetry project. All contributions and designs should follow the OpenTelemetry specification.

Project Status

Signal Status
Traces Beta
Metrics Alpha
Logs Unimplemented

Getting Started

This section will show you how to initialize the OpenTelemetry SDK, capture a span, and propagate context.

Initialize the OpenTelemetry SDK
import 'package:opentelemetry/sdk.dart'
    show
        BatchSpanProcessor,
        CollectorExporter,
        ConsoleExporter,
        SimpleSpanProcessor,
        TracerProviderBase;
import 'package:opentelemetry/api.dart'
    show registerGlobalTracerProvider, globalTracerProvider;

void main(List<String> args) {
  final tracerProvider = TracerProviderBase(processors: [
    BatchSpanProcessor(
        CollectorExporter(Uri.parse('https://my-collector.com/v1/traces'))),
    SimpleSpanProcessor(ConsoleExporter())
  ]);

  registerGlobalTracerProvider(tracerProvider);
  final tracer = globalTracerProvider.getTracer('instrumentation-name');
}
Capture a Span
import 'package:opentelemetry/api.dart' show StatusCode, globalTracerProvider;

void main(List<String> args) {
  final tracer = globalTracerProvider.getTracer('instrumentation-name');

  final span = tracer.startSpan('main');
  try {
    // do some work
    span.addEvent('some work');
  } catch (e, s) {
    span
      ..setStatus(StatusCode.error, e.toString())
      ..recordException(e, stackTrace: s);
    rethrow;
  } finally {
    span.end();
  }
}
Propagate Context
Intra-process

In order to parent spans, context must be propagated. Propagation can be achieved by manually passing an instance of Context or by using Dart Zones.

See the attach detach context examplefor more information.

Inter-process

In order to parent spans between processes, context can be serialized and deserialized using a TextMapPropagator, TextMapSetter, and TextMapGetter.

See the W3C context propagation example for more information.

High Resolution Timestamps

A tracer provider can register a web-specific time provider that uses the browser's performance API instead of DateTime when recording timestamps for a span's start timestamp, end timestamp, and span events.

import 'package:opentelemetry/web_sdk.dart' as web_sdk;

final tracerProvider =
    web_sdk.WebTracerProvider(timeProvider: web_sdk.WebTimeProvider());

Important Note: Span timestamps may be inaccurate if the executing system is suspended for sleep. See https://github.com/open-telemetry/opentelemetry-js/issues/852 for more information.

Contributing

In order to generate protobuf definitions, you must have protoc installed and available in your path.

Publishing New Versions

Only Workiva maintainers can publish new versions of opentelemetry-dart. See Publishing opentelemetry-dart