Plattformlogs verwenden

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

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:

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

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:

  1. Rufen Sie den Log-Explorer auf:

    Zu „Log-Explorer“

  2. Wählen Sie das entsprechende Google Cloud Projekt aus.

  3. 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 Channels, den Sie debuggen oder überwachen möchten. Beispiel: my-channel.

    • LOCATION ist der Standort des Channels, den Sie debuggen oder überwachen möchten. Beispiel: us-central1.

    • PROJECT_ID ist die ID des Projekts, das den Channel enthält, den Sie debuggen oder überwachen möchten. Beispiel: my-project.

  4. 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
  • Index
  • Codec
  • Framerate
  • Auflösung
Audio streams
  • Index
  • Kanalanzahl
  • Kanallayout
  • Codec-Informationen

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"
  ...
}