Docker Monitoring Stack with Grafana
In this tutorial we will dive a bit deeper into the docker-monitoring-stack-gpnc repository, on how to setup a docker monitoring stack that runs grafana, prometheus, node-exporter, cadvisor and alertmanager, which includes node and container level metric dashboards.
About
The repo has been built to get a monitoring stack up and running within seconds and the components includes:
- Grafana: For visualising graphs
- Prometheus: Timeseries Database for Metrics
- cAdvisor: Exposes Container Metrics
- Node-Exporter: Exposes Node Metrics
- Alertmanager: Manages Alerts
Setup
First clone the repository:
git clone https://github.com/ruanbekker/docker-monitoring-stack-gpncThen change into the directory:
cd docker-monitoring-stack-gpncYou can inspect the docker-compose.yml file to view all the container’s and it’s configuration.
You will notice there’s a Makefile so to view the targets run make:
help This help.
up Runs the containers in detached mode
clean Stops and removes all containers
logs View the logs from the containers
open Opens tabs in containerBoot
To boot the stack, we can use make up, but for this tutorial we will use the docker commands:
docker-compose up -dEnsure all containers are running:
docker-compose psThe output should look like this:
Name Command State Ports
--------------------------------------------------------------------------------------
cadvisor /usr/bin/cadvisor -logtostderr Up (healthy) 8080/tcp
grafana /run.sh Up 0.0.0.0:3000->3000/tcp
node-exporter /bin/node_exporter --path. ... Up 9100/tcp
prometheus /bin/prometheus --config.f ... Up 0.0.0.0:9090->9090/tcp
alertmanager /bin/alertmanager --config ... Up 0.0.0.0:9093->9093/tcpAccess grafana on Grafana Home (or make open) and you should see the two dashboards that was provisioned:
Once you select the nodes dashboard, it should look something like this:
When you select “Alerting” and “Alert rules” you will find the recording and alerting rules:
We can expand the alerting rules:
And then we can view more detail on a alert rule:
And for our container metrics we can access the Container Metrics dashboard:
Endpoints
The following endpoints are available:
Container, Endpoint
- Grafana: http://localhost:3000
- Prometheus: http://localhost:9090
- Node-Exporter: http://localhost:9100
- cAdvisor: N/A
- Alertmanager: http://localhost:9093
Cleanup
To remove the containers using docker compose (or make clean):
docker-compose downGithub Repository
You can find the github repository below, if you find it useful, please share or send me some love with a star:
Thank You
Thanks for reading, if you like the project, feel free to star, fork or share it, check out my website, read my newsletter or follow me at @ruanbekker on Twitter.
