How to Set Up Docker Compose For Prometheus + Grafana

Written by neenadingole | Published 2023/02/07
Tech Story Tags: docker-compose | grafana | grafana-and-prometheus | software-testing | golang | prometheus | web-applications | containers | web-monetization

TLDRPrometheus + Grafana is a docker-compose setup for testing end-to-end. I am using it to send telemetry data from my Golang web application to Prometheus and then create a GraFana dashboard out of it. If you also need a similar setup and save your setup time in future refer to this post or my Github Repository.via the TL;DR App

With all the tools you have in production, it’s important that you can effortlessly test the user flows end-to-end, locally. The rationale behind such is the reduced feedback cycle that saves a developer a lot of time to achieve the desired outcome.

I was working on sending some telemetry data from my Golang web application to Prometheus, and then creating a Grafana dashboard out of it. But to test the flow, I needed a local setup of Prometheus + Grafana to check if the metrics were correct, and that I was building the right PromQL query to create the dashboard.

I am maintaining a Github repo for all the docker-compose setups I require for my local testing, with Prometheus + Grafana being a new addition to it. If you need a similar setup, refer to this post or my Github Repository and save your setup time to focus more on building things.

Clone the repo: https://github.com/ninadingole/docker-images

Then go to prometheus-grafana folder and run docker-compose up -d.

This will start Prometheus on http://localhost:9090 and Grafana on http://localhost:3000.

There is also a prometheus.yml, the configuration file which you can use to add the local apps that you want to scrape.

Note: if your application is running inside a docker, then use host.docker.internal as your hostname with the port to scrape the target.

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']
  - job_name: app
    scrape_interval: 5s
    static_configs:
      - targets: ['host.docker.internal:10088']

Once you have added the configs to connect Grafana to Prometheus like the image above, you are ready with an end-to-end setup on your local.

If you also have your own docker-compose stack setups that you use during your development, please don't hesitate to share with me by sending me a PR to the repository.


I hope you will find this docker-compose configuration useful and time saving. Please subscribe to the newsletter to get more articles delivered right to your inbox.

Thanks and Happy Coding!

Reference


Written by neenadingole | Sharing my day to day findings through blogging
Published by HackerNoon on 2023/02/07