Get 50 GB free!Register for a free account and start migrating today — no credit card required.Register now →
GodwitGodwit Sync
HomePricingDownloadsDocs
Customer PortalGet Started
Get Started
Prometheus

Prometheus Metrics

Complete reference for all Prometheus metrics exported by Godwit Sync, including counters, histograms, gauges, and Go runtime metrics.

Enabling Metrics

Pass --status-addr to expose a /metrics endpoint in Prometheus exposition format.

godwit sync --source s3://src --dest s3://dst --status-addr :8080

# Scrape metrics
curl localhost:8080/metrics

Add a scrape job to your Prometheus configuration:

# prometheus.yml
scrape_configs:
  - job_name: godwit
    static_configs:
      - targets: ["localhost:8080"]

Counters

Monotonically increasing values tracking cumulative totals.

MetricTypeLabelsDescription
godwit_objects_totalCounterVecstatusObjects processed by terminal status (completed, failed, storage_type_glacier, unsupported_key, excluded)
godwit_bytes_totalCounterVecdirBytes processed by direction (read, write, storage_type_glacier, unsupported_key)
godwit_requests_totalCounterVecop, codeS3 API requests by operation and HTTP status code
godwit_upload_type_totalCounterVectypeUpload type distribution (single, multipart)
godwit_multipart_sessions_totalCounterVecactionMultipart session lifecycle (created, resumed, aborted)
godwit_multipart_parts_totalCounterVecactionMultipart parts by action (uploaded, skipped)
godwit_retries_totalCounterVecdirTask/part retry attempts by direction (read = source error, write = sink error)
godwit_source_list_retries_totalCounter—Source listing retry attempts
godwit_partial_upload_wasted_bytes_totalCounter—Bytes lost due to failed multipart uploads
godwit_verify_totalCounterVecresultVerification outcomes (matched, mismatched, error)
godwit_run_transfer_bytes_totalCounterVecrun_id, dirCumulative bytes transferred per run; use rate() for throughput

Histograms

Observe values bucketed into configurable ranges. Each histogram exposes _bucket, _sum, and _count series.

MetricTypeLabelsBucketsDescription
godwit_part_latency_secondsHistogramVecopDefaults (0.005–10 s)Latency of multipart operations
godwit_task_duration_secondsHistogram—Exp 0.01×2ⁿ (10 ms–163 s)Per-object transfer duration
godwit_object_size_bytesHistogram—Exp 1×4ⁿ (1 B–256 GB)Object size distribution at plan time
godwit_task_attemptsHistogram—Linear 1..10Attempt count per task (1 = first try)
godwit_multipart_parts_per_objectHistogram—Exp 1×2ⁿ (1–8192)Multipart parts per object
godwit_s3_request_secondsHistogramVecrun_id0.01–60 sDuration of individual S3 API requests

Gauges

Point-in-time values that can go up or down.

