Metrics
GET /metrics serves these series in the Prometheus text format when --server-enable-prometheus is set. Protect it with --server-prometheus-auth or move it to a private listener with --server-prometheus-bind-address and --server-prometheus-bind-port.
| Metric | Type | Labels | Description |
|---|
zshot_requests_total | counter | endpoint, format, outcome | Completed renders. outcome is success or error. |
zshot_request_duration_seconds | histogram | format, cache, status | REST render response time; MCP renders are not counted. cache is hit or miss; status is the HTTP status code. |
zshot_requests_in_flight | gauge | | Renders in progress. |
zshot_requests_queued | gauge | | Requests waiting in the concurrency queue. |
zshot_browsers_open | gauge | kind | Browsers open. kind is render for a request’s own browser, crawl for a crawl’s further browsers, or cdp for --cdp pages. A crawl counts as one request in flight however many browsers it runs. |
zshot_auth_failures_total | counter | endpoint, format, reason | Rejected credentials or signatures. |
zshot_llm_calls_total | counter | role, provider, name | Navigator and formatter model calls, failed calls included. |
zshot_llm_tokens_total | counter | role, provider, name, type | Model tokens. type is input or output; input includes cached tokens. |
zshot_llm_cache_tokens_total | counter | role, provider, name, type | Cached input tokens. type is read or write. |
zshot_http_requests_total | counter | method, endpoint, status | Every HTTP request. |
zshot_http_requests_duration_seconds | histogram | method, endpoint, status | Every HTTP request’s response time. |
zshot_http_requests_pending | gauge | method, endpoint | HTTP requests in progress. |
Labels
| Label | Values |
|---|
endpoint on zshot_* series | get, post, delete, mcp, assets, metrics |
endpoint on zshot_http_* series | the request path |
format | the output type’s extension, or none for /metrics |
reason | missing_credentials, invalid_credentials, missing_signature, invalid_signature, expired_signature, missing_expires, expires_too_far |
role | navigator or formatter |
name | the model’s name=, empty without one; past 100 distinct names, (other) |