grafana-loki-minio/README.md

5.1 KiB

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/ui
API: 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
<COMPOSE_PROJECT_NAME>-promtail-1 - promtail
<COMPOSE_PROJECT_NAME>-loki-1 - loki
<COMPOSE_PROJECT_NAME>-log-generator-1 - fake log generator

Requirements

Certificats

Create a folder named /home/docker/certs and copy your certificates into it.
IMPORTANT: Certificates must be named tls.crt and tls.key

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.

Run

Create folder for persistents volumes and copy config files
To be executed each time the configuration files are modified

./manage.sh config

Create container

./manage.sh create

Start the stack

./manage.sh start

For more information about manage.sh script execute ./manage.sh --help

Config

Prometheus

grafana source

http://prometheus:9090

grafana dashboard

3662 - Prometheus 2.0 Overview

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 `<PROM_CONF_DIR>/prometheus.yml

- 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

grafana dashboard

13502 - MinIO Dashboard

Loki

Create bulk loki

docker exec -it <COMPOSE_PROJECT_NAME>-minio-cli-1 /bin/sh -c "mc mb myminio/loki"

grafana source

http://loki:3100

grafana dashboard

13639 - Logs / App

Node exporter

grafana dashboard

1860 - Node Exporter Full

Fake log generator

Use for testing only

docker compose up log-generator -d

On grafana select - Explore - Loki (to the right of Outline) - Label filters job=generated-logs

docker compose stop log-generator

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 <COMPOSE_PROJECT_NAME>-proxy-1 /bin/bash -c "curl -H \"Accept: application/json\" -H \"${TOKEN}\"  http://minio:9000/minio/v2/metrics/cluster"

Sources

Minio

Grafana

Prometheus

Loki/promtail

Changelog

[1.2.0] - 2025-06-14

Added

  • promtail container
  • loki container
  • log generator container

Created

  • script manage.sh

Fixed

  • certificates names

[1.1.0] - 2025-06-09

Added

  • prometheus container
  • node exporter container
  • grafana dashboard
    • 1860 - Node Exporter Full
    • 19268 - Prometheus All Metrics
    • 13502 - MinIO Dashboard
    • 13639 Logs / APP

[1.0.0] - 2025-06-08

Added

  • init docker container
  • proxy with nginx
  • minio container
  • grafana container

Project initialization

  • initialization by GMo