Auf dieser Seite wird beschrieben, wie Sie Plattformlogs verwenden, die von der Live Stream API als
Teil von Cloud Logging generiert werden. Die Live Stream API verwendet den Logging API-Dienstnamen
livestream.googleapis.com, um channelbezogene Aktivitäten zu protokollieren.
Hinweis
- Prüfen Sie, ob Sie die richtigen IAM-Berechtigungen und ‑Rollen haben, um Logs anzusehen und zu verwalten.
Plattform-Logging aktivieren
Standardmäßig sind die Plattformlogs livestream.googleapis.com/channel_activities für die Live Stream API deaktiviert. Wenn Sie die Logs aktivieren möchten, müssen Sie beim Erstellen oder Aktualisieren der Channelressource einen Schweregrad angeben.
Wenn Sie die Logs aktivieren möchten, fügen Sie dem JSON-Anfragetext der
projects.locations.channels.create oder der
projects.locations.channels.patch Methode das folgende Feld hinzu:
"logConfig": {
"logSeverity": "SEVERITY_LEVEL"
},
Dabei kann SEVERITY_LEVEL einen der folgenden Werte haben:
OFFDEBUGINFOWARNINGERROR
Wenn Sie einen Schweregrad für Logs für einen Channel auswählen, werden nur die Plattformlogs mit einem Schweregrad protokolliert, der höher oder gleich dem ausgewählten Schweregrad ist.
Wenn der Schweregrad beispielsweise WARNING ist, werden nur Logs mit dem Schweregrad WARNING und ERROR protokolliert. Wenn der Schweregrad INFO ist, werden Logs aller Schweregrade außer DEBUG protokolliert.
Weitere Informationen zu Schweregraden für Logs 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_IDist die ID des Channels, den Sie debuggen oder überwachen möchten. Beispiel:my-channel.LOCATIONist der Standort des Channels, den Sie debuggen oder überwachen möchten. Beispiel:us-central1.PROJECT_IDist die ID des Projekts, das den Channel 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-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 Ihres 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.
eventStateChange
eventStateChange -Logs werden generiert, wenn sich der Status eines Channelereignisses ändert. Der Schweregrad eines eventStateChange-Logs ist ERROR, wenn der neue Status des Channelereignisses FAILED ist. Andernfalls ist der Schweregrad eines eventStateChange-Logs INFO.
Im Folgenden finden Sie ein Beispiel für ein eventStateChange-Log:
{
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 SCTE35-Befehl empfängt. Der Schweregrad für ein scte35CommandReceived-Log ist INFO.
Nur durationFlag, breakDuration, spliceTime und outOfNetworkIndicator werden verarbeitet. Wenn spliceTime fehlt, wird der SCTE35-Befehl sofort ausgeführt. Alle anderen Felder werden als No-Ops behandelt.
Im Folgenden finden Sie ein Beispiel für 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
outOfNetworkIndicator: 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 sich der Streamingstatus eines Channels ändert. Der Schweregrad eines streamingStateChange-Logs ist ERROR, wenn der
neue Status des Channels STREAMING_ERROR ist. Andernfalls ist der Schweregrad eines streamingStateChange-Logs INFO.
Im Folgenden finden Sie ein Beispiel für 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 im 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-Logs anzuzeigen, bei denen der neue Status STREAMING ist:
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 bei einem Channel ein Streamingfehler auftritt. Der Schweregrad eines streamingError-Logs ist ERROR.
Im Folgenden finden Sie ein Beispiel für ein streamingError-Log, bei dem der Live Stream API die Berechtigung verweigert wurde, Ausgabedateien in den angegebenen Cloud Storage-Bucket hochzuladen:
{
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 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. Der Schweregrad von inputAccept-Logs ist INFO.
Das Feld inputStreamProperty in einem inputAccept-Log enthält die folgenden Informationen zu den Video- und Audio-Unterstreams des Eingabestreams:
| Video streams |
|
| Audio streams |
|
Mit inputAccept-Logs können Sie das Format und den Akzeptanzstatus des Eingabestreams überprü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 im Feld Abfrage des Log-Explorers den folgenden Befehl hinzu, 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 in der Eingabe
Endpunkt-URI enthalten ist.
inputError
inputError -Logs werden generiert, wenn ein Eingabestream von der Live Stream API abgelehnt wird. Der Schweregrad für ein inputError-Log ist ERROR.
Im Folgenden finden Sie ein Beispiel für ein inputError-Log, bei dem ein Eingabestream an einen Channel gesendet wurde, der noch nicht gestartet 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"
...
}
Im Folgenden finden Sie ein Beispiel für ein inputError-Log, bei dem ein doppelter Eingabestream an einen Channel gesendet wurde, 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 Feld Abfrage des Log-Explorers 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 in der Eingabe
Endpunkt-URI enthalten ist.
inputDisconnect
inputDisconnect -Logs werden generiert, wenn die Eingabestreams von der Live Stream API getrennt werden. Mit inputDisconnect-Logs können Sie nach unerwarteten Unterbrechungen des Livestreams suchen. Der Schweregrad für ein inputDisconnect-Log ist INFO.
Im Folgenden finden Sie ein Beispiel für 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"
...
}