

# 監控 Amazon IVS 低延遲串流功能
<a name="stream-health"></a>

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

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

若為指定為高解析度的指標，第一個資料點會在串流開始後幾秒鐘出現。建議您在提出指標要求時，指定 5 秒的期間。(請參閱《Amazon CloudWatch 使用者指南》中的[解析度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Resolution_definition)。) 若為其他指標，資料會在其所參照之時間戳記的 1 分鐘內發出。

高解析度指標會隨著時間累計。隨著指標的時間變長，解析度會有效降低。排程如下：
+ 1 秒的指標可供使用 3 小時。
+ 60 秒的指標可供使用 15 天。
+ 5 分鐘的指標可供使用 63 天。
+ 1 小時的指標可供使用 455 天 (15 個月)。

如需有關資料保留的最新資訊，請在 [Amazon CloudWatch 常見問答集](https://aws.amazon.com/cloudwatch/faqs/)中搜尋「保留期間」。

## 必要條件
<a name="stream-health-prerequisites"></a>
+ 您必須擁有具有足夠 IAM 許可的 AWS 帳戶，才能與串流運作狀態 API 和 CloudWatch 指標連接。如需了解特定步驟，請參閱[開始使用 IVS 低延遲串流](getting-started.md)。
+ 您必須建立頻道並啟動串流。相關資訊請參閱 [IVS 低延遲串流使用者指南](what-is.md)：
  + 如需有關建立頻道的說明，請參閱*開始使用 IVS 低延遲串流*中的[建立頻道](getting-started-create-channel.md)。
  + 如需有關啟動串流的說明，請參閱*開始使用 IVS 低延遲串流*中的[設定串流軟體](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/getting-started-set-up-streaming.html)。
  + 如需編碼器組態的詳細資訊，請參閱《[Amazon IVS 串流組態](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/streaming-config.html)》。

## 存取串流工作階段資料
<a name="stream-health-session-data"></a>

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

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

### 主控台說明
<a name="stream-health-session-data-console"></a>

1. 開啟 [Amazon IVS 主控台](https://console.aws.amazon.com/ivs)。

   (您也可以透過 [AWS 管理主控台](https://console.aws.amazon.com/)來存取 Amazon IVS 主控台。)

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

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

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

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

或者，如果一或多個頻道已上線：

1. [開啟 Amazon IVS 主控台](https://console.aws.amazon.com/ivs)。

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

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

### AWS SDK 說明
<a name="stream-health-session-data-aws-sdk"></a>

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

**必要條件**：若要使用以下程式碼範例，您需要將 AWS JavaScript SDK 載入應用程式中。如需詳細資訊，請參閱 [適用於 JavaScript 的 AWS SDK 入門](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started.html)。

```
// 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 說明
<a name="stream-health-session-data-cli"></a>

使用 AWS CLI 存取串流工作階段資料是進階選項，需要您先在機器上下載並設定 CLI。如需詳細資訊，請參閱《[AWS 命令列介面使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)》。

1. 列出串流工作階段：

   ```
   aws ivs list-stream-sessions --channel-arn <arn>
   ```

1. 使用特定串流的 `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"
        }
    }
}
```

## 依據運作狀態篩選串流
<a name="stream-health-filter-streams"></a>

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

### 主控台說明
<a name="stream-health-filter-streams-console"></a>

1. 開啟 [Amazon IVS 主控台](https://console.aws.amazon.com/ivs)。

   (您也可以透過 [AWS 管理主控台](https://console.aws.amazon.com/)來存取 Amazon IVS 主控台。)

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

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

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

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

### CLI 說明
<a name="stream-health-filter-streams-cli"></a>

使用 AWS CLI 是進階選項，需要您先在機器上下載並設定 CLI。如需詳細資訊，請參閱《[AWS 命令列界面使用者指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)》。

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

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

### 並行串流的 CloudWatch 運作狀態維度
<a name="stream-health-filter-streams-cloudwatch"></a>

您可以依據特定的 `Health` 篩選 `ConcurrentStreams`。請參閱 [CloudWatch 指標：IVS 低延遲串流](#stream-health-cloudwatch-metrics-low-latency-streaming)。

## 存取 CloudWatch 指標
<a name="stream-health-cloudwatch-metrics"></a>

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

請注意，CloudWatch 指標會隨著時間累計。隨著指標的時間變長，解析度會有效降低。排程如下：
+ 1 秒的指標可供使用 3 小時。
+ 60 秒的指標可供使用 15 天。
+ 5 分鐘的指標可供使用 63 天。
+ 1 小時的指標可供使用 455 天 (15 個月)。

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

### CloudWatch 主控台說明
<a name="stream-health-cloudwatch-metrics-console"></a>

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

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

1. 在 **Browse** (瀏覽)索引標籤上，使用左側無標籤的下拉式清單，選取建立頻道的「主要」區域。有關區域的更多資訊，請參閱[全球解決方案、區域控制](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/what-is.html#what-is-aws)。如需支援的區域清單，請參閱 *AWS 一般參考*中的 [Amazon IVS 頁面](https://docs.aws.amazon.com/general/latest/gr/ivs.html)。

1. 在 **Browse** (瀏覽)標籤底部，選取 **IVS** 命名空間。

1. 執行以下任意一項：

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

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

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

      然後根據需要選擇*維度*分組；可用的維度會列在下方的 [CloudWatch 指標](#stream-health-cloudwatch-metrics-low-latency-streaming)。

1. 選擇要新增到圖表的指標。可用的指標列在 [CloudWatch 的指標](#stream-health-cloudwatch-metrics-low-latency-streaming)。

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

### CLI 說明
<a name="stream-health-cloudwatch-metrics-cli"></a>

您也可以使用 AWS CLI 存取指標。這需要在您的機器上先下載並設定 CLI。如需詳細資訊，請參閱 [AWS 命令列界面使用者指南](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-welcome.html)。

然後，使用 AWS CLI 存取 Amazon IVS 低延遲串流功能 指標：
+ 在命令提示中，執行：

  ```
  aws cloudwatch list-metrics --namespace AWS/IVS
  ```

如需詳細資訊，請參閱 *Amazon CloudWatch 使用者指南*中的[使用 Amazon CloudWatch 指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

## CloudWatch 指標：IVS 低延遲串流
<a name="stream-health-cloudwatch-metrics-low-latency-streaming"></a>

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


| 指標 | 維度 | Description | 
| --- | --- | --- | 
|  `ConcurrentViews`  | — |  您所有即時頻道的並行檢視計數。*view* 是正在主動下載或播放媒體檔案的唯一檢視工作階段。(如需更詳細的定義，請參閱[IVS 詞彙表](ivs-glossary.md)。) 如果頻道為活動狀態但彙總中沒有檢視，則此指標的值為 0。如果沒有處於活動狀態的頻道，則指標沒有資料點。 單位：計數 有效統計資訊：平均、最大值、最小值 — 設定間隔內並行檢視的平均數、最大數或最小數 (分別)。  | 
|  `ConcurrentViews`  | `Channel` |  按頻道 ARN 篩選 `ConcurrentViews`。如果頻道處於活動狀態但沒有檢視，則此指標的值為 0。如果頻道處於非活動狀態，則指標沒有資料點。 此指標為頻道提供資料，而非串流。若要查看指定頻道上特定串流工作階段的並行檢視，請在串流工作階段開始和結束時間之間評估該頻道的 `ConcurrentViews` 指標。 單位：計數 有效統計資訊：平均、最大值、最小值 — 設定間隔內並行檢視的平均數、最大數或最小數 (分別)。  | 
|  `ConcurrentStreams`  | — |  即時串流的頻道數量。如果沒有處於活動狀態的頻道，則此指標沒有資料點。 單位：計數 有效統計資訊：平均、最大值、最小值 — 設定間隔內並行串流的平均數、最大數或最小數 (分別)。  | 
|  `ConcurrentStreams`  | `Health` |  依據頻道運作狀態篩選 `ConcurrentStreams`。如果沒有處於活動狀態的頻道，則此指標沒有資料點。 單位：計數 有效統計資訊：平均、最大值、最小值 — 設定間隔內特定 `Health` 並行串流的平均數、最大數或最小數 (分別)。  | 
|  `IngestAudioBitrate`  | `Channel` | **(高解析度指標)**在您串流時，Amazon IVS 收到的音訊資料量。較高的位元速率會佔用較多可用的網際網路頻寬。 單位：位元/秒  有效統計數字：平均、最大值、最小值 – 設定間隔內擷取音訊位元速率的平均數、最大數或最小數 (分別)  | 
|  `IngestAudioBitrate`  | `Channel, Track` | **(高解析度指標)**在您串流時，Amazon IVS 收到的音訊資料量。較高的位元速率會佔用較多可用的網際網路頻寬。 單位：位元/秒  有效統計數字：平均、最大值、最小值 – 設定間隔內擷取音訊位元速率的平均數、最大數或最小數 (分別)  | 
|  `IngestBitrate`  | — | **(高解析度指標)** Amazon IVS 在您串流時接收的視訊、音訊及中繼資料 (在所有軌道中加總) 數量。較高的位元速率會佔用較多可用的網際網路頻寬。 單位：位元/秒   平均值、最大值、最小值 — 設定間隔內擷取位元速率的平均數、最大數或最小數 (分別)  | 
|  `IngestBitrate`  | `Channel` | **(高解析度指標)** Amazon IVS 在您串流時接收的視訊、音訊及中繼資料 (在所有軌道中加總) 數量。較高的位元速率會佔用較多可用的網際網路頻寬。 單位：位元/秒  有效統計資料：平均值、最大值、最小值──設定間隔內擷取視訊位元速率的平均值、最大值或最小值 (個別)  | 
|  `IngestFramerate`  | — | **(高解析度指標)** 在您串流時，Amazon IVS 接收視訊影格的頻率。 單位：個/秒 有效統計數字：平均、最大值、最小值 – 設定間隔內擷取影格速率的平均數、最大數或最小數 (分別)  | 
|  `IngestFramerate`  | `Channel` | **(高解析度指標)** 在您串流時，Amazon IVS 接收視訊影格的頻率。 單位：個/秒 有效統計數字：平均、最大值、最小值 – 設定間隔內擷取影格速率的平均數、最大數或最小數 (分別)  | 
|  `IngestFramerate`  | `Channel, Track` | **(高解析度指標)** 在您串流時，Amazon IVS 接收視訊影格的頻率。 單位：個/秒 有效統計數字：平均、最大值、最小值 – 設定間隔內擷取影格速率的平均數、最大數或最小數 (分別)  | 
|  `IngestVideoBitrate`  | `Channel`  | **(高解析度指標)**在您串流時，Amazon IVS 收到的影片資料量。較高的位元速率會佔用較多可用的網際網路頻寬。較高的位元速率可改善影片品質，但最高僅能改善至特定點。 單位：位元/秒 有效統計數字：平均、最大值、最小值 – 設定間隔內擷取影片位元速率的平均數、最大數或最小數 (分別)  | 
|  `IngestVideoBitrate`  | `Channel, Track`  | **(高解析度指標)**在您串流時，Amazon IVS 收到的影片資料量。較高的位元速率會佔用較多可用的網際網路頻寬。較高的位元速率可改善影片品質，但最高僅能改善至特定點。 單位：位元/秒 有效統計數字：平均、最大值、最小值 – 設定間隔內擷取影片位元速率的平均數、最大數或最小數 (分別)  | 
|  `KeyframeInterval`  | `Channel` | **(高解析度指標)**影片串流中傳送整個影格的點，而非僅是與上一個影格的差異。 單位：秒 有效統計數字：平均、最大值、最小值 – 設定間隔內關鍵影格間隔的平均數、最大數或最小數 (分別)   | 
|  `KeyframeInterval`  | `Channel, Track` | **(高解析度指標)**影片串流中傳送整個影格的點，而非僅是與上一個影格的差異。 單位：秒 有效統計數字：平均、最大值、最小值 – 設定間隔內關鍵影格間隔的平均數、最大數或最小數 (分別)   | 
|  `LiveDeliveredTime`  | — | 提供給所有觀眾的影片總實時持續時間。 單位：秒 有效統計資訊：總和  | 
|  `LiveDeliveredTime`  | `Channel` | 按頻道篩選 `LiveDeliveredTime`。頻道值是頻道的 `resource-id`，這是 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 的最後一部分。 單位：秒 有效統計資訊：總和  | 
|  `LiveDeliveredTime`  | `Channel`, `ViewerCountryCode`  | 按頻道和觀眾的國家/地區代碼篩選 `LiveDeliveredTime`。頻道值是頻道的 `resource-id`，這是 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 的最後一部分。國家/地區值是兩個字元的 ISO 3166-1 國家/地區代碼。可以回答這個問題：我的觀眾從哪裡觀看？ 如果無法確定觀眾的國家/地區，則會顯示為 `UNKNOWN`。 單位：秒 有效統計資訊：總和  | 
|  `LiveInputTime`  | — | 影片串流的即時持續時間。 單位：秒 有效統計資訊：總和  | 
|  `LiveInputTime`  | `Channel` | 按頻道篩選 `LiveInputTime`。頻道值是頻道的 `resource-id`，這是 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 的最後一部分。 單位：秒 有效統計資訊：總和  | 
|  `RecordedTime`  | — | 錄製影片的實時持續時間。 單位：秒 有效統計資訊：總和  | 
|  `RecordedTime`  | `Channel` | 按頻道篩選 `RecordedTime`。頻道值是頻道的 `resource-id`，這是 [ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html) 的最後一部分。 單位：秒 有效統計資訊：總和  | 