監控 Amazon IVS 低延遲串流功能 - Amazon Interactive Video Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

監控 Amazon IVS 低延遲串流功能

您可以使用 Amazon CloudWatch 監控 Amazon Interactive Video Service (IVS) 資源。CloudWatch 可收集並處理來自 Amazon IVS 的原始資料,進而將這些資料轉換為便於讀取且幾近即時的指標。這些統計資料會保留 15 個月,以便您了解 Web 應用程式或服務效能的歷史。您可以設定特定閾值的警示,當滿足這些閾值時傳送通知或採取動作。如需詳細資訊,請參閱 CloudWatch 使用者指南

指標的時間戳記代表累積指標資料的時間段的開始。例如,假設您在 01:02:00 獲得一個 300 秒的按分鐘計算的 LiveDeliveredTime 指標總和。這表示在 01:02:00 至 01:02:59 的這 1 分鐘期間,觀眾可以觀看 5 分鐘影片所含的內容。

若為指定為高解析度的指標,第一個資料點會在串流開始後幾秒鐘出現。建議您在提出指標要求時,指定 5 秒的期間。(請參閱《Amazon CloudWatch 使用者指南》中的解析度。) 若為其他指標,資料會在其所參照之時間戳記的 1 分鐘內發出。

高解析度指標會隨著時間累計。隨著指標的時間變長,解析度會有效降低。排程如下:

  • 1 秒的指標可供使用 3 小時。

  • 60 秒的指標可供使用 15 天。

  • 5 分鐘的指標可供使用 63 天。

  • 1 小時的指標可供使用 455 天 (15 個月)。

如需有關資料保留的最新資訊,請在 Amazon CloudWatch 常見問答集中搜尋「保留期間」。

必要條件

存取串流工作階段資料

使用 listStreamSessions 端點,您便可存取頻道擁有的長達 60 天的串流清單。此清單可能包含即時串流工作階段 (以空白的 endTime 表示)。

您可以透過 getStreamSession 端點取得特定串流的工作階段資料。若您未指定 streamId 參數,端點會傳回最新的工作階段。此外,您可以定期呼叫端點,以取得串流的最新事件 (最多 500 個)。

主控台說明

  1. 開啟 Amazon IVS 主控台

    (您也可以透過 AWS 管理主控台來存取 Amazon IVS 主控台。)

  2. 在導覽窗格上,選擇 Channels (頻道)。(如果導航窗格已折疊,請先選擇漢堡圖示將其展開。)

  3. 選擇要前往其詳細資訊頁面的頻道。

  4. 向下捲動頁面,直到可看到 Stream sessions (串流工作階段) 部分。

  5. 選取您要存取的工作階段的串流 ID,以檢視其詳細資訊,包括 Amazon CloudWatch 高解析度指標的圖表。

或者,如果一或多個頻道已上線:

  1. 開啟 Amazon IVS 主控台

  2. 在導覽窗格中,選擇 Live channels (直播頻道)。(如果導航窗格已折疊,請先選擇漢堡圖示將其展開。)

  3. 從清單中選取即時頻道,以在分割檢視中存取其工作階段詳細資訊。

AWS SDK 說明

使用 AWS SDK 存取串流工作階段資料是進階選項,需要您先在應用程式上下載並設定SDK。以下是使用 JavaScript 之 AWS SDK 的說明。

必要條件:若要使用以下程式碼範例,您需要將 AWS JavaScript SDK 載入應用程式中。如需詳細資訊,請參閱 適用於 JavaScript 的 AWS SDK 入門

// This first call lists up to 50 stream sessions for a given channel. const AWS = require("aws-sdk"); const REGION = 'us-west-2'; let channelArn = USE_YOUR_CHANNEL_ARN_HERE; AWS.config.getCredentials(function(err) { if (err) console.log(err.stack); // credentials not loaded else { console.log("Access key:", AWS.config.credentials.accessKeyId); } }); AWS.config.update({region: REGION}); var ivs = new AWS.IVS(); // List Stream Sessions async function listSessions(arn) { const result = await ivs.listStreamSessions({"channelArn": arn}).promise(); console.log(result.streamSessions); } listSessions(channelArn); // Get Stream Session async function getSession(arn, id) { const result = await ivs.getStreamSession({"channelArn": arn, "streamId": id}).promise(); console.log(result); // This function polls every 3 seconds and prints the latest IVS stream events. setInterval(function(){ console.log(result.streamSession.truncatedEvents); }, 3000); } getSession(channelArn);

CLI 說明

使用 AWS CLI 存取串流工作階段資料是進階選項,需要您先在機器上下載並設定 CLI。如需詳細資訊,請參閱《AWS 命令列介面使用者指南》。

  1. 列出串流工作階段:

    aws ivs list-stream-sessions --channel-arn <arn>
  2. 使用特定串流的 streamId 來取得其串流工作階段資料:

    aws ivs get-stream-session --channel-arn <arn> --stream-id <streamId>

以下是回應 get-stream-session 呼叫的範例:

