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

Last reviewed 2025-02-19 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.

Ziele

  • 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 Nutzern von Google Cloud 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. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

    Ersetzen Sie PROJECT_ID durch die Zielprojekt-ID.

  4. Die Abrechnung für Ihr Google Cloud Projekt muss aktiviert sein.

  5. Erforderliche Rollen

    Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zuzuweisen, 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 Admin (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 auf Projekte, Ordner und Organisationen 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 Aufbewahrungsdauer von 30 Tagen zu ändern, oder wenn Sie andere Anforderungen haben, können Sie Ihr 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 ersetzen.

    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: