Auf dieser Seite wird beschrieben, wie Sie von der Live Stream API generierte Plattformprotokolle als
Teil von Cloud Logging. Die Live Stream API verwendet den Dienstnamen der Logging API (livestream.googleapis.com
), um kanalbezogene Aktivitäten zu protokollieren.
Hinweise
- Prüfen Sie, ob Sie die erforderlichen IAM-Berechtigungen und -Rollen zum Ansehen und Verwalten von Protokollen haben.
Plattform-Logging aktivieren
Standardmäßig werden die livestream.googleapis.com/channel_activities
-Plattformlogs für
Live Stream API deaktiviert ist. Wenn Sie die Protokolle aktivieren möchten, müssen Sie beim Erstellen oder Aktualisieren der Kanalressource eine Schweregradstufe angeben.
Wenn Sie die Protokolle aktivieren möchten, fügen Sie dem JSON-Anfragetext der Methode projects.locations.channels.create
oder projects.locations.channels.patch
das folgende Feld hinzu:
"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, protokolliert nur die Plattform mit
einen Schweregrad, der höher oder gleich dem
ausgewählten Schweregrad ist, protokolliert.
Wenn der Schweregrad beispielsweise WARNING
ist, werden nur Logs mit den Schweregraden WARNING
und ERROR
protokolliert. Wenn der Schweregrad INFO
ist, werden Logs aller
Schweregrade außer DEBUG
werden protokolliert.
Weitere Informationen zu Schweregraden von Logs finden Sie unter LogSeverity.
Plattformlogs ansehen
So rufen Sie Plattformlogs auf:
Console
So rufen Sie Plattformprotokolle 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, das den Kanal enthält, den Sie debuggen oder überwachen möchten. Beispiel:my-project
Klicken Sie auf Abfrage ausführen.
Weitere Informationen zum Log-Explorer finden Sie unter Log-Explorer – Übersicht 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
-Protokolle 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 Ihres Google Cloud-Projekts.
Weitere Informationen zur Verwendung des gcloud-Tools mit Cloud Logging finden Sie unter gcloud logging
.
Plattform-Logs verwenden
In diesem Abschnitt wird beschrieben, wie du bestimmte Plattformprotokolle für die Live Stream API verwendest und auswertest.
eventStateChange
eventStateChange
-Protokolle werden generiert, wenn sich der Status eines Kanalereignisses ändert. Der Schweregrad eines eventStateChange
-Logs ist ERROR
, wenn der
Der neue Status des Kanalereignisses ist FAILED
. Andernfalls wird der Schweregrad einer
eventStateChange
-Log ist INFO
.
Im Folgenden finden Sie ein Beispiel für ein eventStateChange
-Protokoll:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" eventStateChange: { eventId: "my-ad-break" newState: "SCHEDULED" previousState: "PENDING" } message: "State of event "my-ad-break" changed from "PENDING" to "SCHEDULED"." } ... severity: "INFO" ... }
scte35CommandReceived
scte35CommandReceived
-Logs werden generiert, wenn der Eingabestream einen SCE35-Befehl empfängt. Der Schweregrad für ein scte35CommandReceived
-Log ist INFO
.
Das folgende Beispiel zeigt ein scte35CommandReceived
-Log:
{ jsonPayload: { @type: "type.googleapis.com/google.cloud.video.livestream.logging.v1.ChannelActivity" scte35CommandReceived: { spliceInfoSection: { ptsAdjustment: "123456789" spliceInsert: { availNum: 0 availsExpected: 0 breakDuration: null componentCount: 0 components: [0] durationFlag: false out0fNetworkIndicator: true programSpliceFlag: true spliceEventCancelIndicator: false spliceEventId: 123456789 spliceImmediateFlag: true spliceTime: null uniqueProgramId: 5 } } } message: "Received inband SCTE35 command, eventID=123456789." } ... severity: "INFO" ... }
streamingStateChange
streamingStateChange
-Logs werden generiert, wenn der Streamingstatus eines Kanals
Änderungen. Die Schwere eines streamingStateChange
-Logs ist ERROR
, wenn der neue Status des Kanals STREAMING_ERROR
ist. Andernfalls wird der Schweregrad einer
streamingStateChange
-Log ist INFO
.
Im Folgenden finden Sie ein Beispiel für ein streamingStateChange
-Log, bei dem das vorherige
Zustand ist STREAMING_ERROR
und der neue Status ist STREAMING
:
{ 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 dem Feld Abfrage des Log-Explorers zusätzliche Befehle hinzufügen, um die angezeigten Logs einzugrenzen.
Fügen Sie den folgenden Befehl hinzu, um alle streamingStateChange
-Protokolle anzuzeigen, bei denen der neue Status STREAMING
ist:
jsonPayload.streamingStateChange.newState="STREAMING"
Fügen Sie den folgenden Befehl hinzu, um nur streamingStateChange
-Protokolle anzuzeigen:
jsonPayload.streamingStateChange.newState:*
streamingError
streamingError
-Logs werden generiert, wenn ein Kanal auf eine Streaming-bezogene
Fehler. Der Schweregrad eines streamingError
-Logs ist ERROR
.
Das folgende Beispiel zeigt ein streamingError
-Protokoll, bei dem die Live Stream API
hat die Berechtigung zum Hochladen von Ausgabedateien in den angegebenen Cloud Storage-Bucket verweigert:
{ 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 Cloud Storage 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 die
und zur Fehlerbehebung an das Supportteam senden.
inputAccept
inputAccept
-Protokolle werden generiert, wenn ein Eingabestream erfolgreich mit dem Eingabeendpunkt der Livestream API verbunden wurde. Der Schweregrad der inputAccept
-Protokolle ist INFO
.
Das Feld inputStreamProperty
in einem inputAccept
-Log enthält Folgendes:
Informationen zu den Video- und Audio-Substreams des Eingabestreams:
Videostreams |
|
Audiostreams |
|
Mit inputAccept
-Protokollen können Sie das Format und den Annahmestatus 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 Folgendes aufzurufen:
nur inputAccept
-Logs für einen bestimmten Stream:
jsonPayload.inputAccept.streamId="STREAM_ID"
Dabei ist STREAM_ID
die eindeutige Kennung für einen Stream, der in der Eingabedaten (input) enthalten ist.
Endpunkt-URI.
inputError
inputError
-Protokolle werden generiert, wenn ein Eingabestream von der Livestream API abgelehnt wird. Der Schweregrad für ein inputError
-Log ist ERROR
.
Das folgende Beispiel zeigt ein inputError
-Log, an das ein Eingabestream gesendet wurde.
für einen noch nicht gestarteten Kanal:
{ 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
wurde an einen Kanal gesendet, der bereits streamt:
{ 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 im Log-Explorer im Feld Abfrage den folgenden Befehl hinzu, 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 URI des Eingabeendpunkts enthalten ist.
inputDisconnect
inputDisconnect
-Protokolle werden generiert, wenn die Verbindung der Eingabestreams zur Live Stream API getrennt wird. Mit inputDisconnect
-Logs können Sie prüfen,
unerwartete Unterbrechungen beim Livestream. Der Schweregrad für ein inputDisconnect
-Log ist INFO
.
Im Folgenden finden Sie ein Beispiel für ein inputDisconnect
-Protokoll:
{ 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" ... }