

# 可以向 CloudWatch 发送的自定义指标和扩展指标
<a name="CloudWatch-RUM-custom-and-extended-metrics"></a>

默认情况下，RUM 应用程序监视器会向 CloudWatch 发送指标。这些默认指标和维度列在[可以使用 CloudWatch RUM 收集的 CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-RUM-metrics.html)中。

您还可以设置应用程序监控，以导出指标。应用程序监控可以发送扩展指标、自定义指标或两者。并将其发送到 CloudWatch。
+ **自定义指标**：自定义指标是由您定义的指标。有了自定义指标，您可以使用任何指标名称和命名空间。要派生指标，您可以使用任何自定义事件、内置事件、自定义属性或默认属性。

  您可以将自定义指标发送到 CloudWatch。
+ **扩展指标**：您还可以将任何默认的 CloudWatch RUM 指标发送到具有其他维度的 CloudWatch。这样，这些指标可以为您提供更精细的视图。

**Topics**
+ [自定义指标](#CloudWatch-RUM-custom-metrics)
+ [扩展指标](#CloudWatch-RUM-vended-metrics)

## 自定义指标
<a name="CloudWatch-RUM-custom-metrics"></a>

要发送自定义指标，您必须使用 AWS API 或 AWS CLI 而不是控制台。有关使用 AWS API 的信息，请参阅 [PutRumMetricsDestination](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html) 和 [BatchCreateRumMetricDefinitions](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_BatchCreateRumMetricDefinitions.html)。

一个目标可以包含的扩展指标定义和自定义指标定义的最大数量是 2000。对于您发送到每个目标的每个扩展指标，维度名称和维度值的每个组合都计入此限制。您无需为从 CloudWatch RUM 的任何类型的事件或属性派生的自定义指标付费。

以下示例演示了如何创建从自定义事件派生的自定义指标。以下是使用的自定义事件示例：

```
cwr('recordEvent', {
    type: 'my_custom_event', 
    data: {
        location: 'IAD', 
        current_url: 'amazonaws.com', 
        user_interaction: {
            interaction_1 : "click",
            interaction_2 : "scroll"
        }, 
        visit_count:10
    }
})
```

根据此自定义事件，您可以创建一个自定义指标，用于计算 Chrome 浏览器访问该 `amazonaws.com` URL 的次数。以下定义在 `RUM/CustomMetrics/PageVisits` 命名空间中创建一个在您的账户中名为 `AmazonVisitsCount` 的指标。

```
{
    "AppMonitorName":"customer-appMonitor-name",
    "Destination":"CloudWatch",
    "MetricDefinitions":[
        {
            "Name":"AmazonVisitsCount",
            "Namespace":"PageVisit",
            "ValueKey":"event_details.visit_count",
            "UnitLabel":"Count",
            "DimensionKeys":{
                "event_details.current_url": "URL"
            },
            "EventPattern":"{\"metadata\":{\"browserName\":[\"Chrome\"]},\"event_type\":[\"my_custom_event\"],\"event_details\": {\"current_url\": [\"amazonaws.com\"]}}" 
        }
    ]
}
```

## 扩展指标
<a name="CloudWatch-RUM-vended-metrics"></a>

如果您设置了扩展指标，便可将任何默认的 CloudWatch RUM 指标发送到具有其他维度的 CloudWatch，以便这些指标提供更精细的视图。

有关默认 CloudWatch RUM 指标的更多信息，请参阅 [您可以使用 CloudWatch RUM 收集的 CloudWatch 指标](CloudWatch-RUM-metrics.md)。

一个目标可以包含的扩展指标定义和自定义指标定义的最大数量是 2000。对于您发送到每个目标的每个扩展指标或自定义指标，维度名称和维度值的每个组合都算作此限制的扩展指标。

向 CloudWatch 发送扩展指标时，您可以使用 CloudWatch RUM 控制台为它们创建 CloudWatch 告警。

您无需为针对 CloudWatch RUM 的默认指标创建的扩展指标付费。

### Web 应用程序扩展指标
<a name="CloudWatch-RUM-web-extended-metrics"></a>

Web 应用程序扩展指标支持以下维度：
+ `BrowserName`

  维度值示例：`Chrome`、`Firefox`、`Chrome Headless`
+ `CountryCode` 使用 ISO-3166 格式，带有两个字母的代码。

  维度值示例：`US`、`JP`、`DE`
+ `DeviceType`

  维度值示例：`desktop`、`mobile`、`tablet`、`embedded`
+ `FileType`

  维度值示例：`Image`、`Stylesheet`
+ `OSName`

  维度值示例：`Linux`、`Windows`、`iOS`、`Android`
+ `PageId`

### 移动应用程序扩展指标
<a name="CloudWatch-RUM-mobile-extended-metrics"></a>

移动应用程序指标支持以下维度：
+ `ScreenName`
  + 来自应用程序屏幕名称属性 `attributes.screen.name` 的值
  + 示例值：HomeScreen、SettingsView、ProfilePage
+ `DeviceModel`
  + 来自设备型号属性 `resource.attributes.device.model.name` 的值
  + 示例值：iPhone14,3、SM-G998B
+ `OSVersion`
  + 来自操作系统版本属性 `resource.attributes.os.version` 的值
  + 示例值：16.0、13.0

**注意**  
移动应用程序目前支持的默认指标：`ScreenLoadTime`、`ScreenLoadCount`、`NetworkLatency`、`Http4xxCount`、`Http5xxCount`、`CrashCount`、`ANRCount`、`AppHangCount`、`ColdLaunchTime`、`WarmLaunchTime`、`SessionCount`、`SpanPayloadSize` 和 `LogPayloadSize`。

### 使用控制台设置扩展指标
<a name="CloudWatch-RUM-extended-metrics-console"></a>

要使用控制台向 CloudWatch 发送扩展指标，请执行以下步骤。

有关使用 AWS API 将扩展指标发送到 CloudWatch 的信息，请参阅 [PutRumMetricsDestination](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_PutRumMetricsDestination.html) 和 [BatchCreateRumMetricDefinitions](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_BatchCreateRumMetricDefinitions.html)。

**要使用控制台设置应用程序监视器并向 CloudWatch 发送 RUM 扩展指标**

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

1. 在导航窗格中，选择 **Application Signals**、**RUM**。

1. 选择要发送指标的应用程序监视器名称。

1. 选择 **Configuration**（配置）选项卡，然后选择 **RUM extended metrics**（RUM 扩展指标）。

1. 选择 **Send metrics**（发送指标）。

1. 选择一个或多个与其他维度一起发送的指标名称。

1. 选择一个或多个因子用作这些指标的维度。当您做出选择时，您选择创建的扩展指标数量将显示在 **Number of extended metrics**（扩展指标数量）中。

   该数字的计算方法是将所选指标名称的数量乘以您创建的不同维度的数量。

   1. 要发送以页面 ID 作为维度的指标，请选择 **Browse for page ID**（浏览页面 ID），然后选择要使用的页面 ID。

   1. 要发送以设备类型作为维度的指标，请选择 **Desktop devices**（桌面设备）或 **Mobile and tablets**（移动设备和平板电脑）。

   1. 要发送以操作系统作为维度的指标，请在 **Operating system**（操作系统）下选择一个或多个操作系统。

   1. 要发送以浏览器类型作为维度的指标，请在 **Browsers**（浏览器）下选择一个或多个浏览器。

   1. 要发送以地理位置作为维度的指标，请在 **Locations**（位置）下选择一个或多个位置。

      只有此应用程序监视器报告指标的位置才会出现在列表中供您选择。

1. 完成选择后，选择 **Send metrics**（发送指标）。

1. （可选）在 **Extended metrics**（扩展指标）列表中，如要创建监视其中一个指标的告警，请在该指标行中选择 **Create alarm**（创建告警）。

   有关 CloudWatch 告警的一般信息，请参阅 [使用 Amazon CloudWatch 告警](CloudWatch_Alarms.md)。有关为 CloudWatch RUM 扩展指标设置告警的教程，请参阅 [教程：创建扩展指标并为其设置告警](#CloudWatch-RUM-extended-metrics-alarmtutorial)。

**停止发送扩展指标**

**使用控制台停止发送扩展指标**

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

1. 在导航窗格中，选择 **Application Signals**、**RUM**。

1. 选择要发送指标的应用程序监视器名称。

1. 选择 **Configuration**（配置）选项卡，然后选择 **RUM extended metrics**（RUM 扩展指标）。

1. 选择一个或多个指标名称和维度组合以停止发送。然后选择 **Actions**（操作）、**Delete**（删除）。

### 教程：创建扩展指标并为其设置告警
<a name="CloudWatch-RUM-extended-metrics-alarmtutorial"></a>

本教程将演示如何设置要发送到 CloudWatch 的扩展指标，以及如何为该指标设置告警。在本教程中，您将创建一个指标来跟踪 Chrome 浏览器上的 JavaScript 错误。

**设置该扩展指标并为其设置告警**

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

1. 在导航窗格中，选择 **Application Signals**、**RUM**。

1. 选择要发送指标的应用程序监视器名称。

1. 选择 **Configuration**（配置）选项卡，然后选择 **RUM extended metrics**（RUM 扩展指标）。

1. 选择 **Send metrics**（发送指标）。

1. 选择 **JSErrorCount**。

1. 在 **Browsers**（浏览器）下，选择 **Chrome**。

   这种 **JSErrorCount** 和 **Chrome** 的组合将向 CloudWatch 发送一个扩展指标。该指标仅计算使用 Chrome 浏览器的用户会话的 JavaScript 错误。指标名称将是 **JSErrorCount**，维度名称将是 **Browser**（浏览器）。

1. 选择 **Send metrics**（发送指标）。

1. 在 **Extended metrics**（扩展指标）列表中，在 **Name**（名称）下显示 **JSErrorCount** 并在 **BrowserName**（浏览器名称）下显示 **Chrome** 的行中选择 **Create alarm**（创建告警）。

1. 在 **Specify metric and conditions**（指定指标和条件）下，确认 **Metric name**（指标名称）和 **BrowserName**（浏览器名称）字段已预先填充正确的值。

1. 对于 **Statistic**（统计数据），选择要用于告警的统计数据。对于这种类型的计数指标，**Average**（平均值）是一个不错的选择。

1. 对于**时段**，选择 **5 分钟**。

1. 在 **Conditions**（条件）下，执行以下操作：
   + 选择 **Static**（静态）。
   + 选择 **Greater**（大于），指定当错误数高于您要指定的阈值时告警应进入 ALARM 状态。
   + 在 **than...** 下，输入告警阈值数字。当 5 分钟内的错误数超过此数字时，告警将进入 ALARM 状态。

1. （可选）默认情况下，一旦错误数在 5 分钟内超过您设置的阈值数字，告警就会进入 ALARM 状态。您也可以选择更改此设置，使告警仅在超过此数字的时间多于一个 5 分钟周期时才进入 ALARM 状态。

   为此，请选择 **Additional configuration**（其他配置），然后为 **Datapoints to alarm**（触发告警的数据点数）指定错误数超过阈值的时间需要达到多少个 5 分钟周期才能触发告警。例如，您可以选择 2 选 2，仅在连续两个 5 分钟周期超过阈值时触发告警；您也可以选择 3 选 2，当连续三个 5 分钟周期中的任意两个超过阈值时触发告警。

   有关此类告警评估的更多信息，请参阅 [告警评估](alarm-evaluation.md)。

1. 选择**下一步**。

1. 对于 **Configure actions**（配置操作），指定当告警进入 ALARM 状态时应进行的操作。要使用 Amazon SNS 接收通知，请执行以下操作：
   + 选择 **Add notification（添加通知）**。
   + 选择**告警中**。
   + 选择一个现有的 SNS 主题或创建一个新主题。如果您创建了一个新主题，请为其指定一个名称，并向其添加至少一个电子邮件地址。

1. 选择**下一步**。

1. 输入告警的名称和描述（可选），然后选择 **Next**（下一步）。

1. 检查详细信息，然后选择 **Create alarm**（创建告警）。