> ## Content Index
> Fetch the complete content index at: https://ostreff.info/llms.txt
> Use this file to discover other available public pages before exploring further.

# Monitoring Caddy with Netdata or with Prometheus and Grafana
- URL: https://ostreff.info/monitoring-caddy-with-netdata-or-with-prometheus-and-grafana-2/
- Published: 2025-02-23T19:26:04.000Z
- Updated: 2025-02-25T22:13:18.000Z
- Author: Jordan Ostreff
- Tags: caddy, #netdata, #prometheus

How to monitor [Caddy](https://caddyserver.com/?ref=ostreff.info) by collecting metrics with [Prometheus](https://prometheus.io/?ref=ostreff.info)? Simple - use the caddy's [global options](https://caddyserver.com/docs/caddyfile/options?ref=ostreff.info) to enable prometheus metrics.

```bash
{
	servers {
    	metrics
    }
    admin localhost:2019
}
```

```bash
$ curl -X GET http://localhost:2019/metrics

Admin API's HTTP endpoints.
# TYPE caddy_admin_http_requests_total counter
caddy_admin_http_requests_total{code="200",handler="admin",method="GET",path="/metrics"} 447
# HELP caddy_config_last_reload_success_timestamp_seconds Timestamp of the last successful configuration reload.
# TYPE caddy_config_last_reload_success_timestamp_seconds gauge
caddy_config_last_reload_success_timestamp_seconds 1.7403339685861294e+09
# HELP caddy_config_last_reload_successful Whether the last configuration reload attempt was successful.
# TYPE caddy_config_last_reload_successful gauge
caddy_config_last_reload_successful 1
# HELP caddy_http_request_duration_seconds Histogram of round-trip request durations.
# TYPE caddy_http_request_duration_seconds histogram
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.005"} 4891
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.01"} 5042
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.025"} 5150
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.05"} 5312
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.1"} 5511
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.25"} 5693
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="0.5"} 5812
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="1"} 5870
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="2.5"} 5925
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="5"} 5947
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="10"} 5971
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="GET",server="srv0",le="+Inf"} 6125
caddy_http_request_duration_seconds_sum{code="200",handler="subroute",method="GET",server="srv0"} 4859.046309072
caddy_http_request_duration_seconds_count{code="200",handler="subroute",method="GET",server="srv0"} 6125
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.005"} 1
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.01"} 1
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.025"} 1
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.05"} 1
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.1"} 2
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.25"} 5
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="0.5"} 14
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="1"} 16
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="2.5"} 18
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="5"} 18
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="10"} 18
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="HEAD",server="srv0",le="+Inf"} 18
caddy_http_request_duration_seconds_sum{code="200",handler="subroute",method="HEAD",server="srv0"} 8.707609485000003
caddy_http_request_duration_seconds_count{code="200",handler="subroute",method="HEAD",server="srv0"} 18
caddy_http_request_duration_seconds_bucket{code="200",handler="subroute",method="OPTIONS",server="srv0",le="0.005"} 280
...........
```

Voala:

[![](https://ostreff.info/content/images/2025/02/image.png)](https://netdata.ostreff.info/spaces/vivacom/rooms/ostreffinfo-local/overview?ref=ostreff.info#metrics%5Fcorrelation=false&after=-900&before=0&utc=Europe%2FSofia&offset=%2B2&timezoneName=Helsinki%2C%20Kyiv%2C%20Riga%2C%20Sofia%2C%20Tallinn%2C%20Vilnius&modal=&modalTab=&modalParams=&selectedIntegrationCategory=deploy.operating-systems&force%5Fplay=false&8c22b93e-fee2-4a11-a899-4d3b582b27f3%5Bnetdata%5Fagent%5Flocal%5D--chartName-val=menu%5FApplications-0%5Fcaddy%5Flocal%5F2%5Fsubmenu%5FApplications-0%5Fcaddy%5Flocal%5F2%5Fcaddy%5Fhttp%5F3)