MetricTypeLabelsDescription
godwit_objectsGaugeVecstateObject count by state (total, done, failed, skipped, pending, running, excluded)
godwit_bytesGaugeVecstateByte count by state (total, done, failed, skipped, pending, running, excluded)
godwit_eta_secondsGauge—Estimated seconds to completion
godwit_duration_secondsGaugeVecphaseDuration by phase (plan, sync, elapsed)
godwit_throughput_bytes_per_secondGauge—Current transfer throughput
godwit_warningsGaugeVecreasonWarning counts (glacier_skipped, unsupported_key_skipped)
godwit_key_issuesGaugeVectypeKey issues (case_conflict, unsupported_key)
godwit_storage_class_objectsGaugeVecclassObjects per S3 storage class
godwit_storage_class_bytesGaugeVecclassBytes per S3 storage class
godwit_license_bytesGaugeVectypeLicense byte metrics (limit, used)
godwit_license_limit_hitGauge—1 if license cap was reached, 0 otherwise
godwit_active_workersGauge—Configured parallel workers (--parallel)
godwit_buffer_capacityGauge—Copy-queue buffer size
godwit_config_rpsGauge—Configured requests/s limit (0 = unlimited)
godwit_config_read_bpsGauge—Configured read B/s limit (0 = unlimited)
godwit_config_max_inflightGauge—Configured max inflight uploads (0 = unlimited)
godwit_config_max_retriesGauge—Configured max retries per object (0 = no retries, set by --retry)
godwit_config_retry_base_delay_secondsGauge—Configured base retry delay in seconds; doubles on each attempt (set by --retry-backoff)
godwit_run_infoGaugeVecrun_id, source, destinationStatic run metadata; always 1 while the run is active
godwit_run_started_timestampGaugeVecrun_idUnix timestamp when the run started
godwit_run_completed_timestampGaugeVecrun_idUnix timestamp when the run finished
godwit_run_stageGaugeVecrun_id, stageCurrent run stage; value 1 for the active stage, 0 otherwise (planning, transferring, verifying, completed, failed)
godwit_run_objects_totalGaugeVecrun_idTotal planned objects for the run
godwit_run_objects_completedGaugeVecrun_idObjects completed (transferred or skipped)
godwit_run_objects_failedGaugeVecrun_idObjects that failed during transfer
godwit_run_objects_skippedGaugeVecrun_idObjects skipped (already exist or excluded)
godwit_run_bytes_totalGaugeVecrun_idTotal planned bytes for the run
godwit_run_bytes_transferredGaugeVecrun_idBytes transferred so far
godwit_run_bytes_verifiedGaugeVecrun_idBytes verified during post-transfer check
godwit_verify_duration_secondsGaugeVecrun_idWall-clock duration of the verification phase in seconds
godwit_plan_created_timestampGaugeVecrun_idUnix timestamp when the plan was created

Runtime & Process Metrics

Automatically collected by the Go runtime and the Prometheus client library.

MetricTypeDescription
go_goroutinesGaugeCurrent number of goroutines
go_threadsGaugeOS threads created
go_memstats_heap_inuse_bytesGaugeHeap bytes in active use
go_memstats_alloc_bytesGaugeBytes allocated on heap (live)
go_gc_duration_secondsSummaryGC pause duration distribution
process_cpu_seconds_totalCounterTotal CPU seconds (user+system)
process_resident_memory_bytesGaugeResident memory size (RSS)
process_open_fdsGaugeOpen file descriptors

Example PromQL Queries

Common queries for monitoring Godwit Sync transfers.

# Transfer progress percentage
godwit_objects{state="done"} / godwit_objects{state="total"} * 100

# Current failure rate
rate(godwit_objects_total{status="failed"}[5m])

# p99 upload latency
histogram_quantile(0.99, rate(godwit_task_duration_seconds_bucket[5m]))

# Median object size
histogram_quantile(0.5, rate(godwit_object_size_bytes_bucket[5m]))

# Multipart resume ratio
godwit_multipart_sessions_total{action="resumed"}
  / (godwit_multipart_sessions_total{action="created"}
   + godwit_multipart_sessions_total{action="resumed"})

# Storage class distribution
godwit_storage_class_objects

# Process CPU usage rate
rate(process_cpu_seconds_total[5m])

# Heap memory in use
go_memstats_heap_inuse_bytes

# --- Migration-run metrics (Layer 2) ---

# Current run stage (planning / transferring / verifying / completed / failed)
godwit_run_stage{stage="transferring"}

# Per-run transfer throughput (bytes/s)
rate(godwit_run_transfer_bytes_total[1m])

# Run progress percentage
godwit_run_objects_completed / godwit_run_objects_total * 100

# p99 single-object transfer latency
histogram_quantile(0.99, rate(godwit_task_duration_seconds_bucket[5m]))

# Median S3 request latency
histogram_quantile(0.5, rate(godwit_s3_request_seconds_bucket[5m]))

# Pipeline queue depth (pending objects)
godwit_objects{state="pending"}

# Verification failure rate
rate(godwit_verify_total{result=~"mismatched|error"}[5m])

# Run wall-clock duration
godwit_run_completed_timestamp - godwit_run_started_timestamp
← GuidesStatus Endpoint →
Godwit Sync

Production-grade data migration and synchronization for large object storage. Control, predictability, and safety at scale.

Product

  • Pricing
  • Documentation

Legal

  • Terms of Service
  • User Agreement
  • Privacy Policy

© 2026 Godwit Sync. All rights reserved.

Version v1.0.19