Job zum Importieren von Logs aus Cloud Storage in Cloud Logging bereitstellen

Last reviewed 2024-01-02 UTC

In diesem Dokument wird beschrieben, wie Sie die unter Logs aus Cloud Storage in Cloud Logging importieren beschriebene Referenzarchitektur bereitstellen.

Diese Anleitung richtet sich an Entwickler und Entwickler, einschließlich DevOps, Site Reliability Engineers (SREs) und Sicherheitsprüfer, die den Logimportjob konfigurieren und ausführen möchten. In diesem Dokument wird auch davon ausgegangen, dass Sie mit der Ausführung von Cloud Run-Importjobs und der Verwendung von Cloud Storage und Cloud Logging vertraut sind.

Architektur

Das folgende Diagramm zeigt, wie Google Cloud-Dienste in dieser Referenzarchitektur verwendet werden:

Workflow-Diagramm für den Logimport von Cloud Storage nach Cloud Logging

Weitere Informationen finden Sie unter Logs aus Cloud Storage in Cloud Logging importieren.

Lernziele

  • Cloud Run-Importjob erstellen und konfigurieren
  • Erstellen Sie ein Dienstkonto, um den Job auszuführen:

Kosten

In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Hinweise

  1. Die zu importierenden Logs wurden zuvor nach Cloud Storage exportiert. Das bedeutet, dass sie bereits im erwarteten Exportformat organisiert sind.

  2. Aktivieren Sie Cloud Shell in der Google Cloud Console.

    Cloud Shell aktivieren

  3. Google Cloud-Projekt erstellen oder auswählen.

    • Erstellen Sie ein Google Cloud-Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Google Cloud-Projekt, das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud-Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch den Namen Ihres Google Cloud-Projekts.

  4. Ersetzen Sie PROJECT_ID durch die Zielprojekt-ID.

  5. Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.

  6. Aktivieren Sie die Cloud Run and Identity and Access Management (IAM) APIs:

    gcloud services enable run.googleapis.com iam.googleapis.com

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Bereitstellen dieser Lösung benötigen:

  • So weisen Sie die Rolle "Log-Autor" für den Log-Bucket zu: Projekt-IAM-Administrator (roles/resourcemanager.projectIamAdmin) für das Zielprojekt
  • So weisen Sie die Rolle "Storage-Objekt-Betrachter" für den Storage-Bucket zu: Storage-Administrator (roles/storage.admin) für das Projekt, in dem der Storage-Bucket gehostet wird
  • So erstellen Sie ein Dienstkonto: Dienstkonten erstellen (roles/iam.serviceAccountCreator) im Zielprojekt
  • So aktivieren Sie Dienste für das Projekt: Service Usage-Administrator (roles/serviceusage.serviceUsageAdmin) im Zielprojekt
  • So aktualisieren Sie den Log-Bucket und löschen importierte Logs: Logging-Administrator (roles/logging.admin) im Zielprojekt
  • So erstellen, führen und ändern Sie den Importjob: Cloud Run-Entwickler (roles/run.developer) im Zielprojekt

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Log-Bucket zur Verwendung von Log Analytics upgraden

Es wird empfohlen, den Standard-Log-Bucket zu verwenden und ein Upgrade auf Log Analytics durchzuführen. In einer Produktionsumgebung können Sie jedoch Ihren eigenen Log-Bucket verwenden, wenn der Standard-Bucket nicht Ihren Anforderungen entspricht. Wenn Sie einen eigenen Bucket verwenden möchten, müssen Sie die in das Zielprojekt aufgenommenen Logs an diesen Log-Bucket weiterleiten. Weitere Informationen finden Sie unter Log-Buckets konfigurieren und Senke erstellen.

Wenn Sie ein Upgrade des Buckets ausführen, können Sie Ihre Logs mit SQL abfragen und analysieren. Für das Upgrade des Buckets oder die Verwendung von Log Analytics fallen keine zusätzlichen Kosten an.

