Skip to content
Docs / dflux Runner
ContactGet started

Metrics

Prometheus metrics namespaced under runner_*. They exist only while a d3x-run process is running with -metrics-port set — a CLI one-shot (run-flow / run-suite) or another long-lived entrypoint that serves /metrics. There is no always-on daemon metrics port separate from the process you start.

Process-scoped
Metrics are not persisted. When the process exits, the endpoint and counters go with it. Scrape during the run (or keep a long-lived process) if you need samples.

Synopsis

Enable on a CLI run:

Bash

The flag is -metrics-port (also accepted as -metrics_port). Default is 0 (off). Serving metrics requires the obs.prometheus license capability.

Counters

The message and NGAP error counters instrument the NGAP pipeline only. SBI, REST, Diameter, and PFCP traffic is not counted here — track those flows through runner_flows_total and the latency histograms instead.

NameLabelsDescription
runner_messages_totaldirection, msg_typeTotal NGAP messages pipelined
runner_message_bytes_totaldirection, msg_typeTotal bytes of NGAP messages pipelined
runner_ngap_encode_errors_totalmsg_typeNGAP encode failures inside EncoderStage
runner_ngap_decode_errors_totalmsg_typeNGAP decode failures inside DecoderStage
runner_flows_totalflow, resultCompleted flows (result: success, failed, timeout)
runner_ue_deregistrations_totalUE deregistrations observed (inner-NAS DeregistrationAccept)
runner_procedure_failures_totalprocedureProcedure failures observed on the wire
runner_fsm_state_timeouts_totalflow, stateon_timeout firings
runner_bus_handler_totaladdressTotal events dispatched per bus address
runner_bus_handler_errors_totaladdressHandler-level errors (not business errors routed to internal.error)
runner_bus_events_dropped_totalreasonEvents dropped (reason: no_handler for an unregistered address, stopped after the bus shuts down)

Gauges

NameLabelsDescription
runner_flows_activeflowUEs whose flow is in-flight (between FSM start and terminal state)
runner_gnb_registeredgNBs that have completed NG Setup (incremented on NGSetupResponse)
runner_ue_registeredUEs currently registered with the 5GC
runner_pdu_sessions_activePDU sessions currently active
runner_bus_queue_depthLive event-bus queue depth

Histograms

NameLabelsDescription
runner_pipeline_stage_secondsdirection, stage, msg_typeWall-clock time per pipeline stage per message
runner_flow_latency_secondsflow, resultEnd-to-end flow latency, FSM start → terminal state
runner_step_latency_secondsflow, from_state, to_stateFSM state dwell time per transition
runner_bus_handler_duration_secondsaddressWall-clock time per event-bus handler invocation

Bucket layouts

runner_pipeline_stage_seconds and runner_step_latency_seconds use a stage-tuned bucket set covering 100 µs to 10 s in roughly half-decade steps:

Code

runner_flow_latency_seconds uses a flow-tuned set covering 5 ms to 60 s:

Code

runner_bus_handler_duration_seconds uses a finer low end (50 µs) for handler work:

Code

Examples

Live success rate per flow

promql

P95 flow latency

promql

Bus backpressure

promql

Notes

  • All custom series are namespaced runner_*.
  • result labels on counters and histograms are kept low-cardinality (small enum) so they're safe to slice and dice.
  • CLI one-shots register metrics on an isolated registry for the lifetime of that process; scrape while the run is in flight.
  • Agent mode does not expose a separate admin metrics port by itself — attach scrape configuration to whatever long-lived process you run with -metrics-port enabled, or use the control plane's own observability surface.

Where to go next