このページでは、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 は次のいずれかです。
OFFDEBUGINFOWARNINGERROR
チャネルのログ重大度レベルを選択すると、選択した重大度レベル以上の重大度レベルのプラットフォーム ログのみがログに記録されます。たとえば、重大度レベルが 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 です。
次の例は、以前の状態が 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.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"
...
}