本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
入门教程
在本教程中,您将创建一个机群指标监控传感器的温度来检测潜在的异常。创建机群指标时,您需要定义检测温度超过 80 华氏度的传感器数量的聚合查询 您可以将查询指定为每 60 秒运行一次,查询结果将发送到其中 CloudWatch,您可以在其中查看存在潜在高温风险的传感器的数量并设置警报。要完成此教程,需要使用 AWS CLI:
在本教程中,您将学习如何:
完成本教程需要大约 15 分钟。
先决条件
设置
要使用实例集指标,请启用实例集索引。要为具有指定数据源和相关配置的事物或事物组启用机群索引,请按照管理事物索引和管理事物组索引中的说明操作。
设置
-
运行以下命令以启用机群索引并指定要搜索的数据源。
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"有关更多信息,请参阅启用事物索引。
-
运行以下 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
属性如下表所述:属性 数据类型 描述 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
" }有关更多信息,请参阅创建事物。
创建机群指标
要创建机群指标
-
运行以下命令创建名为
high_temp_FM
的机群指标:您可以创建队列指标来监控温度超过 80 华氏度的传感器的数量。 CloudWatchaws 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。
要了解有关如何创建机群指标的更多信息,请参阅管理机群指标。
如果您无法创建机群指标,请阅读机群指标故障排查。
-
(可选)运行以下命令以描述名为 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
-
打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
。 -
在左侧面板的 CloudWatch 菜单上,选择指标以展开子菜单,然后选择所有指标。这将打开上半部分的页面显示图表,下半部分包含四个选项卡式部分。
-
第一个选项卡部分所有指标列出了您可以分组查看的所有指标,请选择 IoT FleetMetrics。这包含您的所有实例集指标。
-
在所有指标选项卡上的聚合类型部分,选择 Aggregation type(聚合类型)查看您创建的所有机群指标。
-
在 聚合类型左侧选择机群指标显示图片。您将在指标名称左侧看到值
计数
,这是您在本教程的创建实例集指标部分中指定的聚合类型的值。 -
选择所有指标选项卡右侧叫做图表化指标的第二个选项卡,查看从上一步中选择的机群指标。
您能够看到一张图表,显示温度高于 80 华氏度的传感器数量,如下所示:
注意
“周期” 属性 CloudWatch 默认为 5 分钟。这是中显示的数据点之间的时间间隔 CloudWatch。您可以根据您的需求更改时期设置。
-
(可选)您可以设置指标告警。
-
在左侧面板的 CloudWatch 菜单上,选择警报以展开子菜单,然后选择所有警报。
-
在 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 指标。