This demo sets up Prometheus and Grafana on a Docker Swarm cluster. It monitors cAdvisor for container metrics, Node Exporter for host metrics, and the Docker Engine for Docker-internal metrics.
This demo requires a Swarm cluster to be set up.
Run our own Docker image registry:
docker service create --name registry --publish 5000:5000 registry:2
Build custom Prometheus image with our config baked in:
docker build -t localhost:5000/prometheus .
Push our custom Prometheus image to our registry:
docker push localhost:5000/prometheus
Deploy Prometheus, Grafana, and the necessary exporters, as a Docker Stack with the name prometheus
:
docker stack deploy -c compose.yml prometheus
You can reach Prometheus on any host of the cluster on port 9090
.
You can reach Grafana on any host of the cluster on port 3000
. The login is admin
/ admin
.
For each host, show the total CPU usage in cores:
sum without(cpu, mode) (rate(node_cpu{mode!="idle"}[1m]))
For each Docker container, show the total CPU usage:
sum without(cpu) (rate(container_cpu_usage_seconds_total{id=~"/docker/.*"}[1m]))
Swarm-wide, show the per-second rate of all Docker engine container actions.
sum without(instance) (rate(engine_daemon_container_actions_seconds_count[1m]))