Prometheus
Метрики Prometheus
Повний довідник усіх метрик Prometheus, що експортуються Godwit Sync, включаючи лічильники, гістограми, вимірювачі та метрики середовища Go.
Увімкнення метрик
Передайте --status-addr для відкриття ендпоінту /metrics у форматі Prometheus.
godwit sync --source s3://src --dest s3://dst --status-addr :8080
# Scrape metrics
curl localhost:8080/metricsДодайте завдання збору до конфігурації Prometheus:
# prometheus.yml
scrape_configs:
- job_name: godwit
static_configs:
- targets: ["localhost:8080"]Лічильники
Монотонно зростаючі значення, що відстежують кумулятивні підсумки.
| Метрика | Тип | Мітки | Опис |
|---|---|---|---|
| godwit_objects_total | CounterVec | status | Об’єкти за кінцевим статусом (completed, failed, storage_type_glacier, unsupported_key, excluded) |
| godwit_bytes_total | CounterVec | dir | Байти за напрямком (read, write, storage_type_glacier, unsupported_key) |
| godwit_requests_total | CounterVec | op, code | Запити S3 API за операцією та HTTP-кодом статусу |
| godwit_upload_type_total | CounterVec | type | Розподіл типів завантаження (single, multipart) |
| godwit_multipart_sessions_total | CounterVec | action | Життєвий цикл multipart-сесій (created, resumed, aborted) |
| godwit_multipart_parts_total | CounterVec | action | Multipart-частини за дією (uploaded, skipped) |
| godwit_retries_total | CounterVec | dir | Кількість повторів завдань/частин за напрямком (read = помилка джерела, write = помилка призначення) |
| godwit_source_list_retries_total | Counter | — | Спроби повторного отримання списку джерела |
| godwit_partial_upload_wasted_bytes_total | Counter | — | Байти, втрачені через невдалі multipart-завантаження |
| godwit_verify_total | CounterVec | result | Результати верифікації (matched, mismatched, error) |
| godwit_run_transfer_bytes_total | CounterVec | run_id, dir | Кумулятивні передані байти за запуск; використовуйте rate() для пропускної здатності |
Гістограми
Спостереження значень, розподілених по налаштовуваних діапазонах. Кожна гістограма створює серії _bucket, _sum та _count.
| Метрика | Тип | Мітки | Бакети | Опис |
|---|---|---|---|---|
| godwit_part_latency_seconds | HistogramVec | op | Стандартні (0.005–10 с) | Затримка multipart-операцій |
| godwit_task_duration_seconds | Histogram | — | Експ 0.01×2ⁿ (10 мс–163 с) | Тривалість передачі одного об’єкта |
| godwit_object_size_bytes | Histogram | — | Експ 1×4ⁿ (1 Б–256 ГБ) | Розподіл розмірів об’єктів на етапі планування |
| godwit_task_attempts | Histogram | — | Лінійні 1..10 | Кількість спроб на завдання (1 = перша спроба) |
| godwit_multipart_parts_per_object | Histogram | — | Експ 1×2ⁿ (1–8192) | Multipart-частини на об’єкт |
| godwit_s3_request_seconds | HistogramVec | run_id | 0.01–60 с | Тривалість окремих запитів S3 API |
Вимірювачі
Миттєві значення, які можуть зростати або зменшуватися.
| Метрика | Тип | Мітки | Опис |
|---|---|---|---|
| godwit_objects | GaugeVec | state | Кількість об’єктів за станом (total, done, failed, skipped, pending, running, excluded) |
| godwit_bytes | GaugeVec | state | Кількість байтів за станом (total, done, failed, skipped, pending, running, excluded) |
| godwit_eta_seconds | Gauge | — | Орієнтовний час до завершення (секунди) |
| godwit_duration_seconds | GaugeVec | phase | Тривалість за фазою (plan, sync, elapsed) |
| godwit_throughput_bytes_per_second | Gauge | — | Поточна пропускна здатність передачі |
| godwit_warnings | GaugeVec | reason | Кількість попереджень (glacier_skipped, unsupported_key_skipped) |
| godwit_key_issues | GaugeVec | type | Проблеми з ключами (case_conflict, unsupported_key) |
| godwit_storage_class_objects | GaugeVec | class | Об’єкти за класом сховища S3 |
| godwit_storage_class_bytes | GaugeVec | class | Байти за класом сховища S3 |
| godwit_license_bytes | GaugeVec | type | Метрики байтів ліцензії (limit, used) |
| godwit_license_limit_hit | Gauge | — | 1, якщо ліміт ліцензії досягнуто, інакше 0 |
| godwit_active_workers | Gauge | — | Налаштована кількість паралельних воркерів (--parallel) |
| godwit_buffer_capacity | Gauge | — | Розмір буфера черги копіювання |
| godwit_config_rps | Gauge | — | Налаштований ліміт запитів/с (0 = необмежено) |
| godwit_config_read_bps | Gauge | — | Налаштований ліміт читання Б/с (0 = необмежено) |
| godwit_config_max_inflight | Gauge | — | Налаштований макс. кількість активних завантажень (0 = необмежено) |
| godwit_config_max_retries | Gauge | — | Налаштований макс. кількість повторів на обʼєкт (0 = без повторів, задається --retry) |
| godwit_config_retry_base_delay_seconds | Gauge | — | Налаштована базова затримка між повторами в секундах; подвоюється з кожною спробою (задається --retry-backoff) |
| godwit_run_info | GaugeVec | run_id, source, destination | Статичні метадані запуску; завжди 1 поки запуск активний |
| godwit_run_started_timestamp | GaugeVec | run_id | Unix-мітка часу початку запуску |
| godwit_run_completed_timestamp | GaugeVec | run_id | Unix-мітка часу завершення запуску |
| godwit_run_stage | GaugeVec | run_id, stage | Поточна стадія запуску; значення 1 для активної стадії, 0 для інших (planning, transferring, verifying, completed, failed) |
| godwit_run_objects_total | GaugeVec | run_id | Загальна кількість запланованих об’єктів для запуску |
| godwit_run_objects_completed | GaugeVec | run_id | Завершені об’єкти (передані або пропущені) |
| godwit_run_objects_failed | GaugeVec | run_id | Об’єкти з помилкою під час передачі |
| godwit_run_objects_skipped | GaugeVec | run_id | Пропущені об’єкти (вже існують або виключені) |
| godwit_run_bytes_total | GaugeVec | run_id | Загальна кількість запланованих байтів для запуску |
| godwit_run_bytes_transferred | GaugeVec | run_id | Передані байти на даний момент |
| godwit_run_bytes_verified | GaugeVec | run_id | Верифіковані байти під час пост-перевірки |
| godwit_verify_duration_seconds | GaugeVec | run_id | Тривалість фази верифікації в секундах |
| godwit_plan_created_timestamp | GaugeVec | run_id | Unix-мітка часу створення плану |
Метрики середовища та процесу
Автоматично збираються середовищем Go та клієнтською бібліотекою Prometheus.
| Метрика | Тип | Опис |
|---|---|---|
| go_goroutines | Gauge | Поточна кількість горутин |
| go_threads | Gauge | Створені потоки ОС |
| go_memstats_heap_inuse_bytes | Gauge | Байти купи у активному використанні |
| go_memstats_alloc_bytes | Gauge | Виділені байти на купі (активні) |
| go_gc_duration_seconds | Summary | Розподіл тривалості пауз GC |
| process_cpu_seconds_total | Counter | Загальний час CPU (user+system) |
| process_resident_memory_bytes | Gauge | Розмір резидентної пам’яті (RSS) |
| process_open_fds | Gauge | Відкриті файлові дескриптори |
Приклади запитів PromQL
Типові запити для моніторингу передач Godwit Sync.
# 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