

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

# 监控 AWS Elemental MediaTailor 使用亚马逊 CloudWatch 指标
<a name="monitoring-cloudwatch-metrics"></a>

您可以使用监控 AWS Elemental MediaTailor 指标 CloudWatch。 CloudWatch 收集有关服务性能的原始数据，并将这些数据处理为可读的、近乎实时的指标。这些统计数据会保存 15 个月，从而使您能够访问历史信息，并能够更好地了解您的 Web 应用程序或服务的执行情况。此外，可以设置用于监测特定阈值的警报，并在达到相应阈值时发送通知或执行操作。有关更多信息，请参阅[亚马逊 CloudWatch 用户指南](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)。

当你调查陈旧清单时，指标可能很有用。有关更多信息，请参阅 [使用指标诊断陈旧清单](stale-manifest-diagnose.md)。

指标的分组首先依据服务命名空间，然后依据每个命名空间内的各种维度组合。

**使用 CloudWatch 控制台查看指标**

1. 在处打开 CloudWatch 控制台[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择**指标**。

1. 在 “**所有指标” 下**，选择**MediaTailor**命名空间。

1. 选择指标维度以查看指标（例如，**originID**）。

1. 指定要查看的时间段。

**要查看指标，请使用 AWS Command Line Interface (AWS CLI)**
+ 在命令提示符处输入下面的命令：

  ```
  aws cloudwatch list-metrics --namespace "AWS/MediaTailor"
  ```

## AWS Elemental MediaTailor CloudWatch 指标
<a name="metrics"></a>

 AWS Elemental MediaTailor 命名空间包含以下指标。默认情况下，这些指标将发布到您的账户。

### 渠道集成 (CA) 指标
<a name="metrics.channel-assembly"></a>

在下表中，所有指标均可按渠道或渠道输出获得。


| 指标 | 说明 | 
| --- | --- | 
|  4xxErrorCount  | `4xx`错误数。 | 
|  5xxErrorCount  | `5xx`错误数。 | 
|  RequestCount  |  请求的总数。交易数量在很大程度上取决于玩家请求更新清单的频率以及玩家的数量。每个播放器请求计为一个事务。 | 
|  TotalTime  | 应用程序服务器处理请求所用的时间，包括从客户端和网络接收字节以及向客户端和网络写入字节所用的时间。 | 

#### Server-side Ad-insertion (SSAI) 指标
<a name="metrics.server-side-ad-insertion"></a>

下表列出了服务器端广告插入指标。


| 指标 | 说明 | 
| --- | --- | 
|  AdDecisionServer.Ads  | 在您指定的 CloudWatch 时间段内，广告决策服务器 (ADS) 响应中包含的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  AdDecisionServer.Duration  | 在您指定的时间段内从 ADS MediaTailor 收到的所有广告的总 CloudWatch 时长，以毫秒为单位。此持续时间可以长于`Avail.Duration`您指定的持续时间。<br />**维度**：`ConfigurationName` | 
|  AdDecisionServer.Errors  | 在您指定的时间段内从 ADS MediaTailor 收到的非 HTTP 200 状态码响应、空响应和超 CloudWatch 时响应的数量。<br />**维度**：`ConfigurationName` | 
|  AdDecisionServer.FillRate  | 在您指定的时间段内，ADS 响应填充相应的单个广告效用的速率的简单平均值。<br />要获得加权平均值，请计算 `AdDecisionServer.Duration` 占 `Avail.Duration` 的百分比。有关简单和加权平均值的更多信息，请参阅[简单和加权平均值](#metrics-simple-average)。<br />**维度**：`ConfigurationName` | 
|  AdDecisionServer.Latency  | 向 ADS 提出的请求的响应时间（以毫秒为单位） MediaTailor 。<br />**维度**：`ConfigurationName` | 
|  AdDecisionServer.Timeouts  | 在您指定的时间段内向 ADS 发出的超 CloudWatch时请求的数量。<br />**维度**：`ConfigurationName` | 
|  AdNotReady  | ADS 指向在您指定的时间段内，尚未由内部转码器服务转码的广告的次数。<br />此指标值较大可能会导致较低的整体 `Avail.FillRate`。<br />**维度**：`ConfigurationName` | 
|  AdsBilled  | 根据插播量向客户收取 MediaTailor 账单的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  Avail.Duration  | 该时间段内可用的广告的计划总毫秒数。 CloudWatch 计划总量基于原始清单中的广告可用时长。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  Avail.FilledDuration  | 计划在该时间段内填满广告的广告可用时间毫秒数。 MediaTailor CloudWatch <br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  Avail.FillRate  | 该 CloudWatch时间段内单个广告可用量填充 MediaTailor 费率的计划简单平均值。<br />要获得加权平均值，请计算 `Avail.FilledDuration` 占 `Avail.Duration` 的百分比。有关简单和加权平均值的更多信息，请参阅[简单和加权平均值](#metrics-simple-average)。<br /> MediaTailor 可实现的最大 `Avail.FillRate` 受 `AdDecisionServer.FillRate` 的约束。如果 `Avail.FillRate` 较低，则将其与 `AdDecisionServer.FillRate` 进行比较。如果 `AdDecisionServer.FillRate` 较低，您的 ADS 可能没有在效用持续时间内返回足够的广告。<br />**维度**：`ConfigurationName` | 
|  Avail.Impression  | 服务器端报告期间 MediaTailor 触发曝光信标的广告数量。 MediaTailor 无论这些信标最终是否已交付，都会为每个至少具有一个曝光量 URI 的广告发出一个计数。使用此指标作为分母来计算视频完成率 (VCR)（参见）。`Avail.Complete`<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  Avail.Complete  | 服务器端报告期间 MediaTailor 触发完整信标的广告数量。 MediaTailor 无论信标最终是否已交付，都会为每个至少具有一个完整跟踪 URI 的广告发出一个计数。要计算视频完成率 (VCR)，请将总和除`Avail.Complete`以的`Avail.Impression`总和。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  Avail.ObservedDuration  | 观察到的时间段内出现的广告可用总毫秒数。 CloudWatch `Avail.ObservedDuration`在广告利用率结束时发出，基于广告无效期间清单中报告的区段的持续时间。<br />**维度**：`ConfigurationName` | 
|  Avail.ObservedFilledDuration  | 在此时间段内观察到的 MediaTailor 充斥广告的广告可用时间的毫秒数。 CloudWatch <br />**维度**：`ConfigurationName` | 
|  Avail.ObservedFillRate  | 观察到的单个广告 MediaTailor 填充费率的简单平均值在一段 CloudWatch时间内可用。<br />仅在 HLS 清单的第一个标签处发出。`CUE-IN`如果没有`CUE-IN`标签，则 MediaTailor 不发布此指标。<br />**维度**：`ConfigurationName` | 
|  Avail.ObservedSlateDuration  | 观测到的时间段内插入的 slate 的总毫秒数。 CloudWatch <br />**维度**：`ConfigurationName` | 
|  GetManifest.Age  | 清单的总时长（以毫秒为单位）。从来源创建清单到何时 MediaTailor发送个性化清单来衡量。<br />有关衡量清单期限的指标的更多信息，请参阅[使用指标诊断陈旧清单](stale-manifest-diagnose.md)。<br />**维度**：`ConfigurationName` | 
|  GetManifest.Errors  | 在您指定的时间段 MediaTailor 内生成清单 CloudWatch 时收到的错误数。<br />**维度**：`ConfigurationName` | 
|  GetManifest.Latency  | 请求生成清单的 MediaTailor 响应时间（以毫秒为单位）。<br />有关衡量清单期限的指标的更多信息，请参阅[使用指标诊断陈旧清单](stale-manifest-diagnose.md)。<br />**维度**：`ConfigurationName` | 
|  GetManifest.MediaTailorAge  | 清单的存储时间，以毫秒 MediaTailor 为单位。从何时 MediaTailor 收到原始响应到何时 MediaTailor 发送个性化清单来衡量。<br />有关衡量清单期限的指标的更多信息，请参阅[使用指标诊断陈旧清单](stale-manifest-diagnose.md)。<br />**维度**：`ConfigurationName` | 
|  Origin.Age  | 源拥有清单的时间量，以毫秒为单位。从源创建清单到何时 MediaTailor 发送原始请求来衡量。<br />所有`origin.*`指标都是针对直接从源头完成的请求发出的。它们不是为缓存的源响应发出的。<br />有关衡量清单期限的指标的更多信息，请参阅[使用指标诊断陈旧清单](stale-manifest-diagnose.md)。<br />**维度**：`ConfigurationName` | 
|  Origin.Errors  | 在您指定的时间段内从源服务器 MediaTailor 收到的非 HTTP 200 状态码响应和超 CloudWatch 时响应的数量。<br />所有`origin.*`指标都是针对直接从源头完成的请求发出的。它们不是为缓存的源响应发出的。<br />**维度**：`ConfigurationName` | 
|  Origin.ManifestFileSizeBytes  | HLS 和 DASH 的源清单文件大小（以字节为单位）。通常，此指标与一起使用`Origin.ManifestFileSizeTooLarge`。<br />所有`origin.*`指标都是针对直接从源头完成的请求发出的。它们不是为缓存的源响应发出的。<br />**维度**：`ConfigurationName` | 
|  Origin.ManifestFileSizeTooLarge  | 来自源的清单大小大于配置数量的响应数量。通常，此指标与一起使用`Origin.ManifestFileSizeBytes`。<br />所有`origin.*`指标都是针对直接从源头完成的请求发出的。它们不是为缓存的源响应发出的。<br />**维度**：`ConfigurationName` | 
|  Origin.Timeouts  | 在您指定的时间段内向源服务器发出的超 CloudWatch 时请求的数量。<br />所有`origin.*`指标都是针对直接从源头完成的请求发出的。它们不是为缓存的源响应发出的。<br />**维度**：`ConfigurationName` | 
|  Requests  | 所有请求类型每秒的并发事务数。交易数量主要取决于玩家数量以及玩家请求更新清单的频率。每个播放器请求计为一个事务。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.DurationExceeded  | 由于 ADS 返回的广告持续时间大于指定的使用时长而未插入的广告数量。该指标的值过高可能会导致`AdsBilled`和`AdDecisionServer.Ads`指标之间的差异。有关跳过广告的原因的更多信息，请参阅[跳过广告疑难解答](troubleshooting-ad-skipping-overview.md)。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.EarlyCueIn  | 由于时间过早`CUE-IN`，跳过的广告数量很多.<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.ImportError  | 由于导入任务中的错误而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.ImportInProgress  | 由于现有正在进行的导入任务而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.InternalError  | 由于 MediaTailor 内部错误而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.NewCreative  | 由于这是客户首次请求该资产，因此未插入的广告数量无济于事。在资产可以成功转码之前，该指标的较高值可能会暂时导致总体`Avail.FillRate`水平降低。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.NoVariantMatch  | 由于广告和内容之间没有变体匹配而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.PersonalizationThresholdExceeded  | 广告的持续时间超过此配置中的**个性化阈值**设置。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.ProfileNotFound  | 由于找不到转码配置文件而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.TranscodeError  | 由于转码错误而跳过的广告数量。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 
|  SkippedReason.TranscodeInProgress  | 由于广告尚未进行转码而未插入的广告的数量。在资产成功转码之前`Avail.FillRate`，该指标的高值可能会暂时导致总体水平降低。<br />**维度**：+ `ConfigurationName`<br />+ Account-level （无尺寸） | 

**注意**  
对于 HLS Interstitials 会话，由于广告决策的延迟约束性，一些指标的表现会有所不同：  
`Avail.ObservedFilledDuration`匹配，`Avail.FilledDuration`因为 MediaTailor 无法观察到实际的客户端播放行为。
`Avail.ObservedSlateDuration`根据资产列表的回复而不是观察到的播放来报告计划的暂存时长。
以 “观察” 为前缀的指标提供了 HLS Interstials 会话的估计值。

### 函数指标
<a name="metrics.functions"></a>

当您在播放配置中使用[函数时](monetization-functions.html)，会发布以下指标。当在生命周期挂钩上配置函数时，总是会发出这些指标。无需选择加入或登录配置。

**Hook-level 指标 ** — 每个生命周期挂钩执行一个数据点：


| 指标 | 说明 | 
| --- | --- | 
|  PreSessionInitHook.Invocations  | 调用会话前初始化挂钩的次数。<br />**维度**：`ConfigurationName` | 
|  PreSessionInitHook.Errors  | 导致错误的会话前初始化挂钩执行次数。<br />**维度**：`ConfigurationName` | 
|  PreSessionInitHook.Latency  | 会话前初始化挂钩的执行时间（以毫秒为单位）。<br />**维度**：`ConfigurationName` | 
|  PreAdsRequestHook.Invocations  | 广告前请求挂钩被调用的次数。<br />**维度**：`ConfigurationName` | 
|  PreAdsRequestHook.Errors  | 导致错误的广告前请求挂钩执行次数。<br />**维度**：`ConfigurationName` | 
|  PreAdsRequestHook.Latency  | 广告前请求挂钩的执行时间（以毫秒为单位）。<br />**维度**：`ConfigurationName` | 

**Function-level 指标 ** — 每个函数执行一个数据点。这些指标包括其他维度 (`FunctionId`、`FunctionType`、`HookType`)，因此您可以确定哪个特定功能运行缓慢或失败：


| 指标 | 说明 | 
| --- | --- | 
|  Function.Invocations  | 单个函数的执行次数。<br />**维度**：+ `ConfigurationName`<br />+ `ConfigurationName`, `FunctionId`, `FunctionType`, `HookType` | 
|  Function.Errors  | 导致错误的单个函数执行次数。<br />**维度**：+ `ConfigurationName`<br />+ `ConfigurationName`, `FunctionId`, `FunctionType`, `HookType` | 
|  Function.Latency  | 单个函数的执行时间（以毫秒为单位）。<br />**维度**：+ `ConfigurationName`<br />+ `ConfigurationName`, `FunctionId`, `FunctionType`, `HookType` | 

### 简单和加权平均值
<a name="metrics-simple-average"></a>

您可以检索广告对广告请求的响应以及广告 MediaTailor 填充情况的简单平均值 MediaTailor 和加权平均值：
+ `AdDecisionServer.FillRate`和*中提供了*简单的平均值`Avail.FillRate`。这些是该时间段内各个效用的填充率百分比的平均值。简单平均值不考虑单个效用的持续时间之间的任何差异。
+ *加权平均值*是所有效用持续时间总和的填充率百分比。计算方法为 (`AdDecisionServer.Duration`\*100)/`Avail.Duration` 和 (`Avail.FilledDuration`\*100)/`Avail.Duration`。这些平均值反映了每个广告效用持续时间的差异，给予持续时间较长的效用更多的权重。

对于仅包含一个广告效用的时间段，`AdDecisionServer.FillRate` 提供的简单平均值等于 (`AdDecisionServer.Duration`\*100)/`Avail.Duration` 提供的加权平均值。`Avail.FillRate` 提供的简单平均值等于 (`Avail.FilledDuration`\*100)/`Avail.Duration` 提供的加权平均值。

**示例**

假设您指定的时间段具有以下两个广告效用：
+ 第一个广告效用具有 90 秒的持续时间：
  + ADS 对该效用的响应提供了 45 秒的广告（50% 已填充）。
  + MediaTailor 占用 45 秒的可用广告时间（已填满 50%）。
+ 第二个广告效用具有 120 秒的持续时间：
  + ADS 对该效用的响应提供了 120 秒的广告（100% 已填充）。
  + MediaTailor 占用 90 秒的可用广告时间（填充率为 75%）。

各指标如下所示：
+ `Avail.Duration` 为 210，两个广告效用持续时间的总和：90 \+ 120。
+ `AdDecisionServer.Duration` 为 165，两个响应持续时间的总和：45 \+ 120。
+ `Avail.FilledDuration` 为 135，两个已填充持续时间的总和：45 \+ 90。
+ `AdDecisionServer.FillRate` 为 75%，每个效用已填充百分比的平均数：(50% \+ 100%)/2。这是简单平均值。
+ ADS 填充率的加权平均值为 78.57%，是 `AdDecisionServer.Duration` 占 `Avail.Duration` 的百分比：(165\* 100)/210。此计算考虑到了持续时间中的差异。
+ `Avail.FillRate` 为 62.5%，每个效用已填充百分比的平均数：(50% \+ 75%)/2。这是简单平均值。
+  MediaTailor 可用填充率的加权平均值为64.29％，占以下百分比`Avail.Duration`：（135\*100）/210。`Avail.FilledDuration`此计算考虑到了持续时间中的差异。

任何广告利用率最高`Avail.FillRate` MediaTailor 可达到 100%。ADS 可能会返回与效用中可用的广告时间相比更多的广告时间，但 MediaTailor 只能填充可用的时间。

## AWS Elemental MediaTailor CloudWatch 维度
<a name="dimensions"></a>

您可以使用以下维度筛选 AWS Elemental MediaTailor 数据。


| 维度 | 说明 | 
| --- | --- | 
| `ConfigurationName` | 指示指标所属的配置。适用于所有指标。 | 
| `FunctionId` | 函数的标识符。仅适用于`Function.*`指标。 | 
| `FunctionType` | 函数的类型：`CUSTOM_OUTPUT`、`HTTP_REQUEST``SEQUENTIAL_EXECUTOR`、或`CONCURRENT_EXECUTOR`。仅适用于`Function.*`指标。 | 
| `HookType` | 触发该函数的生命周期挂钩：`PRE_SESSION_INITIALIZATION`或`PRE_ADS_REQUEST`。仅适用于`Function.*`指标。 | 