Auf dieser Seite werden die Logs, die bei der Verwendung von Cloud Run verfügbar sind, und das Aufrufen und Schreiben der Logs dargelegt.
Cloud Run bietet zwei Arten von Logs, die automatisch an Cloud Logging gesendet werden:
- Anfragelogs (nur Dienste): Logs für Anfragen, die an Cloud Run-Dienste gesendet werden. Diese Logs werden automatisch erstellt.
- Containerlogs (Dienste und Jobs): Logs, die von den Instanzen ausgegeben werden, üblicherweise aus Ihrem eigenen Code, und in unterstützte Standorte geschrieben werden, wie unter Containerlogs schreiben erläutert.
Logs ansehen
Sie haben mehrere Möglichkeiten, sich Logs für Ihren Dienst oder Job anzusehen:
- Verwenden Sie die Cloud Run-Seite in der Google Cloud Console
- Verwenden Sie die Google Cloud CLI, um Logs mit gcloud auzufrufen (nur Dienste)
- Verwenden Sie den Cloud Logging-Log-Explorer in der Google Cloud Console.
- Cloud Code verwenden
Beide Konsolenmethoden zum Anzeigen von Logs untersuchen dieselben, in Cloud Logging gespeicherten Logs. Der Cloud Logging-Log-Explorer bietet jedoch weitere Details und Filterfunktionen.
Logs in Cloud Run ansehen
Sie können Logs für Dienste und Jobs auf den entsprechenden Dienst- und Jobseiten ansehen.
Logs für einen Dienst aufrufen
So rufen Sie Dienstlogs auf der Cloud Run-Seite auf:
Klicken Sie in der angezeigten Liste auf den gewünschten Dienst.
Klicken Sie auf den Tab LOGS, um die Anfrage- und Containerlogs für alle Überarbeitungen des Dienstes abzurufen. Sie können nach Logschweregrad filtern.
Logs für einen Job ansehen
So rufen Sie Logs für einen Job auf der Cloud Run-Seite auf:
Klicken Sie auf den Tab JOBS.
Suchen Sie den Job in der Jobliste und klicken Sie darauf.
Klicken Sie auf den Tab LOGS, um die Containerlogs für alle Ausführungen dieses Jobs abzurufen. Sie können nach Logschweregrad filtern.
Wenn Sie die vorab für eine bestimmte Jobausführung gefilterten Protokolle aufrufen möchten, klicken Sie auf die Jobausführung und dann auf den Tab LOGS.
Dienstlogs mit der Google Cloud CLI ansehen
Mit der Google Cloud CLI können Sie Tailing-Logs aufrufen oder vorhandene Logs für einen Cloud Run-Dienst in der Befehlszeile lesen. Standardmäßig werden die Logs in einem für eine Console optimierten Format formatiert.
Für das Tailing von Logs müssen Sie die log-streaming
-Komponente in der Google Cloud CLI installieren. Ist die Komponente nicht installiert, werden Sie bei Bedarf aufgefordert, sie zu installieren.
Tailing-Logs in der Befehlszeile ansehen
Bei einem Cloud Run-Dienst können Sie Logs in Echtzeit über Ihren Cloud Run-Dienst direkt in der Befehlszeile verfolgen:
gcloud beta run services logs tail SERVICE --project PROJECT-ID
Ersetzen
- SERVICE durch den Namen des Cloud Run-Dienstes.
- PROJECT-ID durch die Google Cloud-Projekt-ID. Sie können Ihre Projekt-ID über den Befehl
gcloud config get-value project
aufrufen.
Protokolle in der Befehlszeile lesen
Bei einem Cloud Run-Dienst können Sie vorhandene Logs auf zwei Arten lesen:
- In einem für die Console optimierten Format:
gcloud run services logs read SERVICE --limit=10 --project PROJECT-ID
- Direkt aus Cloud Logging:
gcloud logging read "resource.type=cloud_run_revision AND resource.labels.service_name=SERVICE" --project PROJECT-ID --limit 10
Ersetzen
- SERVICE durch den Namen des Cloud Run-Dienstes.
- PROJECT-ID durch die Google Cloud-Projekt-ID. Sie können Ihre Projekt-ID über den Befehl
gcloud config get-value project
aufrufen.
Logs in Cloud Logging ansehen
So rufen Sie Ihre Cloud Run-Logs im Log-Explorer von Cloud Logging auf:
Rufen Sie in der Google Cloud Console den Log-Explorer auf:
Wählen Sie oben auf der Seite ein vorhandenes Google Cloud-Projekt aus oder erstellen Sie ein neues Projekt.
Wählen Sie in den Drop-down-Menüs die Ressource Cloud Run-Überarbeitung für einen Dienst oder Cloud Run-Job für einen Job aus.
Weitere Informationen finden Sie unter Log-Explorer verwenden.
Dienstlogs in Cloud Code ansehen
Informationen zum Aufrufen Ihrer Logs in Cloud Code finden Sie in den Leitfäden zu IntelliJ und Visual Studio Code.
Protokolle programmatisch lesen
Wenn Sie die Logs programmatisch lesen möchten, können Sie eine der folgenden Methoden verwenden:
- Verwenden Sie eine Logsenke für Pub/Sub und ein Skript zum Abrufen aus Pub/Sub.
- Rufen Sie die Logging API über die Clientbibliotheken für Ihre Programmiersprache auf.
- Rufen Sie die REST-Endpunkte der Logging API direkt auf.
Containerlogs schreiben
Wenn Sie Logs von Ihrem Dienst oder Job aus schreiben, werden sie von Cloud Logging automatisch erfasst, sofern die Logs an einen der folgenden Speicherorte geschrieben werden:
- Standardausgabe- (
stdout
) oder Standardfehlerstreams (stderr
) - Alle Dateien im Verzeichnis
/var/log
- syslog (
/dev/log
) - Mit Cloud Logging-Clientbibliotheken erstellte Logs, die für viele gängige Sprachen verfügbar sind
Die meisten Entwickler schreiben Logs über Standardausgabe und Standardfehler.
Die Containerlogs, die in diese unterstützten Speicherorte geschrieben werden, werden automatisch Cloud Run-Dienst, -Überarbeitung und -Speicherort oder dem Cloud Run-Job zugeordnet. In diesen Logs enthaltene Ausnahmen werden von Error Reporting erfasst und gemeldet.
Das integrierte Logging bietet einen Ausgleich zwischen Zuverlässigkeit und Ressourcennutzung und sollte für die meisten Anwendungen funktionieren. Das Schreiben von Logeinträgen mithilfe der integrierten Logging-Funktion verbraucht kein Kontingent für die Anzahl der entries.write
-Anfragen pro Minute der Cloud Logging API.
Wenn Ihre Anwendung Anforderungen an ein höheres Volumen oder eine höhere Zuverlässigkeit hat, empfehlen wir, die Cloud Logging API direkt zu verwenden, entweder als Bibliothek in Ihrer Anwendung oder als separaten Sidecar-Container.
Einfachen Text im Vergleich zu strukturiertem JSON in Logs verwenden
Wenn Sie Logs schreiben, können Sie einen einfachen Textstring oder eine einzelne Zeile mit serialisiertem JSON (auch als "strukturierte" Daten bezeichnet) senden. Diese wird von Cloud Logging erfasst und geparst und in jsonPayload
eingefügt. Die einfache Textnachricht wird dagegen in textPayload
eingefügt.
Strukturierte Logs schreiben
Das folgende Snippet zeigt, wie strukturierte Logeinträge geschrieben werden. Außerdem wird gezeigt, wie Lognachrichten mit dem entsprechenden Anfragelog in Beziehung gesetzt werden.
Node.js
Python
Go
Die Struktur für jeden Logeintrag wird vom Typ Entry
bereitgestellt:
Wenn eine Eintragsstruktur protokolliert wird, wird die Methode String
aufgerufen, um sie in das von Cloud Logging erwartete JSON-Format zu überführen:
Java
Aktivieren Sie das JSON-Logging mit Logback und SLF4J, indem Sie den Logstash-JSON-Encoder in Ihrer logback.xml
-Konfiguration aktivieren.
Passen Sie Standardfeldnamen an, um unerwünschte Inhalte von der Aufnahme in die Log-Nutzlast auszuschließen. Eine Liste der Feldnamen und der erwarteten Datenformate finden Sie unter Logging-Agent verwenden.
Spezielle JSON-Felder in Nachrichten
Wenn Sie ein strukturiertes Log als JSON-Wörterbuch erstellen, werden bestimmte Felder aus jsonPayload
entfernt und in das entsprechende Feld im erstellten LogEntry geschrieben, wie in der Dokumentation für spezielle Felder erläutert.
Wenn Ihre JSON-Datei beispielsweise das Attribut severity
enthält, wird es aus jsonPayload
entfernt und stattdessen als severity
des Logeintrags angezeigt.
Das Attribut message
wird als Hauptanzeigentext des Logeintrags verwendet, sofern vorhanden.
Weitere Informationen zu speziellen Attributen erhalten Sie unten im Abschnitt Logging-Ressource.
Containerlogs mit einem Anfragelog korrelieren (nur Dienste)
Im Log-Explorer werden Logs, die mit demselben trace
verknüpft sind, im hierarchischen Format angezeigt. Wenn Sie auf das Dreiecksymbol links neben dem Anfragelogeintrag klicken, werden die mit dieser Anfrage verbundenen Containerlogs unter dem Anfragelog verschachtelt angezeigt.
Containerlogs werden nicht automatisch mit Anfragelogs korreliert, es sei denn, Sie verwenden eine Cloud Logging-Clientbibliothek.
Um Containerlogs mit Anforderungslogs zu korrelieren, ohne eine Clientbibliothek zu verwenden, können Sie eine strukturierte JSON-Logzeile verwenden, die ein logging.googleapis.com/trace
-Feld mit der aus dem X-Cloud-Trace-Context
-Header extrahierten Trace-ID enthält, wie im obigen Beispiel für strukturiertes Logging gezeigt.
Nutzung der Anfragelogressource steuern (nur Dienste)
Anfragelogs werden automatisch erstellt. Auch wenn Sie die Menge der Anforderungslogs nicht direkt über Cloud Run steuern können, können Sie das Feature Logausschlüsse von Cloud Logging verwenden.
Ein Hinweis zu Logging-Agents
Wenn Sie Cloud Logging mit bestimmten Google Cloud-Produkten wie Compute Engine verwendet haben, haben Sie möglicherweise Logging-Agents von Cloud Logging verwendet. Cloud Run verwendet keine Logging-Agents, da es integrierte Unterstützung für die Logerfassung bietet.
Logging-Ressourcennamen
Die Namen der Logging-Ressourcen für Cloud Run lauten:
- Cloud Run-Überarbeitung (
cloud_run_revision
) - Cloud Run-Job (
cloud_run_job
).
Ressourcen für die Protokollierung
Wenn Sie im Log-Explorer auf einen Logeintrag klicken, wird ein Logeintrag im JSON-Format geöffnet, in dem Sie die gewünschten Details aufrufen können.
Alle Felder in einem Logeintrag, wie Zeitstempel, Schweregrad und httpRequest
, sind Standardfelder und werden in der Dokumentation für einen Logeintrag beschrieben.
Cloud Run fügt zusätzliche Metadaten hinzu, sodass Sie die Quelle eines Logs identifizieren können. Dazu gehören die Labels, die Sie für Ihren Cloud Run-Dienst festgelegt haben, und Ressourcenlabels, die nur für Cloud Run gelten.
Logeintragsfelder für einen Dienst
Die folgende Liste enthält die Felder, die im Logeintrag für einen Cloud Run-Dienst enthalten sind:
Feld | Werte und Hinweise |
---|---|
LogEntry.labels.instanceId |
Die Instanz, die den Request verarbeitet hat. |
LogEntry.labels. mylabel,LogEntry.labels. mysecondlabel |
Die Labels, die Sie für den Dienst festlegen |
LogEntry.logName |
Gibt das Log an, z. B. Anfragelog, Standardfehler, Standardausgabe usw. |
LogEntry.resource.labels.location |
Gibt den Google Cloud-Standort des Dienstes an. |
LogEntry.resource.labels.project_id |
Das Projekt, in dem der Dienst bereitgestellt wird. |
LogEntry.resource.labels.revision_name |
Die Überarbeitung, die die Anfrage bereitgestellt hat. |
LogEntry.resource.labels.service_name |
Der Dienst, der die Anfrage bereitgestellt hat. |
LogEntry.resource.type |
cloud_run_revision . Der Cloud Run-Ressourcentyp. |
Hier ist ein Beispiel für eine Logeintrag-Anfrage für einen Cloud Run-Dienst:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
mylabel: "mylabelvalue"
mysecondlabel: "mysecondlabelvalue"
}
logName: "projects/my-project/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "us-central1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
Logeintragsfelder für Jobs
Die folgende Liste enthält die Felder, die im Logeintrag für einen Cloud Run-Job enthalten sind:
Feld | Werte und Hinweise |
LogEntry.labels.instanceId | Die Instanz. |
LogEntry.labels.mylabel,
LogEntry.labels.mysecondlabel |
Die Labels, die Sie für den Job festlegen |
LogEntry.logName | Gibt das Log an, z. B. Anfragelog, Standardfehler, Standardausgabe usw. |
LogEntry.resource.labels.location | Gibt den Google Cloud-Standort des Dienstes an. |
LogEntry.resource.labels.project_id | Das Projekt, in dem der Dienst bereitgestellt wird. |
LogEntry.resource.labels.job_name | Der Name des Jobs. |
LogEntry.labels.execution_name | Der Name der Jobausführung. |
LogEntry.labels.task_index | Der Aufgabenindex. |
LogEntry.labels.task_attempt | Gibt an, wie oft dieser Vorgang versucht wurde. |
LogEntry.resource.type | cloud_run_job . Der Cloud Run-Ressourcentyp.
|