Auf dieser Seite wird beschrieben, wie Sie Plattformlogs verwenden, die von der Live Stream API im Rahmen von Cloud Logging generiert werden. Die Live Stream API verwendet den Logging API-Dienstnamen livestream.googleapis.com
, um kanalbezogene Aktivitäten zu protokollieren.
Hinweise
- Achten Sie darauf, dass Sie die richtigen IAM-Berechtigungen und -Rollen zum Ansehen und Verwalten von Logs haben.
Plattform-Logging aktivieren
Standardmäßig sind die livestream.googleapis.com/channel_activities
-Plattformlogs für die Live Stream API deaktiviert. Zum Aktivieren der Logs müssen Sie beim Erstellen oder Aktualisieren der Kanalressource einen Schweregrad angeben.
Fügen Sie dem JSON-Anfragetext der Methode projects.locations.channels.create
oder projects.locations.channels.patch
das folgende Feld hinzu, um die Logs zu aktivieren:
"logConfig": { "logSeverity": "SEVERITY_LEVEL" },
Dabei kann SEVERITY_LEVEL
für folgendes stehen:
OFF
DEBUG
INFO
WARNING
ERROR
Nachdem Sie einen Logschweregrad für einen Kanal ausgewählt haben, werden nur die Plattformlogs mit einer Wichtigkeitsstufe protokolliert, die größer oder gleich der ausgewählten Wichtigkeitsstufe ist.
Wenn die Wichtigkeitsstufe beispielsweise WARNING
lautet, werden nur Logs mit den Schweregraden WARNING
und ERROR
protokolliert. Wenn die Wichtigkeitsstufe INFO
ist, werden Logs aller Schweregrade mit Ausnahme von DEBUG
protokolliert.
Weitere Informationen zu Logschweregraden finden Sie unter LogSeverity.
Plattformlogs ansehen
So rufen Sie Plattformlogs auf:
Console
So rufen Sie Plattformlogs in der Google Cloud Console auf:
Rufen Sie den Log-Explorer auf:
Wählen Sie das entsprechende Google Cloud-Projekt aus.
Geben Sie im Feld Abfrage den folgenden Abfragebefehl ein:
resource.labels.channel_id=CHANNEL_ID resource.labels.location=LOCATION logName="projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities"
Dabei gilt:
CHANNEL_ID
ist die ID des Kanals, den Sie debuggen oder überwachen möchten. Beispiel:my-channel
LOCATION
ist der Speicherort des Kanals, den Sie debuggen oder überwachen möchten. Beispiel:us-central1
PROJECT_ID
ist die ID des Projekts mit dem Kanal, den Sie debuggen oder überwachen möchten. Beispiel:my-project
Klicken Sie auf Abfrage ausführen.
Weitere Informationen zum Log-Explorer finden Sie unter Übersicht über den Log-Explorer und Log-Explorer verwenden.
gcloud
Das gcloud-Befehlszeilentool bietet eine Befehlszeile für Cloud Logging.
Führen Sie den folgenden Befehl aus, um die channel_activities
-Logs für Ihr Projekt aufzurufen:
gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID
Dabei ist PROJECT_ID
die ID des Google Cloud-Projekts.
Weitere Informationen zur Verwendung des gcloud-Tools mit Cloud Logging finden Sie unter gcloud logging
.
Plattformlogs verwenden
In diesem Abschnitt wird beschrieben, wie Sie bestimmte Plattformlogs für die Live Stream API verwenden und interpretieren.
StreamingStateChange
StreamingStateChange
-Logs werden generiert, wenn sich der Streamingstatus eines Kanals ändert. Die Wichtigkeitsstufe eines StreamingStateChange
-Logs ist ERROR
, wenn der neue Status des Kanals STREAMING_ERROR
ist. Andernfalls ist die Wichtigkeitsstufe eines StreamingStateChange
-Logs INFO
.
Das folgende Beispiel zeigt ein StreamingStateChange
-Log, bei dem der vorherige Status STREAMING_ERROR
und der neue Status STREAMING
ist:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" message: "streaming state of channel "CHANNEL_ID" changes from "STREAMING_ERROR" to "STREAMING"" streamingStateChange: { newState: "STREAMING" previousState: "STREAMING_ERROR" ... type: "livestream.googleapis.com/Channel" } severity: "INFO" ... }
Sie können zusätzliche Befehle im Feld Abfrage des Log-Explorers hinzufügen, um die angezeigten Logs einzugrenzen.
Fügen Sie den folgenden Befehl hinzu, um alle StreamingStateChange
-Logs mit dem neuen Status STREAMING
aufzurufen:
jsonPayload.streamingStateChange.newState="STREAMING"
Fügen Sie den folgenden Befehl hinzu, um nur StreamingStateChange
-Logs anzuzeigen:
jsonPayload.streamingStateChange.newState:*
StreamingError
StreamingError
-Logs werden generiert, wenn in einem Kanal ein Streaming-Fehler auftritt. Die Wichtigkeitsstufe eines StreamingError
-Logs ist ERROR
.
Das folgende Beispiel zeigt ein StreamingError
-Log, in dem der Live Stream API die Berechtigung zum Hochladen von Ausgabedateien in den angegebenen Cloud Storage-Bucket verweigert wurde:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" message: "A live streaming encounters an error." streamingError: { error: { ... message: "Permission denied to access the GCS bucket "STORAGE_BUCKET_NAME"" ... severity: "ERROR" ... }
Dieser Fehler kann auch auftreten, wenn der angegebene Cloud Storage-Bucket nicht vorhanden ist.
Wenn streamingError.message
die Meldung This is due to an internal
error. If the error persists, please contact support team
anzeigt, kopieren Sie den Inhalt des Logs und senden Sie ihn zur Fehlerbehebung an das Supportteam.
InputAccept
InputAccept
-Logs werden generiert, wenn ein Eingabestream erfolgreich mit dem Eingabeendpunkt der Live Stream API verbunden wurde. Die Wichtigkeitsstufe von InputAccept
-Logs ist INFO
.
Das Feld InputStreamProperty
in einem InputAccept
-Log enthält die folgenden Informationen zu den Video- und Audiounterstreams des Eingabestreams:
Videostreams |
|
Audiostreams |
|
Mit InputAccept
-Logs können Sie das Format und den Akzeptanzstatus des Eingabestreams prüfen:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputAccept: { inputAttachment: "input-primary" inputStreamProperty: { audioStreams: [ 0: { audioFormat: { channelCount: 2 channelLayout: [ 0: "fl" 1: "fr" ] codec: "aac" } index: 1 } ] videoStreams: [ 0: { videoFormat: { codec: "h264" frameRate: 60 heightPixels: 720 widthPixels: 1280 ... streamId: "STREAM_ID" } message: "Input stream "STREAM_ID" is accepted by channel "CHANNEL_ID" for input attachment "input-primary"" } ... severity: "INFO" ... }
Fügen Sie den folgenden Befehl in das Feld Abfrage des Log-Explorers ein, um nur InputAccept
-Logs für einen bestimmten Stream anzuzeigen:
jsonPayload.inputAccept.streamId="STREAM_ID"
Dabei ist STREAM_ID
die eindeutige Kennung für einen Stream, der im Eingabeendpunkt-URI enthalten ist.
InputError
InputError
-Logs werden generiert, wenn ein Eingabestream von der Live Stream API abgelehnt wird. Die Wichtigkeitsstufe für ein InputError
-Log ist ERROR
.
Das folgende Beispiel zeigt ein InputError
-Log, bei dem ein Eingabestream an einen noch nicht gestarteten Kanal gesendet wurde:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputError: { error: { ... message: "The channel has not been started yet" } streamId: "STREAM_ID" ... severity: "ERROR" ... }
Das folgende Beispiel zeigt ein InputError
-Log, bei dem ein doppelter Eingabestream an einen bereits gestreamten Kanal gesendet wurde:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputError: { error: { code: 9 message: "input stream "STREAM_ID" has been accepted. Please verify if another input stream has been streaming to the same endpoint." } streamId: "STREAM_ID" ... severity: "ERROR" ... }
Fügen Sie den folgenden Befehl in das Feld Abfrage des Log-Explorers ein, um nur InputError
-Logs für einen bestimmten Stream anzuzeigen:
jsonPayload.inputError.streamId="STREAM_ID"
Dabei ist STREAM_ID
die eindeutige Kennung für einen Stream, der im Eingabeendpunkt-URI enthalten ist.
InputDisconnect
InputDisconnect
-Logs werden generiert, wenn die Eingabestreams von der Live Stream API getrennt werden. Sie können InputDisconnect
-Logs verwenden, um nach unerwarteten Verbindungen von Livestreams zu suchen. Die Wichtigkeitsstufe für ein InputDisconnect
-Log ist INFO
.
Das folgende Beispiel zeigt ein InputDisconnect
-Log:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" inputDisconnect: { inputAttachment: "input-primary" streamId: "STREAM_ID" } message: "Input stream "STREAM_ID" is disconnected by channel "CHANNEL_ID" for input attachment "input-primary"" ... severity: "INFO" ... }