Relution-Monitoring mit Grafana (Optional)

Einleitung

Relution bietet eine Vielzahl von Metriken, die mittels Grafana visualisiert werden können.
Im Folgenden haben wir eine Basiskonfiguration für ein Docker-Setup sowie zwei Dashboards bereitgestellt.
Diese Konfigurationen können nach eigenen Bedürfnissen angepasst werden.

Konfiguration

Notwendige Dateien und Verzeichnisse

Wie erwähnt, sind die Konfigurationen verfügbar und können hier heruntergeladen und verwendet werden.

Dateien

  • docker-compose.yml
    • Beinhaltet die Konfigurationen der Docker Container Prometheus und Grafana.
  • prometheus.yml
    • Beinhaltet die Konfiguration von Prometheus.
  • .env
    • Hier sind die Variablen GF_SECURITY_ADMIN_USER und GF_SECURITY_ADMIN_PASSWORD enthalten.
      Für den Produktivbetrieb ist es empfehlenswert, das Passwort zu ändern.

Subfolder

  • Dashboards
    Beispieldashboards: Die Konfigurationsdateien für zwei Beispieldashboards sind enthalten. Diese Dashboards werden automatisch in den Grafana Docker Container importiert.

  • Provisioning
    Basiskonfigurationen: Die Konfigurationsdateien für die Datenquelle Prometheus und die beiden Beispieldashboards sind enthalten. Diese Konfigurationen können nach Bedarf angepasst werden.

Einbindung der docker-compose.yml

Die hier beschriebene docker-compose.yml kann auf zwei Arten verwendet werden:

  • Standalone Die Datei kann als eigenständige Datei benutzt werden.

  • Inhaltlich Der Inhalt der kann in eine bestehende docker-compose.yml eingebunden werden.

In unserem Beispiel wird der Inhalt der Datei in die bestehende docker-compose.yml eingebunden.
In diesem Fall ist es wichtig, dass die Dateien und Verzeichnisse der Volumes an der entsprechenden Stelle liegen und die korrekten Berechtigungen haben.
In unserer verwendeten docker-compose.yml sind die Container mariadb, relution und nginx vorhanden, deshlab sind die Zeilen zwei bis vier sind lediglich zur Orientierung eingefügt worden.

services: # bereits vorhanden
  # mariadb:  bereits vorhanden
  # relution:  bereits vorhanden
  # nginx:  bereits vorhanden

  prometheus:
    image: prom/prometheus:${DOCKER_PROMETHEUS:-latest}
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    networks:
      relution-network:
    ports:
      - "${PORT_PROMETHEUS:-9090}:9090"
    expose:
      - "9090"
    logging:
      driver: "json-file"
      options:
        max-size: "${DOCKER_PROMETHEUS_LOGSIZE:-8m}"
        max-file: "4"
        compress: "true"

  grafana:
    image: grafana/grafana:${DOCKER_GRAFANA:-latest}
    volumes:
      - ./provisioning:/etc/grafana/provisioning
      - ./dashboards:/var/lib/grafana/dashboards
    depends_on:
      - prometheus
    environment:
      # set the placeholder in dashboard, to the actual name of datasource
      - "DS_PROMETHEUS=Prometheus"
      # set grafana default admin user
      - "GF_SECURITY_ADMIN_USER=${GF_SECURITY_ADMIN_USER}"
      # set grafana default admin password
      - "GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}"
    networks:
      relution-network:
    ports:
      - "${PORT_GRAFANA:-3000}:3000"
    expose:
      - "3000"
    logging:
      driver: "json-file"
      options:
        max-size: "${DOCKER_GRAFANA_LOGSIZE:-8m}"
        max-file: "4"
        compress: "true"

In der docker-compose.yml sind die Ports für Prometheus und Grafana auf 9090 bzw. 3000 festgelegt.
Dieser Abschnitt kann für das Beispiel in die vorhandene docker-compose.yml eingefügt werden.

Anpassung der .env Datei

Für die Sicherheit ist es empfehlenswert, den Parameter für das Kennwort anzupassen.

GF_SECURITY_ADMIN_USER=admin
GF_SECURITY_ADMIN_PASSWORD=password

Anpassungen der prometheus.yml Datei

global:
  # Default scrape interval
  scrape_interval: 15s

scrape_configs:
  # Job to scrape Prometheus metrics
  - job_name: "prometheus"
    scrape_interval: 5s
    static_configs:
      - targets: ["localhost:9090"]

  - job_name: "relution"
    # Job to scrape application metrics
    metrics_path: "/actuator/prometheus"
    scrape_interval: 5s
    static_configs:
      # Call the docker host inside container
      - targets: ["relution:8099"]

In unserem konkreten Setup muss in der letzten Zeile der Name des Containers, in diesem Fall relution:8099, stehen.
Mit dem Befehl docker ps kann der Name und der Port des genutzen Container geprüft und anschließend bei Bedarf angepasst werden.
Wenn die Container mit docker compose down bzw. docker compose up -d heruntergeladen und gestartet werden, ist die Grafana UI unter der IP des Servers und Port 3000 erreichbar.
Es stehen nun zwei Dashboards zur Verfügung.

Dashboards

Relution Server Dashboard:
Grafana Dashboard

Default Spring Boot Dashboard:
Grafana Dashboard