

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

# 使用以下方式监控亚马逊 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 请求数。<br />单位：计数 | 
| `PutMedia.IncomingBytes` | 作为流的一部分接收`PutMedia`的字节数。<br />单位：字节 | 
| `PutMedia.IncomingFragments` | 作为直播一部分收到的完整片段`PutMedia`的数量。<br />单位：计数 | 
| `PutMedia.IncomingFrames` | 作为直播一部分接收`PutMedia`的完整帧数。<br />单位：计数 | 
| `PutMedia.ActiveConnections` | 与服务主机的连接总数。<br />单位：计数 | 
| `PutMedia.ConnectionErrors` | 为直播建立`PutMedia`连接时出现的错误。<br />单位：计数 | 
| `PutMedia.FragmentIngestionLatency` | Amazon Kinesis Video Streams 接收片段的第一个字节和最后一个字节之间的时间差。<br />单位：毫秒 | 
| `PutMedia.FragmentPersistLatency` | 从接收和存档完整片段数据起所花费的时间。<br />单位：计数 | 
| `PutMedia.Latency` | 请求与建立连接时的 HTTP 响应之间的时间差。 InletService <br />单位：计数 | 
| `PutMedia.BufferingAckLatency` | Amazon Kinesis Video Streams 接收新片段的第一个字节与为该片段发送缓冲 ACK 之间的时间差。<br />单位：毫秒 | 
| `PutMedia.ReceivedAckLatency` | Amazon Kinesis Video Streams 收到新片段的最后一个字节与为该片段发送已收到的 ACK 之间的时间差。<br />单位：毫秒 | 
| `PutMedia.PersistedAckLatency` | Amazon Kinesis Video Streams 接收新片段的最后一个字节与为该片段发送持久的 ACK 之间的时间差。<br />单位：毫秒 | 
| `PutMedia.ErrorAckCount` | 在直播中执行操作时 ACKs 发送`PutMedia`的错误数。<br />单位：计数 | 
| `PutMedia.Success` | 成功写入的每个片段为 1；每个失败的片段为 0。该指标的平均值表示发送的完整有效片段数。<br />单位：计数 | 
| `GetMedia.Requests` | 给定直播`GetMedia`的 API 请求数。<br />单位：计数 | 
| `GetMedia.OutgoingBytes` | 作为给定流的 `GetMedia` API 的一部分从服务发送的总字节数。<br />单位：字节 | 
| `GetMedia.OutgoingFragments` | 直播时发送的片段数量。`GetMedia`<br />单位：计数 | 
| `GetMedia.OutgoingFrames` | 在给定直播中发送`GetMedia`的帧数。<br />单位：计数 | 
| `GetMedia.MillisBehindNow` | 当前服务器时间戳和上次发送片段的服务器时间戳之间的时差。<br />单位：毫秒 | 
| `GetMedia.ConnectionErrors` | 未成功建立的连接数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetMediaForFragmentList.OutgoingBytes` | 作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的总字节数。<br />单位：字节 | 
| `GetMediaForFragmentList.OutgoingFragments` | 作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的片段总数。<br />单位：计数 | 
| `GetMediaForFragmentList.OutgoingFrames` | 作为给定流的 `GetMediaForFragmentList` API 的一部分从服务发送的帧总数。<br />单位：计数 | 
| `GetMediaForFragmentList.Requests` | 给定直播`GetMediaForFragmentList`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `ListFragments.Latency` | `ListFragments`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `ListFragments.Requests` | 给定直播`ListFragments`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetHLSStreamingSessionURL.Latency` | `GetHLSStreamingSessionURL`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetHLSStreamingSessionURL.Requests` | 给定直播`GetHLSStreamingSessionURL`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetHLSMasterPlaylist.Latency` | `GetHLSMasterPlaylist`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetHLSMasterPlaylist.Requests` | 给定直播`GetHLSMasterPlaylist`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetHLSMediaPlaylist.Latency` | `GetHLSMediaPlaylist`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetHLSMediaPlaylist.Requests` | 给定直播`GetHLSMediaPlaylist`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetMP4InitFragment.Latency` | `GetMP4InitFragment`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetMP4InitFragment.Requests` | 给定直播`GetMP4InitFragment`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetMP4MediaFragment.Latency` | `GetMP4MediaFragment`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetMP4MediaFragment.Requests` | 给定直播`GetMP4MediaFragment`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetMP4MediaFragment.OutgoingBytes` | 作为给定流的 `GetMP4MediaFragment` API 的一部分从服务发送的总字节数。<br />单位：字节 | 
| `GetTSFragment.Latency` | `GetTSFragment`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetTSFragment.Requests` | 给定直播`GetTSFragment`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetTSFragment.OutgoingBytes` | 作为给定流的 `GetTSFragment` API 的一部分从服务发送的总字节数。<br />单位：字节 | 
| `GetDASHStreamingSessionURL.Latency` | `GetDASHStreamingSessionURL`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetDASHStreamingSessionURL.Requests` | 给定直播`GetDASHStreamingSessionURL`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetDASHManifest.Latency` | `GetDASHManifest`API 的延迟需要给定的直播名称。<br />单位：毫秒 | 
| `GetDASHManifest.Requests` | 给定直播`GetDASHManifest`的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetClip.Latency` |  GetClip API 的延迟需要给定的视频流名称。<br />单位：毫秒 | 
| `GetClip.Requests` | 给定视频流 GetClip 的 API 请求数。<br />单位：计数 | 
| `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)。 <br />单位：计数 | 
| `GetClip.OutgoingBytes` | 作为给定视频流 GetClip API 的一部分从服务发送的总字节数。<br />单位：字节 | 

## 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`，则可能是由于服务无法将数据发送给消费者。如果这种情况持续很长时间，请咨询您的客户服务联系人，看看您的服务是否存在问题。