プラットフォームのログの使用

このページでは、Cloud Logging の一部として Live Stream API によって生成されたプラットフォーム ログを使用する方法について説明します。Live Stream API は、Logging API サービス名 livestream.googleapis.com を使用して、チャネル関連のアクティビティをログに記録します。

始める前に

  • ログを表示して 管理するための適切な IAM 権限とロールがあることを確認します。

プラットフォーム ロギングを有効にする

デフォルトでは、Live Stream API の livestream.googleapis.com/channel_activities プラットフォーム ログは無効になっています。ログを有効にするには、チャネル リソースの作成時または更新時に重大度レベルを指定する必要があります。

ログを有効にするには、 projects.locations.channels.create メソッドまたは projects.locations.channels.patch メソッドのリクエスト JSON 本文に次のフィールドを追加します。

   "logConfig": {
     "logSeverity": "SEVERITY_LEVEL"
   },
  

ここで、SEVERITY_LEVEL は次のいずれかです。

  • OFF
  • DEBUG
  • INFO
  • WARNING
  • ERROR

チャネルのログの重大度レベルを選択すると、選択した重大度レベル以上の重大度レベルのプラットフォーム ログのみが記録されます。 たとえば、重大度レベルが WARNING の場合、重大度レベルが WARNINGERROR のログのみが記録されます。重大度レベルが INFO の場合、DEBUG 以外のすべての重大度レベルのログが記録されます。

ログの重大度レベルの詳細については、LogSeverity をご覧ください。

プラットフォーム ログを表示する

プラットフォーム ログを表示する手順は次のとおりです。

コンソール

コンソールでプラットフォーム ログを表示するには: Google Cloud

  1. ログ エクスプローラに移動します。

    [ログ エクスプローラ] に移動

  2. 適切な Google Cloud プロジェクトを選択します。

  3. [クエリ] フィールドに次のクエリコマンドを入力します。

    resource.labels.channel_id=CHANNEL_ID
    resource.labels.location=LOCATION
    logName="projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities"
    

    ここで

    • CHANNEL_ID は、デバッグまたはモニタリングするチャネルの ID です。例: my-channel

    • LOCATION は、デバッグまたはモニタリングするチャネルのロケーションです。例: us-central1

    • PROJECT_ID は、デバッグまたはモニタリングするチャネルが含まれているプロジェクトの ID です。例: my-project

  4. [実行] をクリックします。

ログ エクスプローラの詳細については、 ログ エクスプローラの概要ログ エクスプローラの使用をご覧ください。

gcloud

gcloud コマンドライン ツールは、Cloud Logging へのコマンドライン インターフェースを提供します。

プロジェクトの channel_activities ログを表示するには、次のコマンドを実行します。

gcloud logging read "logName:projects/PROJECT_ID/logs/livestream.googleapis.com%2Fchannel_activities" --project=PROJECT_ID

ここで、PROJECT_ID は プロジェクトの ID です。 Google Cloud

Cloud Logging での gcloud ツールの使用方法の詳細については、 gcloud logging をご覧ください。

プラットフォームのログを使用する

このセクションでは、Live Stream API の特定のプラットフォーム ログの使用方法と解釈について説明します。

eventStateChange

eventStateChange ログは、チャネル イベントの状態が変化したときに生成されます。チャネル イベントの新しい状態が FAILED の場合、eventStateChange ログの重大度は ERROR です。それ以外の場合、eventStateChange ログの重大度レベルは INFO です。

eventStateChange ファイルの例を次に示します。

{
  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 ログは、入力ストリームが SCTE35 コマンドを受信したときに生成されます。scte35CommandReceived ログの重大度レベルは INFO です。

durationFlagbreakDurationspliceTimeoutOfNetworkIndicator のみが処理されます。spliceTime がない場合、SCTE35 コマンドはすぐに実行されます。その他のフィールドはすべて NoOps として扱われます。

scte35CommandReceived ファイルの例を次に示します。

{
  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 ログは、チャネルのストリーミング状態が変化したときに生成されます。チャネルの新しい状態が STREAMING_ERROR の場合、streamingStateChange ログの重大度は ERROR です。それ以外の場合、streamingStateChange ログの重大度レベルは INFO です。

以下は、前の状態が STREAMING_ERROR で、新しい状態が STREAMING である streamingStateChange ログの例です。

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

ログ エクスプローラの [クエリ] フィールドにコマンドを追加して、表示されるログを絞り込むことができます。

次のコマンドを追加して、新しい状態が STREAMING のすべての streamingStateChange ログを表示します。

jsonPayload.streamingStateChange.newState="STREAMING"

次のコマンドを追加して、streamingStateChange ログのみを表示します。

jsonPayload.streamingStateChange.newState:*

streamingError

streamingError ログは、チャネルでストリーミング関連のエラーが発生したときに生成されます。streamingError ログのログの重大度レベルは ERROR です。

指定した Cloud Storage バケットに出力ファイルをアップロードする権限を Live Stream API が拒否された場合の streamingError ログの例を次に示します。

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

指定した Cloud Storage バケットが存在しない場合にも、このエラーが発生することがあります。

streamingError.messageThis is due to an internal error. If the error persists, please contact support team というメッセージが表示された場合は、ログの 内容をコピーして サポートチーム に送信し、トラブルシューティングを依頼してください。

inputAccept

inputAccept ログは、入力ストリームが Live Stream API 入力エンドポイントに正常に接続されたときに生成されます。inputAccept ログの重大度レベルは INFO です。

inputAccept ログの inputStreamProperty フィールドには、入力ストリームの動画と音声のサブストリームに関する次の情報が含まれます。

動画ストリーム
  • index
  • コーデック
  • フレームレート
  • resolution
音声ストリーム
  • index
  • チャネル数
  • チャネル レイアウト
  • codec information

inputAccept ログを使用して、入力ストリームの形式と受け入れステータスを確認できます。

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

ログ エクスプローラの [クエリ] フィールドに次のコマンドを追加して、特定のストリームの inputAccept ログのみを表示します。

jsonPayload.inputAccept.streamId="STREAM_ID"

ここで、STREAM_ID は、入力エンドポイント URI に含まれるストリームの固有識別子です。

inputError

inputError ログは、Live Stream API によって入力ストリームが拒否されたときに生成されます。inputError ログの重大度レベルは ERROR です。

まだ開始されていないチャネルに入力ストリームが送信された場合の inputError ログの例を次に示します。

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

すでにストリーミング中のチャネルに重複する入力ストリームが送信された場合の inputError ログの例を次に示します。

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

ログ エクスプローラの [クエリ] フィールドに次のコマンドを追加して、特定のストリームの inputError ログのみを表示します。

jsonPayload.inputError.streamId="STREAM_ID"

ここで、STREAM_ID は、入力エンドポイント URI に含まれるストリームの固有識別子です。

inputDisconnect

inputDisconnect ログは、入力ストリームが Live Stream API から切断されたときに生成されます。inputDisconnect ログを使用して、予期しないライブ配信の切断を確認できます。inputDisconnect ログの重大度レベルは INFO です。

inputDisconnect ファイルの例を次に示します。

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