DEV Community

Cover image for Monitoring setup with docker-compose - Part 2: Grafana
Mirco
Mirco

Posted on • Updated on

Monitoring setup with docker-compose - Part 2: Grafana

I assume that you have Prometheus running as described in part 1 of the series.

In short: what is Grafana?

Grafana is a tool to create rich dashboards from your metrics.
Grafana can ingest from many different data sources, including Prometheus.

Configuration

Grafana can work without any configuration files. However, we want to configure Prometheus as a data source, so we create grafana/provisioning/datasources/prometheus_ds.yml.

grafana/provisioning/datasources/prometheus_ds.yml

This configuration file will tell Grafana about Prometheus. You could omit this and add the configuration via the Grafana UI.

Add the following to grafana/provisioning/datasources/prometheus_ds.yml:

datasources:
- name: Prometheus
  access: proxy
  type: prometheus
  url: http://prometheus:9090
  isDefault: true
Enter fullscreen mode Exit fullscreen mode

docker-compose.yml

Next, add the following to docker-compose.yml to add Grafana:

  grafana:
    image: grafana/grafana:7.5.7
    ports:
      - 3000:3000
    restart: unless-stopped
    volumes:
      - ./grafana/provisioning/datasources:/etc/grafana/provisioning/datasources
      - grafana-data:/var/lib/grafana

Enter fullscreen mode Exit fullscreen mode

The first volume points to our data source configuration. The second volume is used to save dashboards etc. We need to add the second volume to the volumes section in docker-compose.yml:

volumes:
  prometheus-data:

  grafana-data:
Enter fullscreen mode Exit fullscreen mode

Start

Start Prometheus and Grafana:

docker-compose up -d
Enter fullscreen mode Exit fullscreen mode

and open http://localhost:3000 in your browser. Use user admin with password admin for the first login.

You should see the Grafana Landing Page after login:
Grafana Landing Page

Add the first dashboard

Go to http://localhost:3000/dashboard/new to add a new dashboard (or use the plus sign in the navigation bar).

Add an empty panel
Click on Add an empty panel.

Empty panel before

In the dropdown which says -- Grafana -- select Prometheus. You can select Prometheus here because we added the configuration earlier.

Now we need Grafana to tell what to graph. Add the following PromQL statement to the input field metric:

increase(prometheus_http_requests_total[1m])
Enter fullscreen mode Exit fullscreen mode

This will show you how often Prometheus endpoints were called. To learn more about PromQL, see the official documentation.

New panel

Click on Apply to save and go back to the dashboard. Finally, click on the dashboard save button in the upper right corner.

Your final dashboard

Final dashboard

Great! Next time I will show you how to add AlertManager to the stack.

See the full source code on GitHub

If this article was helpful for your, please consider to buy me a coffee :-)
ko-fi

Top comments (3)

Collapse
 
roppa profile image
Mark Robson

Thank you! This is perfect. Clear and to the point

Collapse
 
ablx profile image
Mirco

Happy it was helpful to you!

Collapse
 
allanshady profile image
Allan Camilo

Great article. Thanks!