# Monitoring etcd Each etcd server exports metrics under the `/metrics` path on its client port. The metrics can be fetched with `curl`: ```sh $ curl -L http://localhost:2379/metrics | grep -v debugging # ignore unstable debugging metrics # HELP etcd_disk_backend_commit_duration_seconds The latency distributions of commit called by backend. # TYPE etcd_disk_backend_commit_duration_seconds histogram etcd_disk_backend_commit_duration_seconds_bucket{le="0.002"} 72756 etcd_disk_backend_commit_duration_seconds_bucket{le="0.004"} 401587 etcd_disk_backend_commit_duration_seconds_bucket{le="0.008"} 405979 etcd_disk_backend_commit_duration_seconds_bucket{le="0.016"} 406464 ... ``` ## Prometheus Running a [Prometheus][prometheus] monitoring service is the easiest way to ingest and record etcd's metrics. First, install Prometheus: ```sh PROMETHEUS_VERSION="2.0.0" wget https://github.com/prometheus/prometheus/releases/download/v$PROMETHEUS_VERSION/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz -O /tmp/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz tar -xvzf /tmp/prometheus-$PROMETHEUS_VERSION.linux-amd64.tar.gz --directory /tmp/ --strip-components=1 /tmp/prometheus -version ``` Set Prometheus's scraper to target the etcd cluster endpoints: ```sh cat > /tmp/test-etcd.yaml <> /tmp/test-etcd.log 2>&1 & ``` Now Prometheus will scrape etcd metrics every 10 seconds. ## Alerting There is a [set of default alerts for etcd v3 clusters](./etcd3_alert.rules). > Note: `job` labels may need to be adjusted to fit a particular need. The rules were written to apply to a single cluster so it is recommended to choose labels unique to a cluster. ## Grafana [Grafana][grafana] has built-in Prometheus support; just add a Prometheus data source: ``` Name: test-etcd Type: Prometheus Url: http://localhost:9090 Access: proxy ``` Then import the default [etcd dashboard template][template] and customize. For instance, if Prometheus data source name is `my-etcd`, the `datasource` field values in JSON also need to be `my-etcd`. See the [demo][demo]. Sample dashboard: ![](./etcd-sample-grafana.png) [prometheus]: https://prometheus.io/ [grafana]: http://grafana.org/ [template]: ./grafana.json [demo]: http://dash.etcd.io/dashboard/db/test-etcd