Skip to main content

Command Palette

Search for a command to run...

Docker Compose For Prometheus + Grafana

Updated
2 min read
Docker Compose For Prometheus + Grafana
N

I am a backend golang developer 👾, currently working at ProtectAI, Berlin. I am a tech enthusiast and love to explore tech and frameworks.

My Tech journey includes hands-on production application development in Golang, Java, Kotlin, Scala and Typescript.

I transitioned from a variety of job roles from backend -> big data -> UI -> Full Stack -> Backend 😅.

I share things that I am currently working on and the solutions to the problem that I face through my blog posts. I am trying to focus more on the problems we face that are rarely discussed than the pros and awesome things about new tech. I want to do it more often and would like more people to follow me and give me motivation 😊 so please do subscribe to the newsletter

It becomes important that with all the tools you have in production, you can test the user flows end to end locally with very fewer efforts. The rationale behind such is the reduced feedback cycle that saves a developer from taking a long 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 so that I can check if the metrics are right and that I am 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 and now Prometheus + Grafana is a new addition to it. If you also need a similar setup and save your setup time in future and focus more on building things refer to this post or my Github Repository.

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

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.

Prometheus running on localhost:9090

Grafana settings to connect to local Prometheus

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 above image, 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 pretty useful and saves you time. Please subscribe to the newsletter to get more articles delivered right to your inbox.

Thanks and Happy Coding!

Reference