So aktualisieren Sie den Standard-Log-Bucket im Zielprojekt:

  • Aktualisieren Sie den Standard-Log-Bucket für die Verwendung von Log Analytics:

    gcloud logging buckets update BUCKET_ID --location=LOCATION --enable-analytics
    

    Ersetzen Sie Folgendes:

    • BUCKET_ID: der Name des Log-Buckets (z. B. _Default)
    • LOCATION: eine unterstützte Region, z. B. global

Cloud Run-Importjob erstellen

Beim Erstellen des Jobs können Sie das vordefinierte Container-Image verwenden, das für diese Referenzarchitektur bereitgestellt wird. Wenn Sie die Implementierung ändern müssen, um die 30-Tage-Anforderung zu ändernAufbewahrungsdauer Wenn Sie andere Anforderungen haben, können Sie ein Eigenes benutzerdefiniertes Image erstellen.

  • Erstellen Sie in Cloud Shell den Job mit den Konfigurationen und Umgebungsvariablen:

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --region=REGION \
    --tasks=TASKS \
    --max-retries=0 \
    --task-timeout=60m \
    --cpu=CPU \
    --memory=MEMORY \
    --set-env-vars=END_DATE=END_DATE,LOG_ID=LOG_ID,\
    START_DATE=START_DATE,STORAGE_BUCKET_NAME=STORAGE_BUCKET_NAME,\
    PROJECT_ID=PROJECT_ID
    

    Ersetzen Sie Folgendes:

    • JOB_NAME: der Name des Jobs.
    • IMAGE_URL: der Verweis auf das Container-Image; Verwenden Sie us-docker.pkg.dev/cloud-devrel-public-resources/samples/import-logs-solution oder die URL des benutzerdefinierten Images, falls Sie eines mit der Anleitung in GitHub erstellt haben.
    • REGION: die Region, in der sich Ihr Job befinden soll um zusätzliche Kosten zu vermeiden, empfehlen wir, die Jobregion unverändert zu lassen oder sich in derselben Multi-Region wie die Cloud Storage-Bucket-Region zu befinden. Wenn Ihr Bucket beispielsweise multiregional ist, können Sie us-central1 verwenden. Weitere Informationen finden Sie unter Kostenoptimierung.
    • TASKS: Die Anzahl der Aufgaben, die der Job ausführen muss. Der Standardwert ist 1. Sie können die Anzahl der Aufgaben erhöhen, wenn Zeitüberschreitungen auftreten.
    • CPU: das CPU-Limit, das 1, 2, 4, 6 oder 8 CPUs sein kann. Der Standardwert ist 2. Sie können die Anzahl erhöhen, wenn Zeitüberschreitungen auftreten. Weitere Informationen finden Sie unter CPU-Limits konfigurieren.
    • MEMORY: das Speicherlimit Der Standardwert ist 2Gi. Sie können die Anzahl erhöhen, wenn Zeitüberschreitungen auftreten. Weitere Informationen finden Sie unter Speicherlimits konfigurieren.
    • END_DATE: das Ende des Zeitraums im Format MM/TT/JJJJ. Logs mit Zeitstempeln vor oder nach diesem Datum werden importiert.
    • LOG_ID ist die Log-ID der zu importierenden Logs. Die Log-ID ist Teil des Feldes logName des Logeintrags. Beispiel: cloudaudit.googleapis.com
    • START_DATE: der Beginn des Zeitraums im Format MM/TT/JJJJ. Logs mit Zeitstempeln, die nach diesem Datum oder später liegen, werden importiert.
    • STORAGE_BUCKET_NAME: der Name des Cloud Storage-Buckets, in dem Logs gespeichert werden (ohne das Präfix gs://).

    Die Option max-retries ist auf null gesetzt, um Wiederholungsversuche für fehlgeschlagene Aufgaben zu verhindern, die zu doppelten Logeinträgen führen können.

    Wenn der Cloud Run-Job aufgrund eines Zeitlimits fehlschlägt, kann ein unvollständiger Import führen. Erhöhen Sie den Wert tasks sowie die CPU- und Arbeitsspeicherressourcen, um unvollständige Importe aufgrund von Zeitüberschreitungen zu verhindern.

Wenn Sie diese Werte erhöhen, können höhere Kosten anfallen. Weitere Informationen zu Kosten finden Sie unter Kostenoptimierung.

Dienstkonto zum Ausführen eines Cloud Run-Jobs erstellen

  1. Erstellen Sie in Cloud Shell das nutzerverwaltete Dienstkonto:

    gcloud iam service-accounts create SA_NAME
    

    SA_NAME durch den Namen des Dienstkontos.

  2. Weisen Sie dem Storage-Bucket die Rolle Storage-Objekt-Betrachter zu:

    gcloud storage buckets add-iam-policy-binding gs://STORAGE_BUCKET_NAME \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/storage.objectViewer
    

    Ersetzen Sie Folgendes:

    • STORAGE_BUCKET_NAME ist der Name des Storage-Buckets, den Sie in der Konfiguration des Importjobs verwendet haben. Beispiel: my-bucket.
    • PROJECT_ID: die ID des Zielprojekts.
  3. Weisen Sie die Rolle Log-Autor für den Log-Bucket zu:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/logging.logWriter
    
  4. Legen Sie das Dienstkonto für den Cloud Run-Job fest:

    gcloud run jobs update JOB_NAME \
    --region=REGION \
    --service-account SA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Ersetzen Sie REGION durch dieselbe Region, in der Sie den Cloud Run-Importjob bereitgestellt haben.

Den Importjob ausführen

  • Führen Sie in Cloud Shell den erstellten Job aus:

    gcloud run jobs execute JOB_NAME \
    --region=REGION
    

Weitere Informationen finden Sie unter Jobs ausführen und Jobausführungen verwalten.

Wenn Sie den Job noch einmal ausführen müssen, löschen Sie die zuvor importierten Logs, um Duplikate zu vermeiden. Weitere Informationen finden Sie weiter unten in diesem Dokument unter Importierte Logs löschen.

Wenn Sie die importierten Logs abfragen, werden Duplikate nicht in den Abfrageergebnissen angezeigt. Cloud Logging entfernt Duplikate (Logeinträge aus demselben Projekt mit derselben Einfügungs-ID und demselben Zeitstempel) aus Abfrageergebnissen. Weitere Informationen finden Sie in der Logging API-Referenz im Feld insert_id.

Ergebnisse bestätigen

Wenn Sie prüfen möchten, ob der Job erfolgreich abgeschlossen wurde, können Sie in Cloud Shell die Importergebnisse abfragen:

  gcloud logging read 'log_id("imported_logs") AND timestamp<=END_DATE'

Die Ausgabe zeigt die importierten Logs. Wenn mit diesem Projekt innerhalb des angegebenen Zeitraums mehr als ein Importjob ausgeführt wurde, werden in der Ausgabe auch importierte Logs aus diesen Jobs angezeigt.

Weitere Optionen und Details zum Abfragen von Logeinträgen finden Sie unter gcloud logging read.

Importierte Logs löschen

Wenn Sie denselben Job mehrmals ausführen müssen, löschen Sie die zuvor importierten Logs, um doppelte Einträge und höhere Kosten zu vermeiden.

  • Führen Sie die Logs löschen in Cloud Shell aus, um importierte Logs zu löschen:

    gcloud logging logs delete imported_logs
    

Beachten Sie, dass durch das Löschen importierter Logs alle Logeinträge gelöscht werden, die in das Zielprojekt importiert wurden, und nicht nur die Ergebnisse der letzten Ausführung des Importjobs.

Weitere Informationen

Beitragende

Autor: Leonid Yankulin | Developer Relations Engineer

Weitere Beitragende: