This is a local stack that you can boot with docker-compose which will give you: Traefik, Grafana, Prometheus, cAdvisor, Node-Exporter, AlertManager, Python App instrumented with Prometheus
Note: This is a more updated solution:
Stack will give you:
- Traefik: Reverse Proxy and domain configured is
*.localdns.xyzwhich all resolves to 127.0.0.1 - Grafana: Dashboarding
grafana.localdns.xyz - Prometheus: Time Series DB
prometheus.localdns.xyz - Node-Exporter: Node Level Metrics
- cAdvisor: Container Level Metrics
- Alertmanager: Creates Alerts from Prometheus Metrics
alertmanager.localdns.xyz - Python Flask App: Instrumented with Prometheus
flask-app.localdns.xyz
We are using loki to ship logs from our containers, so we need to install the loki docker driver:
$ docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
To boot your stack in localhost mode (ie. traefik.localdns.xyz -> 127.0.0.1):
$ docker-compose up --build -d
To boot your stack in ip mode (ie. traefik.10.2.3.4.nip.io -> 10.2.3.4):
$ IP=$(curl -s -4 ifconfig.co)
$ export DOMAIN=${IP}.nip.io
$ docker-compose up --build -d
Access http://traefik.localdns.xyz for viewing the Traefik Dashboard, or grafana.localdns.xyz to access Grafana and 2 pre-made dashboards will be visible to view node and container level metrics.
The default user/pass is admin/admin
Access prometheus.localdns.xyz to access Prometheus UI
For the web application you can access it on flask-app.localdns.xyz, and has the following endpoints:
//wait/{int}- how long the request should take in seconds/status/{int}- the status code that should be captured/skip- does not collect metrics/metricsview the metrics that is exporter for prometheus to scrape
For more detailed alerting have a look at my prometheus-alerting-alertmanager repo: