Table of Contents

Class FlowOrchestratorTelemetry

Namespace
FlowOrchestrator.Core.Observability
Assembly
FlowOrchestrator.Core.dll

Singleton telemetry hub exposing the FlowOrchestratorActivitySource and Meter used for distributed tracing and metrics. Wire up AddOpenTelemetry() and AddFlowOrchestratorInstrumentation() to export spans and counters to your observability backend.

public sealed class FlowOrchestratorTelemetry : IDisposable
Inheritance
FlowOrchestratorTelemetry
Implements
Inherited Members

Remarks

Moved from FlowOrchestrator.Core.Execution in v1.19 so OpenTelemetry registration is independent of any specific runtime adapter (Hangfire, in-memory, queue). The activity source and meter names are unchanged — all existing OTel pipelines continue to work without changes.

Constructors

FlowOrchestratorTelemetry()

Initialises all counters and histograms against the shared Meter.

public FlowOrchestratorTelemetry()

Fields

SharedActivitySource

Library-wide static activity source. Used from contexts where DI is not available (e.g. PollableStepHandler<TInput> base class and the InMemory runtime's channel runner). Listeners subscribed to SourceName receive activities from this source and from the per-instance ActivitySource identically — multiple ActivitySource instances with the same name is the supported way to emit from many compilation units without round-tripping through DI.

public static readonly ActivitySource SharedActivitySource

Field Value

ActivitySource

SourceName

Name shared by both the ActivitySource and the Meter.

public const string SourceName = "FlowOrchestrator"

Field Value

string

Properties

ActivitySource

OpenTelemetry activity source for distributed tracing of flow and step executions.

public ActivitySource ActivitySource { get; }

Property Value

ActivitySource

CronLagMs

Records the gap between a cron trigger's scheduled fire time and its actual dispatch time, in milliseconds.

public Histogram<double> CronLagMs { get; }

Property Value

Histogram<double>

Meter

OpenTelemetry meter for emitting counters and histograms.

public Meter Meter { get; }

Property Value

Meter

QueueDelayMs

Records the delay between step enqueue time and actual execution start in milliseconds.

public Histogram<double> QueueDelayMs { get; }

Property Value

Histogram<double>

RunCompletedCounter

Incremented each time a flow run reaches a terminal state (succeeded, failed, or cancelled).

public Counter<long> RunCompletedCounter { get; }

Property Value

Counter<long>

RunStartedCounter

Incremented each time a new flow run is triggered.

public Counter<long> RunStartedCounter { get; }

Property Value

Counter<long>

SignalWaitMs

Records the wall-clock time a WaitForSignal step spent parked, in milliseconds.

public Histogram<double> SignalWaitMs { get; }

Property Value

Histogram<double>

StepCompletedCounter

Incremented each time any step reaches a terminal state.

public Counter<long> StepCompletedCounter { get; }

Property Value

Counter<long>

StepDurationMs

Records the wall-clock duration of each step execution in milliseconds.

public Histogram<double> StepDurationMs { get; }

Property Value

Histogram<double>

StepPollAttemptsCounter

Incremented for each polling attempt of a PollableStepHandler.

public Counter<long> StepPollAttemptsCounter { get; }

Property Value

Counter<long>

StepRetriesCounter

Incremented every time a failed step is dispatched for retry.

public Counter<long> StepRetriesCounter { get; }

Property Value

Counter<long>

StepSkippedCounter

Incremented every time a step is skipped (false When clause or unmet RunAfter).

public Counter<long> StepSkippedCounter { get; }

Property Value

Counter<long>

WebhookBodyBytes

Records the size of each webhook body in bytes. Tags: flow.

public Histogram<long> WebhookBodyBytes { get; }

Property Value

Histogram<long>

WebhookProcessingMs

Records the wall-clock pipeline processing time per webhook in milliseconds. Tags: flow, result.

public Histogram<double> WebhookProcessingMs { get; }

Property Value

Histogram<double>

WebhookReceivedCounter

Incremented for every webhook receive (accepted or rejected). Tags: flow, result, scheme.

public Counter<long> WebhookReceivedCounter { get; }

Property Value

Counter<long>

WebhookRejectedCounter

Incremented for every webhook rejected by the security pipeline. Tags: flow, reason.

public Counter<long> WebhookRejectedCounter { get; }

Property Value

Counter<long>

Methods

Dispose()

Disposes the ActivitySource and Meter.

public void Dispose()