Grafana-Loki-Minio
Description
This dokcer run stack grafana, loki, promtail, minio
Container
| Name | URL | Description |
|---|---|---|
| <COMPOSE_PROJECT_NAME>-dns-tools-1 | - | container with dns tools (just use for debug) |
| <COMPOSE_PROJECT_NAME>-proxy-1 | https://<server_fqdn> |
nginx proxy |
| <COMPOSE_PROJECT_NAME>-minio-1 | UI: https://<server_fqdn>/minio/uiAPI: http://127.0.0.1:9000 |
container minio server UI and API |
| <COMPOSE_PROJECT_NAME>-grafana-1 | https://<server_fqdn>/grafana |
grafana |
| <COMPOSE_PROJECT_NAME>-minio-cli-1 | - | client minio |
| <COMPOSE_PROJECT_NAME>-prometheus-1 | http://<server_fqdn>:9090 |
prometheus |
| <COMPOSE_PROJECT_NAME>-node-exporter-1 | - | node metrics for prometheus |
Requirements
Certificats
Create a folder named /home/docker/certs and copy your certificates into it.
sudo mkdir -p /home/docker/certs
Variables
All variables are described in the .env.dist file
Copy the .env.dist file to .env and update it with values appropriate for your setup.
Proxy (nginx)
Create the folder where the ngnix config will be stored and copy the config/nginx.conf into it
sudo mkdir -p /home/docker/nginx
sudo cp ./config/default.conf /home/docker/nginx/.
Minio
Create the folder where the minio data will be stored
sudo mkdir -p /home/docker/minio
Minio client
Create the folder where the minio client comfig will be stored
sudo mkdir -p /home/docker/minio-cli
Grafana
Create the folder where the grafana data will be stored
sudo mkdir -p /home/docker/grafana
Prometheus
Create the folder where the grafana data will be stored
sudo mkdir -p /home/docker/prometheus
Create the folder where the prometheus data will be stored
sudo mkdir -p /home/docker/prometheus-data
Run
docker compose up -d
Config
Minio client
Create an alias
docker exec -it <COMPOSE_PROJECT_NAME>-minio-cli-1 /bin/sh -c "mc alias set myminio http://minio:9000 <MINIO_ACCESS_KEY> <MINIO_SECRET_KEY>"
Create prometheus metrics job
docker exec -it <COMPOSE_PROJECT_NAME>-minio-cli-1 /bin/sh -c "mc admin prometheus generate myminio"
Copy the output into prometheus.yml
scrape_configs:
- job_name: minio-job
bearer_token: eyJhbGciOiJIUzUxMiIs..InR5cCI6IkpXVCJ9
metrics_path: /minio/v2/metrics/cluster
scheme: http
static_configs:
- targets: ['minio:9000']
Restart prometheus
docker compose restart prometheus
Add dashboard 13502 - MinIO Dashboard to grafana
Prometheus
grafana source
http://prometheus:9090
grafana dashboard
3662 - Prometheus 2.0 Overview
Node exporter
grafana dashboard
1860 - Node Exporter Full
Access
dns-tools
docker exec -it <COMPOSE_PROJECT_NAME>-dns-tools /bin/bash
dig minio-server
ping minio-server
nslookup minio-server
minio
https://<server_fqdn>/minio/ui/
minio-cli
docker exec -it <COMPOSE_PROJECT_NAME>-minio-cli-1 /bin/sh
grafana
https://<server_fqdn>/grafana/
prometheus
http://<server_fqdn>:9090
Metrics access
node-exporter
docker exec -it <COMPOSE_PROJECT_NAME>-proxy-1 /bin/sh -c "curl http://node-exporter:9100/metrics"
prometheus
docker exec -it <COMPOSE_PROJECT_NAME>-proxy-1 /bin/sh -c "curl http://prometheus:9090/metrics"
minio
TOKEN=$(echo "Authorization: Bearer $(grep "bearer_token" config/prometheus.yml | cut -d':' -f2 |cut -d' ' -f2)")
docker exec -it gmo-loki-proxy-1 /bin/bash -c "curl -H \"Accept: application/json\" -H \"${TOKEN}\" http://minio:9000/minio/v2/metrics/cluster"
Sources
Minio
- https://github.com/Anagraph/minio-docker-config/blob/master/docker-compose.yaml
- https://min.io/docs/minio/linux/integrations/setup-nginx-proxy-with-minio.html
Grafana
- https://grafana.com/docs/loki/latest/setup/install/docker/
- https://grafana.com/tutorials/run-grafana-behind-a-proxy/
Prometheus
Changelog
[1.1.0] - 2025-06-09
Added
- prometheus container
- node exporter container
- grafana dashboard
- 1860 - Node Exporter Full
- 3662 - Prometheus 2.0 Overview
- 13502 - MinIO Dashboard
[1.0.0] - 2025-06-08
Added
- init docker container
- proxy with nginx
- minio container
- grafana container
Project initialization
- initialization by GMo