Plattformlogs verwenden

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 Logging API-Dienstnamen livestream.googleapis.com, um kanalbezogene Aktivitäten zu protokollieren.

Hinweise

Plattform-Logging aktivieren

Standardmäßig werden die livestream.googleapis.com/channel_activities-Plattformlogs für Live Stream API deaktiviert ist. Zum Aktivieren der Logs müssen Sie einen Wichtigkeitsstufe vor, wenn Sie die Kanalressource erstellen oder aktualisieren.

Fügen Sie zum Aktivieren der Logs das folgende Feld in den JSON-Anfragetext der projects.locations.channels.create oder die projects.locations.channels.patch-Methode:

   "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 Schweregraden, die höher oder gleich dem ausgewählten Schweregrad sind, werden protokolliert. Lautet der Schweregrad beispielsweise WARNING, werden nur Logs mit diesem Schweregrad erstellt. WARNING und ERROR werden 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 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 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

  4. 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 für Ihr Google Cloud-Projekt.

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 Live Stream API

eventStateChange

eventStateChange-Logs werden generiert, wenn der Status eines Kanalereignisses Änderungen. 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.

Das folgende Beispiel zeigt 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 ein SCTE35-Befehl. 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. Der Schweregrad eines streamingStateChange-Logs ist ERROR, wenn der Der neue Status des Kanals ist STREAMING_ERROR. 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-Logs aufzurufen, bei denen der neue Status STREAMING ist:

jsonPayload.streamingStateChange.newState="STREAMING"

Fügen Sie den folgenden Befehl hinzu, damit nur streamingStateChange-Logs angezeigt werden:

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 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-Logs werden generiert, wenn ein Eingabestream erfolgreich verbunden wurde an den Eingabeendpunkt der Live Stream API übergeben. Die Wichtigkeitsstufe von inputAccept-Logs ist INFO.

Das Feld inputStreamProperty in einem inputAccept-Log enthält Folgendes: Informationen zu den Video- und Audio-Substreams des Eingabestreams:

Videostreams
  • index
  • Codec
  • Framerate
  • Auflösung
Audiostreams
  • index
  • Kanalanzahl
  • Kanallayout
  • Codec-Informationen

Mit inputAccept-Logs können Sie das Format und den Annahmestatus der Eingabestream:

{
  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-Logs werden generiert, wenn ein Eingabestream vom Live Stream API 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 den folgenden Befehl in das Feld Abfrage des Log-Explorers ein, damit nur die Daten angezeigt werden. inputError-Logs für einen bestimmten Stream:

jsonPayload.inputError.streamId="STREAM_ID"

Dabei ist STREAM_ID die eindeutige Kennung für einen Stream, der in der Eingabedaten (input) enthalten ist. Endpunkt-URI.

inputDisconnect

inputDisconnect-Logs werden generiert, wenn die Eingabestreams getrennt werden über die Live Stream API. Mit inputDisconnect-Logs können Sie prüfen, unerwartete Unterbrechungen beim Livestream. Der Schweregrad 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"
  ...
}