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:
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.
Hinweise
Die zu importierenden Logs wurden zuvor nach Cloud Storage exportiert. Das bedeutet, dass sie bereits im erwarteten Exportformat organisiert sind.
In the Google Cloud console, activate Cloud Shell.
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
Die Abrechnung für das Google Cloud-Projekt muss aktiviert sein.
Enable the Cloud Run and Identity and Access Management (IAM) APIs:
gcloud services enable run.googleapis.com
iam.googleapis.com
Ersetzen Sie PROJECT_ID durch die Zielprojekt-ID.
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
- BUCKET_ID: der Name des Log-Buckets (z. B.
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
Erstellen Sie in Cloud Shell das nutzerverwaltete Dienstkonto:
gcloud iam service-accounts create SA_NAME
SA_NAME durch den Namen des Dienstkontos ersetzen.
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.
- STORAGE_BUCKET_NAME ist der Name des Storage-Buckets, den Sie in der Konfiguration des Importjobs verwendet haben. Beispiel:
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
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
- Prüfen Sie den Implementierungscode im GitHub-Repository.
- Analyse importierter Logs mithilfe von Log Analytics und SQL
- Logs in den Cloud Storage-Bucket exportieren
- Weitere Referenzarchitekturen, Diagramme und Best Practices finden Sie im Cloud-Architekturcenter.
Beitragende
Autor: Leonid Yankulin | Developer Relations Engineer
Weitere Beitragende:
- Summit Tuladhar | Senior Staff Software Engineer
- Wilton Wong | Unternehmensarchitekt
- Xiang Shen | Cloudlösungsarchitekt