

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用以下方式监控亚马逊 Kinesis Video Streams 指标 CloudWatch
<a name="monitoring-cloudwatch"></a>

您可以使用亚马逊监控 Kinesis 视频流 CloudWatch，亚马逊会收集来自亚马逊 Kinesis Video Streams 的原始数据，并将其处理为可读的、近乎实时的指标。这些统计数据记录的时间为 15 个月，因此您可以访问历史信息并更好地了解您的 Web 应用程序或服务的性能。

在[亚马逊 Kinesis Video Stream](https://console.aws.amazon.com//kinesisvideo/home/) s 控制台中，您可以通过两种方式 CloudWatch 查看亚马逊 Kinesis 视频流的指标：
+ 在 “**控制面板**” 页面中，在 “**当前区域的账户级指标**” 部分中选择 “**视频流**” 选项卡。
+ 在视频流的详细信息页面中，选择 **Monitoring (监控)** 选项卡。

亚马逊 Kinesis Video Streams 提供以下指标：


| 指标 | 说明 | 
| --- | --- | 
| ArchivedFragmentsConsumed.Media | 所有人消耗的片段媒体配额点数 APIs。有关配额积分概念的解释，请参阅[片段元数据和片段媒体配额](limits.md#fragment_based_throttling)。单位：计数 | 
| ArchivedFragmentsConsumed.Metadata | 全部消耗的片段元数据配额点的数量 APIs。有关配额积分概念的解释，请参阅[片段元数据和片段媒体配额](limits.md#fragment_based_throttling)。单位：计数 | 
|  `PutMedia.Requests` |  给定直播`PutMedia`的 API 请求数。 单位：计数  | 
|  `PutMedia.IncomingBytes` |  作为流的一部分接收`PutMedia`的字节数。 单位：字节  | 
|  `PutMedia.IncomingFragments` |  作为直播一部分收到的完整片段`PutMedia`的数量。 单位：计数  | 
|  `PutMedia.IncomingFrames` |  作为直播一部分接收`PutMedia`的完整帧数。 单位：计数  | 
|  `PutMedia.ActiveConnections` |  与服务主机的连接总数。 单位：计数  | 
|  `PutMedia.ConnectionErrors` |  为直播建立`PutMedia`连接时出现的错误。 单位：计数  | 
|  `PutMedia.FragmentIngestionLatency` |  Amazon Kinesis Video Streams 接收片段的第一个字节和最后一个字节之间的时间差。 单位：毫秒  | 
|  `PutMedia.FragmentPersistLatency` |  从接收和存档完整片段数据起所花费的时间。 单位：计数  | 
|  `PutMedia.Latency` |  请求与建立连接时的 HTTP 响应之间的时间差。 InletService  单位：计数  | 
|  `PutMedia.BufferingAckLatency` |  Amazon Kinesis Video Streams 接收新片段的第一个字节与为该片段发送缓冲 ACK 之间的时间差。 单位：毫秒  | 
|  `PutMedia.ReceivedAckLatency` |  Amazon Kinesis Video Streams 收到新片段的最后一个字节与为该片段发送已收到的 ACK 之间的时间差。 单位：毫秒  | 
|  `PutMedia.PersistedAckLatency` |  Amazon Kinesis Video Streams 接收新片段的最后一个字节与为该片段发送持久的 ACK 之间的时间差。 单位：毫秒  | 
|  `PutMedia.ErrorAckCount` |  在直播中执行操作时 ACKs 发送`PutMedia`的错误数。 单位：计数  | 
|  `PutMedia.Success` |  成功写入的每个片段为 1；每个失败的片段为 0。该指标的平均值表示发送的完整有效片段数。 单位：计数  | 
|  `GetMedia.Requests` |  给定直播`GetMedia`的 API 请求数。 单位：计数  | 
|  `GetMedia.OutgoingBytes` |  作为给定流的 `GetMedia` API 的一部分从服务发送的总字节数。 单位：字节  | 
|  `GetMedia.OutgoingFragments` |  直播时发送的片段数量。`GetMedia` 单位：计数  | 
|  `GetMedia.OutgoingFrames` |  在给定直播中发送`GetMedia`的帧数。 单位：计数  | 
|  `GetMedia.MillisBehindNow` |  当前服务器时间戳和上次发送片段的服务器时间戳之间的时差。 单位：毫秒  | 
|  `GetMedia.ConnectionErrors` |  未成功建立的连接数。 单位：计数  | 
|  `GetMedia.Success` |  每个成功发送的片段为 1；每个失败的片段为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetMediaForFragmentList.OutgoingBytes` |  作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的总字节数。 单位：字节  | 
|  `GetMediaForFragmentList.OutgoingFragments` |  作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的片段总数。 单位：计数  | 
|  `GetMediaForFragmentList.OutgoingFrames` |  作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的帧总数。 单位：计数  | 
|  `GetMediaForFragmentList.Requests` |  给定直播`GetMediaForFragmentList`的 API 请求数。 单位：计数  | 
|  `GetMediaForFragmentList.Success` |  每个成功发送的片段为 1；每个失败的片段为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `ListFragments.Latency` |  `ListFragments`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `ListFragments.Requests` |  给定直播`ListFragments`的 API 请求数。 单位：计数  | 
|  `ListFragments.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetHLSStreamingSessionURL.Latency` |  `GetHLSStreamingSessionURL`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetHLSStreamingSessionURL.Requests` |  给定直播`GetHLSStreamingSessionURL`的 API 请求数。 单位：计数  | 
|  `GetHLSStreamingSessionURL.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetHLSMasterPlaylist.Latency` |  `GetHLSMasterPlaylist`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetHLSMasterPlaylist.Requests` |  给定直播`GetHLSMasterPlaylist`的 API 请求数。 单位：计数  | 
|  `GetHLSMasterPlaylist.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetHLSMediaPlaylist.Latency` |  `GetHLSMediaPlaylist`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetHLSMediaPlaylist.Requests` |  给定直播`GetHLSMediaPlaylist`的 API 请求数。 单位：计数  | 
|  `GetHLSMediaPlaylist.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetMP4InitFragment.Latency` |  `GetMP4InitFragment`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetMP4InitFragment.Requests` |  给定直播`GetMP4InitFragment`的 API 请求数。 单位：计数  | 
|  `GetMP4InitFragment.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetMP4MediaFragment.Latency` |  `GetMP4MediaFragment`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetMP4MediaFragment.Requests` |  给定直播`GetMP4MediaFragment`的 API 请求数。 单位：计数  | 
|  `GetMP4MediaFragment.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetMP4MediaFragment.OutgoingBytes` |  作为给定流的 `GetMP4MediaFragment` API 的一部分从服务发送的总字节数。 单位：字节  | 
|  `GetTSFragment.Latency` |  `GetTSFragment`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetTSFragment.Requests` |  给定直播`GetTSFragment`的 API 请求数。 单位：计数  | 
|  `GetTSFragment.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetTSFragment.OutgoingBytes` |  作为给定流的 `GetTSFragment` API 的一部分从服务发送的总字节数。 单位：字节  | 
|  `GetDASHStreamingSessionURL.Latency` |  `GetDASHStreamingSessionURL`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetDASHStreamingSessionURL.Requests` |  给定直播`GetDASHStreamingSessionURL`的 API 请求数。 单位：计数  | 
|  `GetDASHStreamingSessionURL.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetDASHManifest.Latency` |  `GetDASHManifest`API 的延迟需要给定的直播名称。 单位：毫秒  | 
|  `GetDASHManifest.Requests` |  给定直播`GetDASHManifest`的 API 请求数。 单位：计数  | 
|  `GetDASHManifest.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。  单位：计数  | 
|  `GetClip.Latency` |   GetClip API 的延迟需要给定的视频流名称。 单位：毫秒  | 
|  `GetClip.Requests` |  给定视频流 GetClip 的 API 请求数。 单位：计数  | 
|  `GetClip.Success` |  每个成功的请求为 1；每个失败的请求为 0。平均值表示成功率。  故障包含 400（用户）错误和 500（系统）错误。有关启用请求和响应摘要（包括请求）的更多信息 IDs，请参阅 AWS [请求/响应摘要记录](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-logging.html#sdk-net-logging-request-response)。 单位：计数  | 
|  `GetClip.OutgoingBytes` |  作为给定视频流 GetClip API 的一部分从服务发送的总字节数。 单位：字节  | 

## CloudWatch 指标指导
<a name="monitoring-cloudwatch-guidance"></a>

CloudWatch 指标可以帮助找到以下问题的答案：

**Topics**
+ [数据是否会到达亚马逊 Kinesis Video Streams 服务？](#monitoring-cloudwatch-guidance-incoming)
+ [为什么 Amazon Kinesis Video Streams 服务无法成功提取数据？](#monitoring-cloudwatch-guidance-errors)
+ [为什么从 Amazon Kinesis Video Streams 服务读取数据的速度不能与从制作者发送的数据的速率相同？](#monitoring-cloudwatch-guidance-rate)
+ [为什么控制台中没有视频，或者为什么视频播放出现延迟？](#monitoring-cloudwatch-guidance-novideo)
+ [什么是实时数据读取延迟，以及为何客户端会滞后于流头？](#monitoring-cloudwatch-guidance-delay)
+ [客户端是否从 Kinesis 视频流中读取数据，读取速率是多少？](#monitoring-cloudwatch-guidance-isread)
+ [为什么客户端无法从 Kinesis 视频流中读取数据？](#monitoring-cloudwatch-guidance-noread)

### 数据是否会到达亚马逊 Kinesis Video Streams 服务？
<a name="monitoring-cloudwatch-guidance-incoming"></a>

**相关指标：**
+ `PutMedia.IncomingBytes`
+ `PutMedia.IncomingFragments`
+ `PutMedia.IncomingFrames`

**操作项：**
+ 如果这些指标有所下降，请检查您的应用程序是否仍在向服务发送数据。
+ 检查网络带宽。如果您的网络带宽不足，可能会降低服务接收数据的速率。

### 为什么 Amazon Kinesis Video Streams 服务无法成功提取数据？
<a name="monitoring-cloudwatch-guidance-errors"></a>

**相关指标：**
+ `PutMedia.Requests`
+ `PutMedia.ConnectionErrors`
+ `PutMedia.Success`
+ `PutMedia.ErrorAckCount`

**操作项：**
+ 如果增加了`PutMedia.ConnectionErrors`，请查看生产者客户端收到的 HTTP 响应和错误代码，以了解在建立连接时发生了哪些错误。
+ 如果出现下降`PutMedia.Success`或增加`PutMedia.ErrorAckCount`，请查看服务发送的 ack 响应中的 ack 错误代码，以了解数据摄取失败的原因。有关更多信息，请参阅 [AckErrorCode.Values。](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)

### 为什么从 Amazon Kinesis Video Streams 服务读取数据的速度不能与从制作者发送的数据的速率相同？
<a name="monitoring-cloudwatch-guidance-rate"></a>

**相关指标：**
+ `PutMedia.FragmentIngestionLatency`
+ `PutMedia.IncomingBytes`

**操作项：**
+ 如果这些指标有所下降，请检查您的连接的网络带宽。低带宽连接可能导致数据到达服务的速率较低。

### 为什么控制台中没有视频，或者为什么视频播放出现延迟？
<a name="monitoring-cloudwatch-guidance-novideo"></a>

**相关指标：**
+ `PutMedia.FragmentIngestionLatency`
+ `PutMedia.FragmentPersistLatency`
+ `PutMedia.Success`
+ `ListFragments.Latency`
+ `PutMedia.IncomingFragments`

**操作项：**
+ 如果网络带宽增加`PutMedia.FragmentIngestionLatency`或减少`PutMedia.IncomingFragments`，请检查网络带宽以及数据是否仍在发送中。
+ 如果有漏洞`PutMedia.Success`，请检查ack错误代码。有关更多信息，请参阅 [AckErrorCode.Values。](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)
+ 如果`PutMedia.FragmentPersistLatency`或增加`ListFragments.Latency`，则很可能遇到了服务问题。如果这种情况持续很长时间，请咨询您的客户服务联系人，看看您的服务是否存在问题。

### 什么是实时数据读取延迟，以及为何客户端会滞后于流头？
<a name="monitoring-cloudwatch-guidance-delay"></a>

**相关指标：**
+ `GetMedia.MillisBehindNow`
+ `GetMedia.ConnectionErrors`
+ `GetMedia.Success`

**操作项：**
+ 如果流量增加`GetMedia.ConnectionErrors`，则由于频繁尝试重新连接到直播，消费者可能会在阅读直播方面落后。查看为`GetMedia`请求返回 response/error 的 HTTP 代码。
+ 如果流量下降`GetMedia.Success`，则可能是由于服务无法将数据发送给消费者，这将导致连接中断，并导致消费者重新连接，从而导致消费者落后于直播的头部。
+ 如果带宽有所增加`GetMedia.MillisBehindNow`，请查看您的带宽限制，以查看是否因为带宽较低而导致数据接收速度较慢。

### 客户端是否从 Kinesis 视频流中读取数据，读取速率是多少？
<a name="monitoring-cloudwatch-guidance-isread"></a>

**相关指标：**
+ `GetMedia.OutgoingBytes`
+ `GetMedia.OutgoingFragments`
+ `GetMedia.OutgoingFrames`
+ `GetMediaForFragmentList.OutgoingBytes`
+ `GetMediaForFragmentList.OutgoingFragments`
+ `GetMediaForFragmentList.OutgoingFrames`

**操作项：**
+ 这些指标表示读取实时和存档数据的速率。

### 为什么客户端无法从 Kinesis 视频流中读取数据？
<a name="monitoring-cloudwatch-guidance-noread"></a>

**相关指标：**
+ `GetMedia.ConnectionErrors`
+ `GetMedia.Success`
+ `GetMediaForFragmentList.Success`
+ `PutMedia.IncomingBytes`

**操作项：**
+ 如果增加了`GetMedia.ConnectionErrors`，请查看`GetMedia`请求返回的 HTTP 响应和错误代码。有关更多信息，请参阅 [AckErrorCode.Values。](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/kinesisvideo/model/AckErrorCode.Values.html)
+ 如果您正在尝试读取最新或实时数据，`PutMedia.IncomingBytes`请检查是否有数据进入流中，以便服务发送给消费者。
+ 如果出现下降`GetMedia.Success`或`GetMediaForFragmentList.Success`，则可能是由于服务无法将数据发送给消费者。如果这种情况持续很长时间，请咨询您的客户服务联系人，看看您的服务是否存在问题。