Imported from zerokrab/bento-hancho (
crates/hancho/src/metrics/AGENTS.md). Install upstream withnpx skills add zerokrab/bento-hancho --skill metrics. Copyright stays with the author.
Metrics Implementation Notes
Separate metric groups for HTTP/API (metrics/api.rs), worker + job/taskdb (metrics/worker.rs), and request-level/request-queue (metrics/request_queue.rs), all wired through metrics/mod.rs::Metrics.
- DB is the source of truth for counts:
- Worker online/offline gauges (
worker_online_count,worker_offline_count) are derived from theworkerstable viaHanchoSQLiteDB::get_worker_state_counts. - Per-worker job gauges (
worker_running_jobs_count{worker_id},worker_completed_jobs_count{worker_id},worker_failed_jobs_count{worker_id}) are derived fromworker_jobsviaget_worker_job_state_counts. - Request metrics (
request_state_count{state}) are derived from therequeststable viaget_request_state_counts.
- Worker online/offline gauges (
- Where metrics are synced on each scrape:
api/rest_api.rs::get_metricscalls:worker_registry.sync_metrics(&state.metrics)for worker + job gauges.request_queue.sync_metrics(&state.metrics)for request state gauges.
- Where to add new metrics:
- HTTP/API-level metrics → extend
metrics/api.rsand plumb throughMetrics. - Worker/taskdb-level metrics → extend
metrics/worker.rsand expose helpers onWorkerMetrics. - Request-/RequestQueue-level metrics → extend
metrics/request_queue.rsand updateRequestQueue::sync_metrics.
- HTTP/API-level metrics → extend
