

# 监控 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 时得到的每分钟 `LiveDeliveredTime` 指标总和为 300 秒。这意味着在 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 权限的亚马逊云科技账户，才能与流运行状况 API 和 CloudWatch 指标进行交互。有关具体步骤，请参阅 [Getting Started with IVS Low-Latency Streaming](getting-started.md)。
+ 你必须创建一个通道然后才能开启流。相关信息请参阅 [IVS Low-Latency Streaming User Guide](what-is.md)：
  + 有关创建通道的说明，请参阅 Getting Started with IVS Low-Latency Streaming **中的 [Create a Channel](getting-started-create-channel.md)。
  + 有关启用流的说明，请参阅 Getting Started with IVS Low-Latency Streaming **中的 [Set Up Streaming Software](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)。

   （您还可通过 [Amazon 管理控制台](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>

使用 Amazon SDK 访问流会话数据是一种高级选项，需要您先下载开发工具包并在应用程序上配置。以下是使用 JavaScript 的 Amazon SDK 的说明。

**先决条件**：要使用以下代码示例，您需要将 Amazon JavaScript SDK 加载到应用程序中。有关详细信息，请参阅 [Amazon SDK for JavaScript 入门](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>

使用 Amazon CLI 访问流会话数据是一种高级选项，需要您先下载 CLI 并在应用程序上配置。有关详细信息，请参阅 [Amazon 命令行界面用户指南](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` 来按“运行状况”筛选流。

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

1. 打开 [Amazon IVS 控制台](https://console.aws.amazon.com/ivs)。

   （您还可通过 [Amazon 管理控制台](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>

使用 Amazon CLI 是一个高级选项，需要先在计算机上下载并配置 CLI。有关详细信息，请参阅 [Amazon 命令行界面用户指南](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)。

按运行状况（例如 `STARVING`）筛选流：

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

### ConcurrentStreams 的 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. 在**浏览**选项卡上，使用左侧未标记的下拉菜单，选择您的“主”区域，即创建通道的区域。有关区域的详细信息，请参阅[全球解决方案，区域控制](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/what-is.html#what-is-aws)。有关支持区域的列表，请参阅[亚马逊云科技一般参考](https://docs.aws.amazon.com/general/latest/gr/ivs.html)中的 *Amazon IVS* 页面。

1. 在**浏览**选项卡的底部，选择 **IVS** 命名空间。

1. 请执行以下操作之一：

   1. 在搜索栏中，输入资源 ID（是 ARN `arn:::ivs:channel/<resource id>` 的一部分）。

      然后选择 **IVS > 按通道**。

   1. 如果 **IVS** 显示为 **Amazon 命名空间**下的一个可选服务，选择该服务。如果您使用 Amazon IVS 并将指标发送给 Amazon CloudWatch，则将会列出 IVS。（如果 **IVS** 未列出，则您没有任何 Amazon IVS 指标。）

      然后根据需要选择*维度*分组；可用维度将在下面的 [CloudWatch 指标](#stream-health-cloudwatch-metrics-low-latency-streaming) 中列出。

1. 选择要添加到图表的指标。可用维度将在下面的 [CloudWatch 指标](#stream-health-cloudwatch-metrics-low-latency-streaming) 中列出。

您还可以从流会话的详细信息页面访问流会话的 CloudWatch 图表，方法是选择 **View in CloudWatch**（在 CloudWatch 中查看）按钮。

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

您也可以使用 Amazon CLI 访问指标。这需要首先在计算机上下载并配置 CLI。有关详细信息，请参阅 [Amazon 命令行界面用户指南](https://docs.aws.amazon.com//cli/latest/userguide/cli-chap-welcome.html)。

然后，使用 Amazon 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 在 **Amazon/IVS** 命名空间中提供了以下指标。


| 指标 | Dimensions | 说明 | 
| --- | --- | --- | 
|  `ConcurrentViews`  | — |  所有实时通道的并发视图计数。*视图*是一个独特的观看会话，它主动下载或播放媒体文件。（有关更详细的定义，请参阅 [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) 的最后一部分。 单位：秒 有效统计数据：总计  | 