New Ory Agent Security is now live! Claim your complimentary test drive. Get Started!

Skip to main content

Prometheus metrics

Ory Talos exposes Prometheus metrics in commercial builds only. The commercial build tag gates both the HTTP request middleware (below) and the /metrics scrape endpoint. The OSS build ships a no-op metrics implementation and doesn't register /metrics.

Endpoint (commercial)​

Scrape metrics from /metrics on the metrics server:

GET http://localhost:4422/metrics

The metrics server listens on the metrics port (default 4422), separate from the main HTTP port (default 4420). It also serves /health/alive and /health/ready.

HTTP metrics​

MetricTypeLabelsDescription
http_requests_totalCountermethod, code, endpointTotal HTTP requests
http_request_duration_secondsHistogrammethod, code, endpointRequest latency
http_request_size_bytesHistogrammethod, codeRequest payload size
http_response_size_bytesHistogrammethod, codeResponse payload size
http_requests_in_flightGauge--Concurrent requests

Labels​

LabelDescriptionUsed by
methodHTTP method (lowercase)All except http_requests_in_flight
codeHTTP status codeAll except http_requests_in_flight
endpointRoute template, for example /v2alpha1/admin/issuedApiKeys/{key_id}http_requests_total, http_request_duration_seconds

Configuration​

Only the commercial edition honors the serve.metrics block. Both fields are immutable: changing them requires a server restart.

serve:
metrics: # Requires a commercial license.
host: "0.0.0.0"
port: 4422

Proxy metrics (commercial)​

The edge proxy exposes additional metrics under the talos_proxy_ namespace. See Edge proxy — Metrics for the table.

Example queries​

The commercial edition ships starter Grafana dashboards under commercial/observability/grafana/dashboards/boards/: platform-overview.json, http-api.json, api-lifecycle.json, database-health.json, and verification-slo.json. Start from these queries:

  • Request rate: rate(http_requests_total[5m])
  • P99 latency: histogram_quantile(0.99, rate(http_request_duration_seconds_bucket[5m]))
  • Error rate: rate(http_requests_total{code=~"5.."}[5m])