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