In dieser Anleitung zeige ich, wie ihr die beiden Log-Dateien (nextcloud.log und audit.log) über ein Grafana Dashboard übersichtlich darstellen könnt.
0. Grundvoraussetzungen
- Docker & Docker Compose v2 (Debian / Ubuntu)
- NEXTCLOUD SERVER – MIT DOCKER COMPOSE UND TRAEFIK INSTALLIEREN
- GRAFANA – MIT DOCKER COMPOSE UND TRAEFIK INSTALLIEREN
1. Vorbemerkung
Diese Anleitung ist nicht auf “meinem Mist gewachsen”, sondern ist eine Anpassung eines bereits existierenden Tutorials. Ich habe es lediglich angepasst, so dass es mit den Anleitungen hier auf goneuland.de kompatibel ist und leicht übernommen werden kann. Für jegliche Verbesserungsvorschläge bin ich offen!
Die Nextcloud-Instanz benötigt dazu ein paar kleine Vorbereitungen. Darüber hinaus wird der bereits existierende Grafana-Stack um zwei weitere Container erweitert: grafana/promtail und grafana/loki
2. Nextcloud vorbereiten
2.1 Anpassungen an der config.php
Promtail soll nicht nur die Datei “nextcloud.log”, sondern auch darüber hinaus die ausführlicheren Informationen der Datei “audit.log” an Loki liefern.
Dazu habe ich die config.php folgendermaßen erweitert.
sudo nano /opt/containers/nextcloud/app/config/config.php
Den Inhalt habe ich einfach am Ende eingefügt:
'loglevel' => 1, 'log_type' => 'file', 'logfile' => '/var/www/html/data/nextcloud.log', 'log_type_audit' => 'file', 'logfile_audit' => '/var/www/html/data/audit.log', 'logdateformat' => 'd. F Y H:i:s',
Bei mir sieht das dann so aus:
2.2 Audit-Logs aktivieren
Während die Datei “nextcloud.log” automatisch im Daten-Verzeichnis erzeugt wird, sind die Audit-Informationen erst nach Aktivieren der App admin_audit verfügbar:
Der folgende Befehl gibt noch einmal den Speicherort der Datei audit.log an:
docker exec -it --user www-data nextcloud-app /var/www/html/occ config:app:set admin_audit logfile --value=/var/www/html/data/audit.log
Aktiviert wird die App über folgenden Befehl:
docker exec -it --user www-data nextcloud-app /var/www/html/occ app:enable admin_audit
Du kannst überprüfen, ob das soweit geklappt hat:
docker exec -it --user www-data nextcloud-app /var/www/html/occ config:list
Der folgende Abschnitt sollte zu finden sein:
3. Anpassungen des Grafana-Stacks
3.1 Docker-compose.yml erweitern
Die folgenden beiden Container hinzufügen:
nano /opt/containers/grafana/docker-compose.yml
mon_promtail: image: grafana/promtail:master container_name: mon_promtail restart: unless-stopped command: -config.file=/etc/promtail/docker-config.yaml volumes: - ./promtail:/etc/promtail - /opt/containers/nextcloud/daten/nextcloud.log:/var/log/nextcloud.log:ro - /opt/containers/nextcloud/daten/audit.log:/var/log/audit.log:ro networks: - default mon_loki: image: grafana/loki:master container_name: mon_loki restart: unless-stopped networks: - default
Lass die Datei offen und füge folgendes beim Grafana-Container hinzu:
mon_grafana: ... depends_on: - mon_prometheus - mon_promtail # <==== Diese Zeile hinzufügen - mon_loki # <==== Diese Zeile hinzufügen
3.2 Anlegen der Konfigurationsdatei von Promtail
Erst den Ordner anlegen und anschließend die Datei editieren und befüllen:
mkdir -p /opt/containers/grafana/promtail nano /opt/containers/grafana/promtail/docker-config.yaml
Inhalt der Datei:
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml # filename: /var/log/audit.log clients: - url: http://mon_loki:3100/loki/api/v1/push scrape_configs: - job_name: audit-logs static_configs: - targets: - localhost labels: instance: meine.nextcloud.de #Label identifier for instance (hostname -f) env: home-lab #Environment label job: nextcloud #Job label __path__: /var/log/{nextcloud,audit}.log
Zeile 18 bis 20 können angepasst werden. Vergleiche dazu das Original-Tutorial.
3.3 Grafana-Stack neu starten
docker compose -f /opt/containers/grafana/docker-compose.yml down docker compose -f /opt/containers/grafana/docker-compose.yml up -d
4. Grafana Dashbord hinzufügen
4.1 Loki als Datenquelle bekannt machen
Nach dem Login auf Grafana: Klicke links im Menü auf das Zahnrädchen > Konfiguration > Datenquellen
Klicke anschließend auf den blauen Button rechts oben “Add data source” und wähle aus der Liste “Loki” aus.
Trage anschließend im Feld “URL” folgendes ein: http://mon_loki:3100
Vergleiche dazu die gelbe Markierung im Bild:
4.2 Import des Dashboard
Von dieser Seite habe ich mir das Dashboard über die ID 17821integriert (vgl. gelbe Markierung im Bild):
Nicht vergessen: Als Datenquelle “Loki” angeben (vgl. Bild gelbe Markierung)!
Alle weiteren Informationen finden sich auf der Seite des Original-Tutorials, z.B. wie man das Dashboard konfiguriert:
Once the dashboard is imported, it is important to explain how the top bar works. You can select the “Label Name” (1) that you configured in Promtail. In the screenshot above, I selected env
. For this label name, I selected the label value home-lab
(2). The job is nextcloud
(3), which contains both logs nextcloud.log
and audit.log
. This means the dashboard will read data from both logs that are stored in Loki with this label. The last important step is to select your instance
(4) in case you have multiple Nextcloud instances. These variables are used in each panel to query data.
5. Vorschau des Dashboards
6. Anmerkungen zum Schluss
Meine Nextcloud läuft schon eine Weile und mit mehreren Hundert Usern. Die Datei “nextcloud.log” war mittlerweile auf ca. 50 kb angewachsen, während die noch frische “audit.log” nur ein paar Zeilen enthielt. Prüft mal ggf. die Logs des Promtail-Containers, ob es Fehlermeldungen gibt.
Guten Morgen,
vielen Dank für deine Mühe 🙂. Ich brüte jetzt schon ein paar Tage über deine Anleitung soweit verstehe ich die auch jedoch komme ich über den Punkt Grafana -> add Data source -> Loki nicht hinaus.
Der will sich mit Loki einfach nicht verbinden.
ich finde den Fehler einfach nicht und die Loki Logs helfen mir auch nicht so weiter.
Vielleicht könnt ihr das ja 😀
Vielen Dank.