Task metrics reference

July 20, 2026 ยท View on GitHub

Task metrics summarize extractor, pipeline, sinker, and checker activity at task level. They are available through two outputs:

  • task.log: emitted as a JSON object by TaskMonitor. JSON field names use snake_case, as listed in the Task log field column below. This output is available whether or not the metrics crate feature is enabled.
  • Prometheus: when the metrics feature is enabled, the current values are exposed as gauges at GET /metrics. GET /healthz reports the health of the metrics HTTP service.

The metrics HTTP address, workers, and constant labels are configured in the [metrics] section.

Collection and aggregation

  • Task metrics are refreshed when TaskMonitor is flushed. In the normal pipeline flow, the refresh interval is controlled by [pipeline] checkpoint_interval_secs.
  • Throughput and response-time metrics use the rolling window configured by [pipeline] counter_time_window_secs.
  • A time-window counter retains at most [pipeline] counter_max_sub_count samples. At higher event rates, its statistics cover the newest retained samples in the window.
  • The max, min, and avg suffixes describe the maximum, minimum, and arithmetic mean of the per-second values that contain samples in the current window. Seconds without samples are not included in the average.
  • Values are stored as integers. Division therefore discards the fractional part.
  • When a task has multiple component monitors, max and min are the extrema across those monitors. The current avg aggregation combines monitor averages incrementally; it is not a globally weighted average.
  • A task-log field is present only after its source counter has been populated. A registered Prometheus gauge is 0 until a value is published.

Extractor metrics

extractor_* measures traffic extracted from the source. The current source-side byte/record accounting may not include every byte transferred by the database protocol. extractor_pushed_* measures the DtData records that remain after processing and filtering and are pushed to the pipeline.

Task log fieldPrometheus metricUnitMeaning
extractor_rps_maxextractor_rps_maxrecords/sHighest source extraction rate in one sampled second of the window.
extractor_rps_minextractor_rps_minrecords/sLowest source extraction rate in one sampled second of the window.
extractor_rps_avgextractor_rps_avgrecords/sAverage source extraction rate across sampled seconds of the window.
extractor_bps_maxextractor_bps_maxbytes/sHighest source extraction byte rate in one sampled second of the window.
extractor_bps_minextractor_bps_minbytes/sLowest source extraction byte rate in one sampled second of the window.
extractor_bps_avgextractor_bps_avgbytes/sAverage source extraction byte rate across sampled seconds of the window.
extractor_pushed_rps_maxextractor_pushed_rps_maxrecords/sHighest rate of records pushed to the pipeline after processing and filtering.
extractor_pushed_rps_minextractor_pushed_rps_minrecords/sLowest rate of records pushed to the pipeline after processing and filtering.
extractor_pushed_rps_avgextractor_pushed_rps_avgrecords/sAverage rate of records pushed to the pipeline after processing and filtering.
extractor_pushed_bps_maxextractor_pushed_bps_maxbytes/sHighest byte rate pushed to the pipeline after processing and filtering.
extractor_pushed_bps_minextractor_pushed_bps_minbytes/sLowest byte rate pushed to the pipeline after processing and filtering.
extractor_pushed_bps_avgextractor_pushed_bps_avgbytes/sAverage byte rate pushed to the pipeline after processing and filtering.
extractor_plan_recordsextractor_plan_recordsrecordsSource records estimated by the snapshot extraction plan. Snapshot tasks only.

Pipeline metrics

Task log fieldPrometheus metricUnitMeaning
pipeline_queue_sizepipeline_queue_sizerecordsCurrent number of records buffered in the pipeline queue.
pipeline_queue_bytespipeline_queue_bytesbytesCurrent estimated bytes buffered in the pipeline queue.
timestamptimestampUnix millisecondsGreatest source-position timestamp observed by the pipeline. CDC tasks only. A value of 0 means the position has no parseable timestamp.

Sinker metrics

Task log fieldPrometheus metricUnitMeaning
sinker_rps_maxsinker_rps_maxrecords/sHighest sink write rate in one sampled second of the window.
sinker_rps_minsinker_rps_minrecords/sLowest sink write rate in one sampled second of the window.
sinker_rps_avgsinker_rps_avgrecords/sAverage sink write rate across sampled seconds of the window.
sinker_bps_maxsinker_bps_maxbytes/sHighest sink write byte rate in one sampled second of the window.
sinker_bps_minsinker_bps_minbytes/sLowest sink write byte rate in one sampled second of the window.
sinker_bps_avgsinker_bps_avgbytes/sAverage sink write byte rate across sampled seconds of the window.
sinker_rt_maxsinker_rt_maxmillisecondsHighest per-second sum of recorded sink-operation response times in the window. This is not a per-request latency percentile.
sinker_rt_minsinker_rt_minmillisecondsLowest per-second sum of recorded sink-operation response times in the window.
sinker_rt_avgsinker_rt_avgmillisecondsAverage per-second sum of recorded sink-operation response times across sampled seconds.
sinker_workers_configuredsinker_workers_configuredworkersNumber of sinker instances registered for the task.
sinker_workers_busysinker_workers_busyworkersNumber of registered sinkers currently executing a tracked sinker operation. Tracked operations include data writes, metadata refresh, and control-item processing such as table-finish handling; close is not tracked. This is a point-in-time value sampled at refresh.
sinker_workers_per_drain_maxsinker_workers_per_drain_maxworkers/drainMaximum number of distinct sinkers that received non-empty business data in one pipeline drain during the current window.
sinker_workers_per_drain_avgsinker_workers_per_drain_avgworkers/drainAverage number of distinct sinkers that received non-empty business data per pipeline drain during the current window.
sinker_sinked_recordssinker_sinked_recordsrecordsCumulative number of records successfully written to the target.
sinker_sinked_bytessinker_sinked_bytesbytesCumulative estimated bytes successfully written to the target.
sinker_ddl_countsinker_ddl_countoperationsCumulative number of DDL operations processed by the sink side. CDC tasks only.

Checker metrics

Checker metrics are populated only when a data checker is running.

Task log fieldPrometheus metricUnitMeaning
checker_miss_countchecker_miss_totalrecordsCumulative number of records missing from the target.
checker_diff_countchecker_diff_totalrecordsCumulative number of records whose source and target values differ.
checker_pendingchecker_queue_sizerecordsCurrent number of unresolved records tracked by the checker.
checker_rps_maxchecker_rps_maxrecords/sHighest check rate in one sampled second of the window.
checker_rps_minchecker_rps_minrecords/sLowest check rate in one sampled second of the window.
checker_rps_avgchecker_rps_avgrecords/sAverage check rate across sampled seconds of the window.
checker_miss_rps_maxchecker_miss_rps_maxrecords/sHighest missing-record rate in one sampled second of the window.
checker_miss_rps_minchecker_miss_rps_minrecords/sLowest missing-record rate in one sampled second of the window.
checker_miss_rps_avgchecker_miss_rps_avgrecords/sAverage missing-record rate across sampled seconds of the window.
checker_diff_rps_maxchecker_diff_rps_maxrecords/sHighest differing-record rate in one sampled second of the window.
checker_diff_rps_minchecker_diff_rps_minrecords/sLowest differing-record rate in one sampled second of the window.
checker_diff_rps_avgchecker_diff_rps_avgrecords/sAverage differing-record rate across sampled seconds of the window.

Snapshot progress metrics

Task log fieldPrometheus metricUnitMeaning
progressprogresspercentSnapshot completion percentage, calculated as finished_progress_count * 100 / total_progress_count and capped at 100.
total_progress_countNot exportedtablesTotal number of tables used as the snapshot progress denominator.
finished_progress_countNot exportedtablesNumber of tables counted as finished by the snapshot pipeline.

Reserved fields

TaskMetricsType also defines delay and pipeline_record_size_max. The current TaskMonitor does not populate them and the Prometheus exporter does not register them. They should not be used for alerts or dashboards until an implementation is added.