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
undGrafana
.
- Beinhaltet die Konfigurationen der Docker Container
- prometheus.yml
- Beinhaltet die Konfiguration von
Prometheus
.
- Beinhaltet die Konfiguration von
- .env
- Hier sind die Variablen
GF_SECURITY_ADMIN_USER
undGF_SECURITY_ADMIN_PASSWORD
enthalten.
Für den Produktivbetrieb ist es empfehlenswert, das Passwort zu ändern.
- Hier sind die Variablen
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:
Default Spring Boot Dashboard: