Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Logs aus mehreren GCP-Projekten zentral zusammenführen

By Mike SparrNov 30, 20205 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

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.

  1. Drei Test-Projekte in GCP anlegen: mike-test-log-view, mike-test-log-a und mike-test-log-b
  2. Im Projekt mike-test-log-view einen Logs Bucket anlegen und den Pfad zum Bucket kopieren
  3. 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
  4. Die Details jedes Log Sinks öffnen und die E-Mail-Adresse des Service Accounts der Writer-Identität (wird je Sink dynamisch erzeugt) kopieren
  5. 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
  6. 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)
  7. 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.

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.