In diesem Dokument wird beschrieben, wie Sie Logs aus Cloud Logging für einen Batch-Job aktivieren, generieren und aufrufen.
Mithilfe von Logs können Sie Informationen abrufen, die für die Analyse Ihrer Jobs nützlich sind. Logs können Ihnen beispielsweise dabei helfen, fehlgeschlagene Jobs zu debuggen.
Logs werden erst generiert, nachdem ein Job ausgeführt wurde und wenn Logging für den Job aktiviert wurde. Wenn Sie einen Job ohne Logs analysieren müssen, rufen Sie stattdessen Statusereignisse auf.
Hinweise
- Wenn Sie Batch noch nicht verwendet haben, lesen Sie Erste Schritte mit Batch. Aktivieren Sie Batch, indem Sie die Voraussetzungen für Projekte und Nutzer erfüllen.
-
Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen zu gewähren, damit Sie die Berechtigungen erhalten, die Sie zum Analysieren eines Jobs mithilfe von Logs benötigen:
-
So erstellen Sie einen Job:
-
Batchjob-Bearbeiter (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist
-
Batchjob-Bearbeiter (
-
So rufen Sie Logs auf:
Loganzeige (
roles/logging.viewer
) für das Projekt
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Möglicherweise können Sie die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
So erstellen Sie einen Job:
Logging für einen Job aktivieren
Damit Logs für einen Job generiert werden können, müssen Sie beim Erstellen des Jobs Logs von Cloud Logging aktivieren:
- Wenn Sie einen Job über die Google Cloud Console erstellen, sind Logs von Cloud Logging immer aktiviert.
Wenn Sie einen Job über die gcloud CLI oder Batch API erstellen, sind Logs von Cloud Logging standardmäßig deaktiviert. Wenn Sie Logs aus Cloud Logging aktivieren möchten, fügen Sie beim Erstellen des Jobs die folgende Konfiguration für das Feld
logsPolicy
hinzu:{ ... "logsPolicy": { "destination": "CLOUD_LOGGING" } ... }
Logs für einen Job schreiben und generieren
Wenn Logs von Cloud Logging für einen Job aktiviert sind, generiert Cloud Logging automatisch alle Logs, die für den Job geschrieben werden. Batchjobs können insbesondere die folgenden Logtypen haben:
Agent-Logs (
batch_agent_logs
): Logs für Aktivitäten des Batch-Dienst-AgentsBatch schreibt automatisch Agent-Logs für jeden Job, für den Logging aktiviert ist.
Task Logs (
batch_task_logs
): Logs für alle Daten, die Sie so konfiguriert haben, dass die Runnables eines Jobs in den Standardausgabestream (stdout
) oder Standardfehlerstream (stderr
) geschrieben werden.Optional können Sie für jeden Job, für den das Logging aktiviert ist, Aufgabenlogs schreiben.
Logs für einen Job ansehen
Sie können die Logs eines Jobs mit der Google Cloud Console, der gcloud CLI, der Logging API, Go, Java, Python oder C++ ansehen.
Console
So rufen Sie die Logs eines Jobs mit der Google Cloud Console auf:
Rufen Sie in der Google Cloud Console die Seite Jobliste auf.
Klicken Sie in der Spalte Jobname auf den Namen eines Jobs. Die Seite Jobdetails wird geöffnet.
Klicken Sie auf den Tab Logs. Batch zeigt alle Logs an, die mit dem Job verknüpft sind.
Optional: Führen Sie einen der folgenden Schritte aus, um die Protokolle zu filtern:
Geben Sie in das Feld Filter ein.
Filter einenWählen Sie in der Liste Schweregrad einen Schweregrad aus.
Klicken Sie auf Parameter für Batchfilter eine Abfrage im Log-Explorer zu erstellen.
Im Log-Explorer ansehen, um mithilfe der
gcloud
Verwenden Sie den Befehl gcloud logging read
, um Logs über die gcloud CLI aufzurufen:
gcloud logging read "QUERY"
Dabei ist QUERY
eine Abfrage für Batch-Logs, die Batchfilterparameter enthalten.
API
Verwenden Sie zum Aufrufen von Logs mit der Logging API die Methode entries.list
:
POST https://logging.googleapis.com/v2/entries:list
{
"resourceNames": [
"projects/PROJECT_ID"
],
"filter": "QUERY"
"orderBy": "timestamp desc"
}
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID Ihres Projekts.QUERY
: Eine Abfrage für Batch-Logs, die Batchfilterparameter enthalten.
Einfach loslegen (Go)
Go
Weitere Informationen findest du in der Referenzdokumentation zur Batch Go API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Batch zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Java
Java
Weitere Informationen findest du in der Referenzdokumentation zur Batch Java API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Batch zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Python
Python
Weitere Informationen findest du in der Referenzdokumentation zur Batch Python API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Batch zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
C++
C++
Weitere Informationen findest du in der Referenzdokumentation zur Batch C++ API.
Richten Sie Standardanmeldedaten für Anwendungen ein, um sich bei Batch zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.
Batch-Logs filtern
Zum Filtern von Batch-Logs schreiben Sie eine Abfrage, die einen oder mehrere der folgenden Filterparameter und null oder mehr boolesche Operatoren (AND
, OR
und NOT
) enthält.
Geben Sie die eindeutige ID (UID) des Jobs an, um nach Logs eines bestimmten Jobs zu filtern:
labels.job_uid=JOB_UID
Dabei ist
JOB_UID
die UID des Jobs. Wenn Sie die UID eines Jobs abrufen möchten, rufen Sie die Details des Jobs auf.Geben Sie den Logtyp an, um nach einem bestimmten Typ von Batch-Logs zu filtern:
logName=projects/PROJECT_ID/logs/BATCH_LOG_TYPE
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID des Projekts, für das Sie Logs aufrufen möchten.BATCH_LOG_TYPE
: der Typ der Batchlogs, die Sie ansehen möchten, entwederbatch_task_logs
für Aufgabenlogs oderbatch_agent_logs
für Agent-Logs.
Wenn Sie nach Logs mit benutzerdefinierten Statusereignissen filtern möchten, müssen Sie das Feld
jsonPayload.batch/custom/event
im Log definieren:jsonPayload.batch"/"custom"/"event!=NULL_VALUE
Geben Sie den folgenden Vergleich an, um nach Logs mit einem oder mehreren bestimmten Schweregraden zu filtern:
severityCOMPARISON_OPERATORSEVERITY_ENUM
Ersetzen Sie Folgendes:
COMPARISON_OPERATOR
: ein Vergleichsoperator, z. B.>=
.SEVERITY_ENUM
: einLogSeverity
-Enum, das den Schweregrad eines Logs beschreibt, z. B.ERROR
.
Weitere Filteroptionen finden Sie in der Dokumentation zur Cloud Logging-Abfragesprache.
Nächste Schritte
- Weitere Informationen zur Fehlerbehebung
- Weitere Informationen zu Cloud Logging
- Aufgabenlogs schreiben
- Weitere Informationen zum Löschen und Exportieren von Jobs