

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

# 入门教程
<a name="fleet-metrics-get-started"></a>

在本教程中，您将创建一个[实例集指标](iot-fleet-metrics.md)监控传感器的温度来检测潜在的异常。创建实例集指标时，您需要定义检测温度超过 80 华氏度的传感器数量的[聚合查询](index-aggregate.md)。您可以将查询指定为每 60 秒运行一次，查询结果将发送到其中 CloudWatch，您可以在其中查看存在潜在高温风险的传感器的数量并设置警报。要完成此教程，需要使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)：

在本教程中，您将学习如何：
+ [设置](#fleet-metrics-tutorial-setup)
+ [创建实例集指标](#fleet-metrics-tutorial-create)
+ [在中查看指标 CloudWatch](#fleet-metrics-tutorial-view-data)
+ [清理资源](#fleet-metrics-tutorial-delete-fleet-metrics)

完成本教程需要大约 15 分钟。

## 先决条件
<a name="fleet-metrics-tutorial-prerequisites"></a>
+ 安装 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 的最新版本
+ 让自己熟悉[查询聚合数据](https://docs.aws.amazon.com/iot/latest/developerguide/index-aggregate.html)
+ 熟悉使用 A [mazon 指标 CloudWatch](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html) 

## 设置
<a name="fleet-metrics-tutorial-setup"></a>

要使用实例集指标，请启用实例集索引。要为具有指定数据源和相关配置的事物或事物组启用实例集索引，请按照[管理事物索引](managing-index.md#enable-index)和[管理事物组索引](thinggroup-index.md#enable-group-index)中的说明操作。

**设置**

1. 运行以下命令以启用实例集索引并指定要搜索的数据源。

   ```
   aws iot update-indexing-configuration \
   --thing-indexing-configuration "thingIndexingMode=REGISTRY_AND_SHADOW,customFields=[{name=attributes.temperature,type=Number},{name=attributes.rackId,type=String},{name=attributes.stateNormal,type=Boolean}],thingConnectivityIndexingMode=STATUS" \
   ```

   上述的 CLI 命令示例启用了实例集索引，以支持使用 `AWS_Things` 索引搜索注册表数据、影子数据和事物连接状态。

   可能需要几分钟才能完成此配置更改。验证在创建实例集指标之前已启用实例集索引。

   要检查您的实例集索引是否已启用，请运行以下 CLI 命令：

   ```
   aws --region us-east-1 iot describe-index --index-name "AWS_Things"
   ```

   有关更多信息，请参阅[启用事物索引](managing-index.md#enable-index)。

1. 运行以下 bash 脚本创建十个事物并对其进行描述。

   ```
   # Bash script. Type `bash` before running in other shells.
   
   Temperatures=(70 71 72 73 74 75 47 97 98 99)
   Racks=(Rack1 Rack1 Rack2 Rack2 Rack3 Rack4 Rack5 Rack6 Rack6 Rack6)
   IsNormal=(true true true true true true false false false false)
   
   for ((i=0; i < 10; i++))
   do
     thing=$(aws iot create-thing --thing-name "TempSensor$i" --attribute-payload attributes="{temperature=${Temperatures[@]:$i:1},rackId=${Racks[@]:$i:1},stateNormal=${IsNormal[@]:$i:1}}")
     aws iot describe-thing --thing-name "TempSensor$i"
   done
   ```

   这个脚本创建了十个事物来表示十个传感器。每个事物都有 `temperature`、`rackId` 和 `stateNormal` 属性如下表所述：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/fleet-metrics-get-started.html)

   此脚本的输出包含十个 JSON 文件。其中一个 JSON 文件如下所示：

   ```
   {
       "version": 1, 
       "thingName": "TempSensor0", 
       "defaultClientId": "TempSensor0", 
       "attributes": {
           "rackId": "Rack1", 
           "stateNormal": "true", 
           "temperature": "70"
       }, 
       "thingArn": "arn:aws:iot:region:account:thing/TempSensor0", 
       "thingId": "example-thing-id"
   }
   ```

   有关更多信息，请参阅[创建事物](https://docs.aws.amazon.com/iot/latest/developerguide/thing-registry.html#create-thing)。

## 创建实例集指标
<a name="fleet-metrics-tutorial-create"></a>

**要创建实例集指标**

1. 运行以下命令创建名为的队列指标*high\$1temp\$1FM*。您可以创建队列指标来监控温度超过 80 华氏度的传感器的数量。 CloudWatch

   ```
   aws iot create-fleet-metric --metric-name "high_temp_FM" --query-string "thingName:TempSensor* AND attributes.temperature >80" --period 60 --aggregation-field "attributes.temperature" --aggregation-type name=Statistics,values=count
   ```

   指标名称 

   数据类型：字符串 `--metric-name` 参数指定实例集指标名称。在此示例中，您正在创建名为 *high\$1temp\$1FM* 的实例集指标。

   --query-string

   数据类型：字符串 `--query-string` 参数指定查询字符串。在此示例中，查询字符串表示查询名称以华氏度开头*TempSensor*且温度高于 80 华氏度的所有内容。有关更多信息，请参阅[查询语法](query-syntax.md)。

   --period 

   数据类型：整数。`--period` 参数指定检索聚合数据的时间（以秒为单位）。在此示例中，您指定要创建的实例集指标每 60 秒检索一次聚合数据。

   --aggregation-field

   数据类型：字符串 `--aggregation-field` 参数指定要评估的属性。在此示例中，要评估温度属性。

   --aggregation-type

   `--aggregation-type` 参数指定要在实例集指标中显示的统计摘要。对于监控任务，您可以为不同聚合类型自定义聚合查询属性（**统计数据**、**基数**和**百分位**)。在此示例中，您可以为聚合类型指定**计数**，并指定**统计信息**以返回属性与查询相匹配的设备计数，换句话说，返回名称以华氏度开头且温度高于 80 华氏度的设备的计数。*TempSensor*有关更多信息，请参阅[查询聚合数据](index-aggregate.md)。

   此命令的输出如下所示：

   ```
   {
       "metricArn": "arn:aws:iot:region:111122223333:fleetmetric/high_temp_FM", 
       "metricName": "high_temp_FM"
   }
   ```
**注意**  
数据点可能需要一点时间才能显示出来 CloudWatch。

   要了解有关如何创建实例集指标的更多信息，请参阅[管理实例集指标](managing-fleet-metrics.md)。

   如果您无法创建实例集指标，请阅读[实例集指标故障排除](fleet-indexing-troubleshooting.md#fleet-metrics-troubleshooting)。

1. （可选）运行以下命令以描述名为 *high\$1temp\$1FM* 的实例集指标：

   ```
   aws iot describe-fleet-metric --metric-name "high_temp_FM"
   ```

   此命令的输出如下所示：

   ```
   {
       "queryVersion": "2017-09-30", 
       "lastModifiedDate": 1625249775.834, 
       "queryString": "*", 
       "period": 60, 
       "metricArn": "arn:aws:iot:region:111122223333:fleetmetric/high_temp_FM", 
       "aggregationField": "registry.version", 
       "version": 1, 
       "aggregationType": {
           "values": [
               "count"
           ], 
           "name": "Statistics"
       }, 
       "indexName": "AWS_Things", 
       "creationDate": 1625249775.834, 
       "metricName": "high_temp_FM"
   }
   ```

## 在中查看舰队指标 CloudWatch
<a name="fleet-metrics-tutorial-view-data"></a>

创建队列指标后，您可以在中查看指标数据 CloudWatch。在本教程中，您将看到一个指标，该指标显示名称以华氏度开头*TempSensor*且温度高于 80 华氏度的传感器数量。

**要查看中的数据点 CloudWatch**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在左侧面板的 CloudWatch 菜单上，选择**指标**以展开子菜单，然后选择**所有指标**。这将打开上半部分的页面显示图表，下半部分包含四个选项卡式部分。

1. 第一个选项卡式部分**所有指标**列出了您可以分组查看的所有指标，选择 **Io M TFleet et** rics。这包含您的所有实例集指标。

1. 在**所有指标**选项卡上的**聚合类型**部分，选择**聚合类型**查看您创建的所有实例集指标。

1. 在 **聚合类型**左侧选择实例集指标显示图片。您将在**指标名称**的左侧看到该值，这是您在本教程的[创建队列指标](#fleet-metrics-tutorial-create)部分中指定的聚合类型的值。*count*

1. 选择**所有指标**选项卡右侧叫做**图表化指标**的第二个选项卡，查看从上一步中选择的实例集指标。

   您能够看到一张图表，显示温度高于 80 华氏度的传感器数量，如下所示：  
![\[AWS IoT 舰队指标\]](http://docs.aws.amazon.com/zh_cn/iot/latest/developerguide/images/fm-metric-in-cloudwatch.png)
**注意**  
“**周期**” 属性 CloudWatch 默认为 5 分钟。这是中显示的数据点之间的时间间隔 CloudWatch。您可以根据您的需求更改**时期**设置。

1. （可选）您可以设置指标告警。

   1. 在左侧面板的 CloudWatch 菜单上，选择**警报**以展开子菜单，然后选择**所有警报**。

   1. 在 **Alarms**（告警）页面上，在右上角选择 **Create alarm**（创建告警）。按照控制台中 **Create alarm**（创建告警）的说明根据需要创建警报。有关更多信息，请参阅[使用 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

要了解更多信息，请阅读[使用 Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。

如果您在中看不到数据点 CloudWatch，请阅读[故障排除队列指标](fleet-indexing-troubleshooting.md#fleet-metrics-troubleshooting)。

## 清理
<a name="fleet-metrics-tutorial-delete-fleet-metrics"></a>

**要删除实例集指标**

您使用 **delete-fleet-metric** CLI 命令删除实例集指标。

要删除名为 *high\$1temp\$1FM* 的实例集指标，请运行以下命令。

```
aws iot delete-fleet-metric --metric-name "high_temp_FM"
```

**要清除事物**

您可以使用 **delete-thing** CLI 命令删除事物。

要删除您创建的十个事物，请运行以下脚本：

```
# Bash script. Type `bash` before running in other shells.

for ((i=0; i < 10; i++))
do
  thing=$(aws iot delete-thing --thing-name "TempSensor$i")
done
```

**要清理中的指标 CloudWatch**

CloudWatch 不支持删除指标。指标根据保留时间表过期。要了解更多信息，请参阅[使用 Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。