@temporalio/interceptors-opentelemetry
Version:
Temporal.io SDK interceptors bundle for tracing with opentelemetry
120 lines (119 loc) • 3.41 kB
TypeScript
import * as otel from '@opentelemetry/api';
import * as tracing from '@opentelemetry/sdk-trace-base';
import { InstrumentationLibrary } from '@opentelemetry/core';
import type { Sink, Sinks } from '@temporalio/workflow';
/**
* Serializable version of SpanContext where traceState is converted to a string.
*/
export type SerializableSpanContext = Omit<otel.SpanContext, 'traceState'> & {
traceState?: string;
};
/**
* Serializable version of the opentelemetry Span for cross isolate copying
*/
export interface SerializableSpan {
readonly name: string;
readonly kind: otel.SpanKind;
readonly spanContext: SerializableSpanContext;
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 is queried
*/
WORKFLOW_QUERY = "QueryWorkflow",
/**
* Workflow update is started by client
*/
WORKFLOW_START_UPDATE = "StartWorkflowUpdate",
/**
* Workflow is started with an update
*/
WORKFLOW_UPDATE_WITH_START = "UpdateWithStartWorkflow",
/**
* Workflow handles an incoming signal
*/
WORKFLOW_HANDLE_SIGNAL = "HandleSignal",
/**
* Workflow handles an incoming query
*/
WORKFLOW_HANDLE_QUERY = "HandleQuery",
/**
* Workflow handles an incoming update
*/
WORKFLOW_HANDLE_UPDATE = "HandleUpdate",
/**
* Workflow validates an incoming update
*/
WORKFLOW_VALIDATE_UPDATE = "ValidateUpdate",
/**
* Workflow is terminated
*/
WORKFLOW_TERMINATE = "TerminateWorkflow",
/**
* Workflow is cancelled
*/
WORKFLOW_CANCEL = "CancelWorkflow",
/**
* Workflow is described
*/
WORKFLOW_DESCRIBE = "DescribeWorkflow",
/**
* 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",
/**
* Nexus operation is started
*/
NEXUS_OPERATION_START = "StartNexusOperation"
}
export declare const SPAN_DELIMITER = ":";