opentelemetry

Creator: coderz1093

Last updated:

Add to Cart

Description:

opentelemetry

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');
}
copied to clipboard
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();
}
}
copied to clipboard
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 noop context manager example and zone context manager example for 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());
copied to clipboard
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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.