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-gpnc

Then change into the directory:

cd docker-monitoring-stack-gpnc

You 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 container

Boot

To boot the stack, we can use make up, but for this tutorial we will use the docker commands:

docker-compose up -d

Ensure all containers are running:

docker-compose ps

The output should looke 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/tcp

Access 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:

ContainerInternal EndpointExternal Endpoint
Grafanahttp://grafana:3000http://localhost:3000
Prometheushttp://prometheus:9090http://localhost:9090
Node-Exporterhttp://node-exporter:9100http://localhost:9100
cAdvisorhttp://cadvisor:8080N/A
Alertmanagerhttp://alertmanager:9093http://localhost:9093

Cleanup

To remove the containers using docker compose (or make clean):

docker-compose down

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.