{ "streamSession": { "startTime": "2021-10-22T00:03:57+00:00", "streamId": "st-1FQzeLONMT9XTKI43leLSo1", "truncatedEvents": [ { "eventTime": "2021-10-22T00:09:30+00:00", "name": "Session Ended", "type": "IVS Stream State Change" }, { "eventTime": "2021-10-22T00:09:30+00:00", "name": "Stream End", "type": "IVS Stream State Change" }, { "eventTime": "2021-10-22T00:03:57+00:00", "name": "Stream Start", "type": "IVS Stream State Change" }, { "eventTime": "2021-10-22T00:03:50+00:00", "name": "Session Created", "type": "IVS Stream State Change" } ], "endTime": "2021-10-22T00:09:31+00:00", "ingestConfiguration": { "audio": { "channels": 2, "codec": "mp4a.40.2", "sampleRate": 48000, "targetBitrate": 160000 }, "video": { "avcLevel": "4.0", "avcProfile": "Baseline", "codec": "avc1.42C028", "encoder": "obs-output module (libobs version 27.0.1)", "targetBitrate": 3500000, "targetFramerate": 30, "videoHeight": 1080, "videoWidth": 1920 } }, "channel": { "name": "", "ingestEndpoint": "3f234d592b38.global-contribute.live-video.net", "authorized": false, "latencyMode": "LOW", "recordingConfigurationArn": "", "type": "STANDARD", "playbackUrl": "https://3f234d592b38.us-west-2.playback.live-video.net/api/video/v1/us-west-2.991729659840.channel.dY7LsluQX1gV.m3u8", "arn": "arn:aws:ivs:us-west-2:991729659840:channel/dY7LsluQX1gV" } } }

依據運作狀態篩選串流

若要輕鬆找出發生問題的串流,您可以使用 listStreams,依據 health (運作狀態) 來篩選即時串流。

主控台說明

  1. 開啟 Amazon IVS 主控台

    (您也可以透過 AWS 管理主控台來存取 Amazon IVS 主控台。)

  2. 在導覽窗格中,選擇 Live channels (直播頻道)。(如果導航窗格已折疊,請先選擇漢堡圖示將其展開。)

  3. 選取 Filter by health (依運作狀態篩選) 的搜尋欄位。

  4. 在下拉式清單中,選取依據 Health = STARVING (運作狀態 = 耗盡) 篩選。

在篩選後,您可以前往頻道的詳細資訊頁面,選取頻道的即時串流工作階段,以存取輸入組態詳細資訊和串流事件。

CLI 說明

使用 AWS CLI 是進階選項,需要您先在機器上下載並設定 CLI。如需詳細資訊,請參閱《AWS 命令列界面使用者指南》。

依據運作狀態 (例如 STARVING) 篩選串流:

aws ivs list-streams --filter-by health=STARVING

並行串流的 CloudWatch 運作狀態維度

您可以依據特定的 Health 篩選 ConcurrentStreams。請參閱 CloudWatch 指標:IVS 低延遲串流

存取 CloudWatch 指標

Amazon CloudWatch 可收集並處理來自 Amazon IVS 的原始資料,進而將這些資料轉換為可讀取且幾近即時的指標。這些統計資料會保留 15 個月,以便您了解 Web 應用程式或服務效能的歷史。您可以設定特定閾值的警示,當滿足這些閾值時傳送通知或採取動作。如需詳細資訊,請參閱 CloudWatch 使用者指南

請注意,CloudWatch 指標會隨著時間累計。隨著指標的時間變長,解析度會有效降低。排程如下:

  • 1 秒的指標可供使用 3 小時。

  • 60 秒的指標可供使用 15 天。

  • 5 分鐘的指標可供使用 63 天。

  • 1 小時的指標可供使用 455 天 (15 個月)。

在您呼叫 getMetricData 時,可為高解析度指標指定 1、5 (建議使用)、10、30 或任何 60 秒倍數的期間。

CloudWatch 主控台說明

  1. 前往 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  2. 在側邊導覽中,展開 Metrics (指標) 下拉式選單,然後選取 All metrics (所有指標)。

  3. Browse (瀏覽)索引標籤上,使用左側無標籤的下拉式清單,選取建立頻道的「主要」區域。有關區域的更多資訊,請參閱全球解決方案、區域控制。如需支援的區域清單,請參閱 AWS 一般參考中的 Amazon IVS 頁面

  4. Browse (瀏覽)標籤底部,選取 IVS 命名空間。

  5. 執行以下任意一項:

    1. 在搜尋列中,輸入您的資源 ID (ARN 的一部分,arn:::ivs:channel/<resource id>)。

      然後選取 IVS > By Channel (IVS > 按照頻道)。

    2. 如果 IVSAWS 命名空間下顯示為可選取的服務,請選取它。如果您使用 Amazon IVS 並且它正在傳送指標到 Amazon CloudWatch,則將列出它。(如果未列出 IVS,則您沒有任何 Amazon IVS 指標。)

      然後根據需要選擇維度分組;可用的維度會列在下方的 CloudWatch 指標

  6. 選擇要新增到圖表的指標。可用的指標列在 CloudWatch 的指標

