This dashboard shows how Caddy handles traffic as a web server and reverse proxy. You can track request rate and status codes, request duration and time to first byte, handler errors, bandwidth, the health of reverse proxy upstreams, and config reloads.
The data comes from the metrics that Caddy v2.11.3 and newer push over OTLP when the metrics global option has otlp.

Recommended. Uses the V2 dashboard schema and needs SigNoz v0.135.0 or newer.
Import it in SigNoz with Dashboards → + New dashboard → Import JSON. Import guide
Dashboard Coverage
- Read the request rate and the share of 5xx responses.
- Break traffic down by route handler, status code, and HTTP method.
- Track request duration percentiles and time to first byte for each Caddy server.
- Find handler errors, such as an upstream that does not respond.
- Watch request and response bandwidth and payload sizes.
- Catch unhealthy reverse proxy upstreams and failed config reloads.
Metrics Included
Caddy records request metrics once for each route that a request matches, and labels them with the first handler of the route. To count each request once, the request panels read one route that sees every request, set by the route variable. Requests per Second by Handler is the exception: it shows every route so that you can pick one.
Overview
- Request Rate:
caddy_http_requests_total - 5xx Responses (%):
caddy_http_request_duration_seconds.count, 5xx codes divided by all codes - Requests In Flight:
caddy_http_requests_in_flight - Unhealthy Upstreams:
caddy_reverse_proxy_upstreams_healthy, the number of upstreams that report0
Traffic
- Requests per Second by Handler:
caddy_http_requests_totalbyserverandhandler, for every route. Use it to find the route that sees every request. - Requests per Second by Status Code:
caddy_http_request_duration_seconds.countbycode - Requests per Second by Method:
caddy_http_request_duration_seconds.countbymethod - Requests In Flight by Server:
caddy_http_requests_in_flightbyserver
Latency
- Request Duration (p50, p95, p99):
caddy_http_request_duration_seconds - p95 Request Duration by Server:
caddy_http_request_duration_secondsbyserver - p95 Request Duration by Status Code:
caddy_http_request_duration_secondsbycode - p95 Time to First Byte by Server:
caddy_http_response_duration_secondsbyserver
Errors
- 4xx and 5xx Responses per Second:
caddy_http_request_duration_seconds.countbycode - Middleware Errors per Second by Server:
caddy_http_request_errors_totalbyserver
Bandwidth
- Request Bandwidth by Server:
caddy_http_request_size_bytes.sum - Response Bandwidth by Server:
caddy_http_response_size_bytes.sum - p95 Request Size by Server:
caddy_http_request_size_bytes - p95 Response Size by Server:
caddy_http_response_size_bytes
Upstreams and Configuration
- Upstream Health:
caddy_reverse_proxy_upstreams_healthybyupstream. Caddy reports0only whenreverse_proxyhas active or passive health checks. - Last Config Reload Successful:
caddy_config_last_reload_successful
Dashboard Variables
- route: The first handler of the route that sees every request. The default is
tracing, which fits the setup guide. Withouttracing, pick the handler of your first route that has no matcher. The request, latency, error, and bandwidth panels use it. Requests per Second by Handler does not. - service_name: The
service.nameof your Caddy services, fromOTEL_SERVICE_NAME. Every panel uses it.
Next Steps
- Set up Caddy to send traces, metrics, and access logs to SigNoz.
- Create metric-based alerts on the 5xx percentage or on unhealthy upstreams.
- Go Runtime Metrics covers the
go_*metrics that Caddy also sends.