Example of Rails, Sidekiq and Puma metrics exported to Prometheus + Grafana
May 27, 2019 ยท View on GitHub
This example illustrates how to use yabeda gem suite with rails application to draw graphs for app metrics.
Prerequisites
Recent versions of Docker and Docker Compose installed.
Usage
- Execute
docker-compose upto start. - Go to rails application at http://localhost:5000
- Hit the button and refresh page few times
- Go to Grafana Web UI at localhost (user:
admin/admin) - Look for graphs
- After starting up docker-compose will run
rails-stressorservice to simulate huge load for the rails app. By default will do the request for 2 minutes. Settings could be changed indocker-compose.ymlconfig (command parameter of therails_stressorservice).
You also could run rails stressor again by executing docker-compose up rails_stressor command.
Notes
- Sample Rails application is equipped with yabeda-rails, yabeda-sidekiq, yabeda-puma-plugin, and yabeda-prometheus gems and properly configured.
- Raw rails metrics are exposed at http://localhost:5000/metrics
- Raw sidekiq metrics are exposed at http://localhost:5100/metrics
- Raw puma metrics are exposed at http://localhost:5100/metrics
- The Prometheus Web UI runs at http://localhost:9090
- The Grafana Web UI runs at http://localhost:3000 , user:
admin/admin. - The Sidekiq Web UI is available at http://localhost:5000/sidekiq
Possible errors and their solutions
Permission denied error / My grafana container is not running (Stopping after boot)
If your grafana's container is not running correctly after you run docker-compose up you're probably getting this error, if you check at docker ps -a you'll see your grana container with the status Exited, picks the id of this container and run docker logs YOUR_GRAFANA_CONTAINER_ID and check if the errors is equal to the following:
GF_PATHS_DATA='/var/lib/grafana' is not writable.
You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migration-from-a-previou
s-version-of-the-docker-container-to-5-1-or-later
mkdir: cannot create directory '/var/lib/grafana/plugins': Permission denied
Solution
Replace at your docker-compose.yml line 38 by your user's id that you will get on the following command:
id -u
Acknowledgement
The configurations are based off the following articles and repositories:
- https://finestructure.co/blog/2016/5/16/monitoring-with-prometheus-grafana-docker-part-1
- https://github.com/NikolajLeischner/local-prometheus-grafana
- https://www.digitalocean.com/community/tutorials/how-to-add-a-prometheus-dashboard-to-grafana
License
This example is available as open source under the terms of the MIT License.