このページでは、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
の場合、重大度レベルが WARNING
と ERROR
のログのみが記録されます。重大度レベルが INFO
の場合、DEBUG
を除くすべての重大度レベルのログが記録されます。
ログの重大度の詳細については、LogSeverity をご覧ください。
プラットフォーム ログを表示する
プラットフォーム ログを表示する手順は次のとおりです。
Console
Google Cloud コンソールでプラットフォーム ログを表示するには:
ログ エクスプローラに移動します。
適切な Google Cloud プロジェクトを選択します。
[クエリ] フィールドに次のクエリコマンドを入力します。
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
。
[実行] をクリックします。
ログ エクスプローラの詳細については、ログ エクスプローラの概要とログ エクスプローラの使用をご覧ください。
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 の特定のプラットフォーム ログの使用方法と解釈方法について説明します。
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
です。
処理されるのは durationFlag
、breakDuration
、spliceTime
、outOfNetworkIndicator
のみです。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
です。
次の streamingStateChange
ログの例では、以前の状態は STREAMING_ERROR
、新しい状態は 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" ... }
ログ エクスプローラの [クエリ] フィールドにコマンドを追加して、表示されるログを絞り込むことができます。
次のコマンドを追加して、新しい状態が 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.message
に This is due to an internal
error. If the error persists, please contact support team
というメッセージが表示された場合は、ログの内容をコピーしてサポートチームに送信し、トラブルシューティングを行ってください。
inputAccept
inputAccept
ログは、入力ストリームが Live Stream API 入力エンドポイントに正常に接続されたときに生成されます。inputAccept
ログの重大度は INFO
です。
inputAccept
ログの inputStreamProperty
フィールドには、入力ストリームの動画サブストリームと音声サブストリームに関する次の情報が含まれます。
動画ストリーム |
|
音声ストリーム |
|
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" ... }