Skip to content
GET /metrics

Served by the Node entry (npm start, servePinboard with a metricsRegistry) only. Always at /metrics, ignoring basePath. Counters are per node; gauges about the fleet read a shared overview cached for 5 s.

Authentication

pinboard:operator scope with an unrestricted claim: namespaces contains "*", and hostnames and envs are absent or contain "*". Metrics cannot be filtered per caller.

Example

curl https://pinboard.example.com/metrics \
  -H "Authorization: Bearer $PINBOARD_OPERATOR_TOKEN"

Response

200

text/plain Prometheus exposition.

MetricTypeLabelsDescription
pinboard_http_requests_totalcountermethod, route, status_codeHTTP requests, upgrades excluded
pinboard_http_request_duration_secondshistogrammethod, route, status_codeRequest duration
pinboard_internal_errors_totalcountersourceCaught errors, by source
pinboard_registered_workersgaugeLive workers, fleet-wide
pinboard_active_placementsgaugeLive placements, fleet-wide
pinboard_active_hostnamesgaugeDistinct hostnames with live workers
pinboard_active_envsgaugeDistinct envs with live workers
pinboard_placement_resolutions_totalcounteroutcomeResolutions; outcomes as in Node health
pinboard_event_loop_lag_secondsgaugeEvent loop lag, mean over 2 s
pinboard_forwards_totalcounterkind (http, upgrade)Forwards started
pinboard_forward_failures_totalcounteroutcome (aborted, unreachable, failed)Forwards that did not complete
pinboard_takeovers_totalcounterstrategy, outcomeCross-hostname takeovers
pinboard_degraded_heartbeats_totalcounterreasonHeartbeats whose probe failed, plus mismatch voids
pinboard_register_rejections_totalcounteraccount, pool, reason (policy, conflict, invalid)Rejected registrations
pinboard_data_plane_connectionsgaugeOpen forwards and tunnels on this node

route is /healthz, /readyz, /:namespace/:id, an exact /registry/* path, or unknown.

The Node default metrics from @prometheus-io/client (collectDefaultMetrics) are also exported with the pinboard_ prefix, for example pinboard_process_resident_memory_bytes.

Errors

StatusBodyWhen
401{"error":"unauthorized"}No accepted credential
403{"error":"forbidden"}No pinboard:operator scope, malformed claim, or a restricted claim
404{"error":"unknown namespace"}Metrics not configured (the path falls through to routing)
500{"error":"metrics collection failed"}Collection threw

/metrics does not check whether the node is serving.