OpenTelemetry Export
WOML can optionally export traces, metrics, and safe structured logs through OTLP over HTTP. The durable Rust engine remains the workflow authority. An unavailable collector degrades telemetry but cannot reject a trigger, fail a step, or change the run result.
Enable export in runtime configuration
OpenTelemetry settings belong in operator runtime configuration, not .woml source:
{
"schemaVersion": 2,
"observability": {
"health": true,
"metrics": true,
"openTelemetry": {
"enabled": true,
"protocol": "http/protobuf",
"traces": true,
"metrics": true,
"logs": true,
"samplingRatio": 0.1,
"exportIntervalMs": 10000,
"exportTimeoutMs": 5000,
"shutdownTimeoutMs": 5000,
"maxQueueSize": 2048,
"maxExportBatchSize": 512,
"propagation": true
}
}
}Point the runtime at a collector using the reviewed OTEL environment variables:
OTEL_SERVICE_NAME=woml-local OTEL_EXPORTER_OTLP_ENDPOINT=http://127.0.0.1:4318 woml run workflow.woml --config ./woml.runtime.jsonUse a protected endpoint and inject authentication at deployment time. Sampling controls locally created traces; metrics and logs have their own switches.
Understand the boundary
Exports use bounded queues and timeouts. They omit script and process output, trigger payloads, step results, approval comments, HTTP bodies, artifact contents, and secret values. The collector is for observation, not durable recovery. Keep normal health, run inspection, and backups even when telemetry is enabled.