UNPKG

@temporalio/interceptors-opentelemetry

Version:
70 lines (69 loc) 2.11 kB
import * as otel from '@opentelemetry/api'; import * as tracing from '@opentelemetry/sdk-trace-base'; import { InstrumentationLibrary } from '@opentelemetry/core'; import { Sink, Sinks } from '@temporalio/workflow'; /** * Serializable version of the opentelemetry Span for cross isolate copying */ export interface SerializableSpan { readonly name: string; readonly kind: otel.SpanKind; readonly spanContext: otel.SpanContext; readonly parentSpanId?: string; readonly startTime: otel.HrTime; readonly endTime: otel.HrTime; readonly status: otel.SpanStatus; readonly attributes: otel.Attributes; readonly links: otel.Link[]; readonly events: tracing.TimedEvent[]; readonly duration: otel.HrTime; readonly ended: boolean; readonly droppedAttributesCount: number; readonly droppedLinksCount: number; readonly droppedEventsCount: number; readonly instrumentationLibrary: InstrumentationLibrary; } export interface OpenTelemetryWorkflowExporter extends Sink { export(span: SerializableSpan[]): void; } /** * Required external dependencies for Workflow interceptor to export spans */ export interface OpenTelemetrySinks extends Sinks { exporter: OpenTelemetryWorkflowExporter; } export declare enum SpanName { /** * Workflow is scheduled by a client */ WORKFLOW_START = "StartWorkflow", /** * Workflow is signalled */ WORKFLOW_SIGNAL = "SignalWorkflow", /** * Workflow is client calls signalWithStart */ WORKFLOW_SIGNAL_WITH_START = "SignalWithStartWorkflow", /** * Workflow run is executing */ WORKFLOW_EXECUTE = "RunWorkflow", /** * Child Workflow is started (by parent Workflow) */ CHILD_WORKFLOW_START = "StartChildWorkflow", /** * Activity is scheduled by a Workflow */ ACTIVITY_START = "StartActivity", /** * Activity is executing */ ACTIVITY_EXECUTE = "RunActivity", /** * Workflow is continuing as new */ CONTINUE_AS_NEW = "ContinueAsNew" } export declare const SPAN_DELIMITER = ":";