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

このページでは、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 をご覧ください。

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

プラットフォームのログを表示するには、次の手順に沿って操作します。

Console

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 は Google Cloud プロジェクトの ID です。

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

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

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

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 GCS bucket "STORAGE_BUCKET_NAME""
  ...
  severity: "ERROR"
  ...
}

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

streamingError.message によってメッセージ This is due to an internal error. If the error persists, please contact support team が表示される場合は、ログの内容をコピーし、サポートチームに送信してトラブルシューティングを行います。

InputAccept

入力ストリームが Live Stream API 入力エンドポイントに正常に接続されると、InputAccept ログが生成されます。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

入力ストリームが Live Stream API から切断されると、InputDisconnect ログが生成されます。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"
  ...
}