Bei DoiT International arbeiten wir mit den unterschiedlichsten Softwareunternehmen weltweit zusammen. Dabei erreichen uns von verschiedenen Kunden häufig sehr ähnliche Anfragen. In letzter Zeit haben mir gleich mehrere Organisationen geschildert, dass sie ihre Logs aus mehreren Google Cloud Platform (GCP)-Projekten in einem einzigen Projekt bündeln wollen – für zentralen Zugriff und einheitliches Monitoring.
Viele Unternehmen schicken ihre Logs an Drittanbieter wie Datadog, Splunk und Co. In diesem Beitrag zeige ich jedoch, wie sich die Vereinheitlichung der Log-Dateien inklusive Zugriffskontrolle allein mit dem GCP-Dienst Cloud Logging (ehemals Stackdriver) umsetzen lässt. Das Ergebnis: eine schlanke und elegante Lösung für eine immer häufiger auftretende Anforderung.
Architektur

Überblick über die Demo-Architektur
TL;DR
Für dieses Beispiel lege ich zwei Testprojekte an und konfiguriere deren Logs so, dass sie an ein zentrales Projekt übertragen werden. Als Bonus zeige ich, wie sich auch Monitoring und Metriken zentralisieren lassen – ein weiterer häufiger Anwendungsfall.
- Drei Test-Projekte in GCP anlegen: mike-test-log-view, mike-test-log-a und mike-test-log-b
- Im Projekt mike-test-log-view einen Logs Bucket anlegen und den Pfad zum Bucket kopieren
- In den Projekten mike-test-log-a und mike-test-log-b jeweils einen Log Sink vom Typ Cloud Logging Bucket erstellen, der auf den in Schritt 2 kopierten Pfad verweist
- Die Details jedes Log Sinks öffnen und die E-Mail-Adresse des Service Accounts der Writer-Identität (wird je Sink dynamisch erzeugt) kopieren
- Im Projekt mike-test-log-view die IAM-Rollen bearbeiten und jeden aus den Log Sinks kopierten Service Account mit der Rolle Logs Bucket Writer hinzufügen
- Im Projekt mike-test-log-view die IAM-Rollen bearbeiten und die Rolle Logs View Accessor mit einer Bedingung auf den Pfad Ihres Logs Buckets vergeben (um den Zugriff pro Nutzer einzuschränken)
- Die Seite Logs Explorer öffnen, oben auf "Refine Scope" klicken, "Scope by storage" wählen und Ihren Logs Bucket auswählen
Schritt für Schritt
Die folgenden Schritte zeigen, wie Sie Logs aus mehreren Google Cloud Platform-Projekten in einem zentralen Projekt zusammenführen.
Schritt 1: Testprojekte erstellen
Dieser Schritt ist selbsterklärend. Für die Demo habe ich drei Projekte wie oben beschrieben angelegt.
Schritt 2: Logs Bucket im View-Projekt anlegen

Logs Storage öffnen, "Create Logs Bucket" wählen und anschließend den Pfad zum Bucket kopieren
Schritt 3: Log Sinks in den Testprojekten erstellen
Legen Sie die Log Sinks in den Testprojekten a und b an.

Sink-Ziel auf "Cloud Logging Bucket" setzen

Die Option "Use a logs bucket in another project" auswählen

Log Sink für Testprojekt "a" – Ziel um den Pfad zum Logs Bucket (nach der Domain) ergänzen

Log Sink für Testprojekt "b" – Ziel um den Pfad zum Logs Bucket (nach der Domain) ergänzen
Schritt 4: Details der Log Sinks ansehen und IAM-Writer-Identität notieren
Klicken Sie pro Testprojekt in der Listenansicht der Seite "Log Router Sinks" auf das "…" (drei Punkte) ganz rechts in der Zeile Ihres neuen Log Sinks und wählen Sie "View Details".

Kopieren Sie die "Writer identity" – das ist der Service Account, der dynamisch zusammen mit dem Log Sink erzeugt wird. Diesen fügen Sie im View-Projekt hinzu, damit er Log-Einträge in Ihren zentralen Logs Bucket schreiben darf.
Schritt 5: IAM-Rollen im View-Projekt für die Log-Sink-Writer bearbeiten
Öffnen Sie für jeden Log Sink in Ihrem zentralen View-Projekt die IAM-Verwaltungsseite und fügen Sie ein Mitglied mit der Rolle Logs Bucket Writer hinzu – verwenden Sie dabei den in Schritt 4 kopierten Service Account der "Writer identity", wie unten gezeigt.

IAM-Rollen hinzufügen, damit die Log Sinks Log-Einträge im View-Projekt schreiben dürfen
Schritt 6: IAM-Rollen im View-Projekt für Log-Viewer (Nutzer) bearbeiten
Damit Nutzer die Logs im Logs Explorer einsehen können, müssen Sie ihnen erlauben, den View (bzw. Scope) zu bearbeiten. Vergeben Sie dazu die Rolle Logs View Accessor.

Nutzern die Berechtigung erteilen, den View (Scope) im Logs Explorer zu bearbeiten
Sie können (und sollten) die IAM-Rolle der Nutzer feiner abgrenzen, indem Sie eine Bedingung hinzufügen, die den Zugriff auf die gewünschten Ressourcen beschränkt – in diesem Fall auf den Pfad zum erstellten Logs Bucket. So lässt sich die Sicht der Nutzer gezielt auf die gewünschten Logs und Buckets begrenzen – insbesondere für Compliance-Vorgaben ein nützlicher Hebel.

Schritt 7: Logs ansehen
Sobald die Berechtigungen gesetzt sind, sollten innerhalb weniger Minuten die ersten Log-Einträge in Ihrem View-Projekt erscheinen. Zunächst müssen Sie auf "Refine Scope" klicken und die gewünschte Log-Quelle wie gezeigt auswählen.

Scope des Logs Explorer einschränken, um die per Sinks an den Logs Bucket gelieferten Logs zu durchsuchen
Geschafft! Aus Ihrem View-Projekt heraus können Sie nun – wie unten dargestellt – die Logs anderer Projekte einsehen.

Logs aus Testprojekt "a" sind im "View"-Projekt sichtbar
Bonus \#1: Kosten senken mit Exclusion Filtern
Sie können den "_Default"-Log-Sink in Ihren Projekten deaktivieren, um nicht doppelt für Logging an mehreren Stellen zu zahlen.
Zusätzlich lassen sich in Ihren Log Sinks Exclusion Filter (oder Inclusion Filter) ergänzen, um zu steuern, welche Dienste übertragen und welche herausgefiltert werden.
- Managing logs exclusions
- Tipp: Das Feld "rate" ist eine Sampling-Rate – setzen Sie es auf 100(%)
Bonus \#2: Cloud Monitoring zentralisieren
Google Cloud Operations (ehemals Stackdriver) ist eine vollwertige Observability-Plattform, die neben dem Logging ein weiteres Tool umfasst: Cloud Monitoring.
Mit wenigen Klicks erstellen Sie in Ihrem View-Projekt einen "Workspace" und wählen anschließend Ihre weiteren Projekte aus, um Monitoring und Dashboards bei Bedarf zentral zu bündeln.

Ich hoffe, dieser Artikel hilft Ihnen, Logging und Observability in Ihrer Organisation besser zu strukturieren und zu verwalten. Folgen Sie mir oder schauen Sie im DoiT Blog vorbei – dort finden Sie weitere Artikel zu Tipps & Techniken, neuen Features, Best Practices und vielem mehr rund um die Public Cloud.