入门教程 - AWS IoT Core

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

入门教程

在本教程中,您将创建一个机群指标监控传感器的温度来检测潜在的异常。创建机群指标时,您需要定义检测温度超过 80 华氏度的传感器数量的聚合查询 您可以将查询指定为每 60 秒运行一次,查询结果将发送到其中 CloudWatch,您可以在其中查看存在潜在高温风险的传感器的数量并设置警报。要完成此教程,需要使用 AWS CLI

在本教程中,您将学习如何:

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

先决条件

设置

要使用实例集指标,请启用实例集索引。要为具有指定数据源和相关配置的事物或事物组启用机群索引,请按照管理事物索引管理事物组索引中的说明操作。

设置
  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"

    有关更多信息,请参阅启用事物索引

  2. 运行以下 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

    这个脚本创建了十个事物来表示十个传感器。每个事物都有 temperaturerackIdstateNormal 属性如下表所述:

    属性 数据类型 描述
    temperature 数字 温度(单位“华氏”)
    rackId 字符串 包含传感器的服务器机架 ID
    stateNormal 布尔值 传感器的温度值是否正常

    此脚本的输出包含十个 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" }

    有关更多信息,请参阅创建事物

创建机群指标

要创建机群指标
  1. 运行以下命令创建名为high_temp_FM的机群指标:您可以创建队列指标来监控温度超过 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_temp_FM的机群指标。

    --查询-字符串

    数据类型:字符串 --query-string参数指定查询字符串。在此示例中,查询字符串表示查询名称以华氏度开头TempSensor且温度高于 80 华氏度的所有内容。有关更多信息,请参阅查询语法

    --时期

    数据类型:整数 --period参数指定检索聚合数据的时间(以秒为单位)。在此示例中,您指定要创建的机群指标每 60 秒检索一次聚合数据。

    --字段-聚合

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

    --聚合-类型

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

    此命令的输出如下所示:

    { "metricArn": "arn:aws:iot:region:111122223333:fleetmetric/high_temp_FM", "metricName": "high_temp_FM" }
    注意

    数据点可能需要一点时间才能显示出来 CloudWatch。

    要了解有关如何创建机群指标的更多信息,请参阅管理机群指标

    如果您无法创建机群指标,请阅读机群指标故障排查

  2. (可选)运行以下命令以描述名为 high_temp_FM 的机群指标:

    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

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

要查看中的数据点 CloudWatch
  1. 打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/

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

  3. 第一个选项卡部分所有指标列出了您可以分组查看的所有指标,请选择 IoT FleetMetrics。这包含您的所有实例集指标。

  4. 所有指标选项卡上的聚合类型部分,选择 Aggregation type(聚合类型)查看您创建的所有机群指标。

  5. 聚合类型左侧选择机群指标显示图片。您将在指标名称左侧看到值计数,这是您在本教程的创建实例集指标部分中指定的聚合类型的值。

  6. 选择所有指标选项卡右侧叫做图表化指标的第二个选项卡,查看从上一步中选择的机群指标。

    您能够看到一张图表,显示温度高于 80 华氏度的传感器数量,如下所示:

    AWS IoT 舰队指标
    注意

    周期” 属性 CloudWatch 默认为 5 分钟。这是中显示的数据点之间的时间间隔 CloudWatch。您可以根据您的需求更改时期设置。

  7. (可选)您可以设置指标告警。

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

    2. Alarms(告警)页面上,在右上角选择 Create alarm(创建告警)。按照控制台中 Create alarm(创建告警)的说明根据需要创建警报。有关更多信息,请参阅使用 Amazon CloudWatch 警报

要了解更多信息,请阅读使用 Amazon CloudWatch 指标

如果您在中看不到数据点 CloudWatch,请阅读故障排除队列指标

清理

要删除机群指标

您使用 delete-fleet-metric CLI 命令删除机群指标。

要删除名为 high_temp_FM 的实例集指标,请运行以下命令。

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 指标