您也可以選取 View in CloudWatch (在 CloudWatch 中檢視) 按鈕,從串流工作階段的詳細資訊頁面存取串流工作階段的 CloudWatch 圖表。

CLI 說明

您也可以使用 AWS CLI 存取指標。這需要在您的機器上先下載並設定 CLI。如需詳細資訊,請參閱 AWS 命令列界面使用者指南

然後,使用 AWS CLI 存取 Amazon IVS 低延遲串流功能 指標:

  • 在命令提示中,執行:

    aws cloudwatch list-metrics --namespace AWS/IVS

如需詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的使用 Amazon CloudWatch 指標

CloudWatch 指標:IVS 低延遲串流

Amazon IVS 在 AWS/IVS 命名空間中提供以下指標。

指標 維度 描述

ConcurrentViews

您所有即時頻道的並行檢視計數。view 是一個獨特的檢視工作階段,它主動下載或播放音頻。(如需更詳細的定義,請參閱詞彙表。) 如果頻道為活動狀態但彙總中沒有檢視,則此指標的值為 0。如果沒有處於活動狀態的頻道,則指標沒有資料點。

單位:計數

有效統計資訊:平均、最大值、最小值 — 設定間隔內並行檢視的平均數、最大數或最小數 (分別)。

ConcurrentViews

Channel

按頻道 ARN 篩選 ConcurrentViews。如果頻道處於活動狀態但沒有檢視,則此指標的值為 0。如果頻道處於非活動狀態,則指標沒有資料點。

此指標為頻道提供資料,而非串流。若要查看指定頻道上特定串流工作階段的並行檢視,請在串流工作階段開始和結束時間之間評估該頻道的 ConcurrentViews 指標。

單位:計數

有效統計資訊:平均、最大值、最小值 — 設定間隔內並行檢視的平均數、最大數或最小數 (分別)。

ConcurrentStreams

即時串流的頻道數量。如果沒有處於活動狀態的頻道,則此指標沒有資料點。

單位:計數

有效統計資訊:平均、最大值、最小值 — 設定間隔內並行串流的平均數、最大數或最小數 (分別)。

ConcurrentStreams

Health

依據頻道運作狀態篩選 ConcurrentStreams。如果沒有處於活動狀態的頻道,則此指標沒有資料點。

單位:計數

有效統計資訊:平均、最大值、最小值 — 設定間隔內特定 Health 並行串流的平均數、最大數或最小數 (分別)。

IngestAudioBitrate

Channel

(高解析度指標)在您串流時,Amazon IVS 收到的音訊資料量。較高的位元速率會佔用較多可用的網際網路頻寬。

單位:位元/秒

有效統計數字:平均、最大值、最小值 – 設定間隔內擷取音訊位元速率的平均數、最大數或最小數 (分別)

IngestFramerate

Channel

(高解析度指標)在您串流時,Amazon IVS 接收動畫影格的頻率。

單位:影格/秒

有效統計數字:平均、最大值、最小值 – 設定間隔內擷取影格速率的平均數、最大數或最小數 (分別)

IngestVideoBitrate

Channel

(高解析度指標)在您串流時,Amazon IVS 收到的影片資料量。較高的位元速率會佔用較多可用的網際網路頻寬。較高的位元速率可改善影片品質,但最高僅能改善至特定點。

單位:位元/秒

有效統計數字:平均、最大值、最小值 – 設定間隔內擷取影片位元速率的平均數、最大數或最小數 (分別)

KeyframeInterval

Channel

(高解析度指標)影片串流中傳送整個影格的點,而非僅是與上一個影格的差異。

單位:秒

有效統計數字:平均、最大值、最小值 – 設定間隔內關鍵影格間隔的平均數、最大數或最小數 (分別)

LiveDeliveredTime

提供給所有觀眾的影片總實時持續時間。

單位:秒

有效統計資訊:總和

LiveDeliveredTime

Channel

按頻道篩選 LiveDeliveredTime。頻道值是頻道的 resource-id,這是 ARN 的最後一部分。

單位:秒

有效統計資訊:總和

LiveDeliveredTime

Channel, ViewerCountryCode

按頻道和觀眾的國家/地區代碼篩選 LiveDeliveredTime。頻道值是頻道的 resource-id,這是 ARN 的最後一部分。國家/地區值是兩個字元的 ISO 3166-1 國家/地區代碼。可以回答這個問題:我的觀眾從哪裡觀看? 如果無法確定觀眾的國家/地區,則會顯示為 UNKNOWN

單位:秒

有效統計資訊:總和

LiveInputTime

影片串流的即時持續時間。

單位:秒

有效統計資訊:總和

LiveInputTime

Channel

按頻道篩選 LiveInputTime。頻道值是頻道的 resource-id,這是 ARN 的最後一部分。

單位:秒

有效統計資訊:總和

RecordedTime

錄製影片的實時持續時間。

單位:秒

有效統計資訊:總和

RecordedTime

Channel

按頻道篩選 RecordedTime。頻道值是頻道的 resource-id,這是 ARN 的最後一部分。

單位:秒

有效統計資訊:總和