机群索引排除指南 - AWS IoT Core

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

机群索引排除指南

队列索引服务的聚合查询疑难解答

如果您遇到类型不匹配错误,则可以使用 CloudWatch Logs 来解决问题。 CloudWatch 在舰队索引服务写入日志之前,必须启用日志。有关更多信息,请参阅 AWS IoT 使用 CloudWatch 日志进行监控

要在非托管式字段上进行聚合查询,必须指定您在传递给 UpdateIndexingConfigurationupdate-indexing-configurationcustomFields 参数中定义的字段。如果字段值与配置的字段数据类型不一致,则在执行聚合查询时忽略此值。

如果由于类型不匹配而无法对字段进行索引,则队列索引服务会向 Logs 发送错误日志。 CloudWatch 错误日志包含字段名称、无法转换的值以及设备的事物名称。下面是一个错误日志示例:

{ "timestamp": "2017-02-20 20:31:22.932", "logLevel": "ERROR", "traceId": "79738924-1025-3a00-a669-7bec69f7f07a", "accountId": "000000000000", "status": "SucceededWithIssues", "eventType": "IndexingCustomFieldFailed", "thingName": "thing0", "failedCustomFields": [ { "Name": "attributeName1", "Value": "apple", "ExpectedType": "String" }, { "Name": "attributeName2", "Value": "2", "ExpectedType": "Boolean" } ] }

如果设备已断开连接大约一小时,则连接状态 timestamp 值可能会缺失。对于持续会话,在客户端断开连接的时间超过为持续会话配置的时间 time-to-live (TTL) 之后,该值可能会丢失。仅为客户端 ID 具有匹配事物名称的连接,对连接状态数据建立索引。(客户端 ID 是用于将设备连接到的值 AWS IoT Core。)

实例集索引配置故障排除

无法降级实例集索引配置

当您想要移除与实例集指标或动态组关联的数据来源时,不支持降级实例集索引配置。

例如,如果您的索引配置包含注册表数据、影子数据和连接数据,并且查询 thingName:TempSensor* AND shadow.desired.temperature>80 中存在实例集指标,则更新索引配置以仅包含注册表数据将导致错误。

不支持修改现有机群指标使用的自定义字段。

由于实例集指标或动态组不兼容,无法更新您的索引配置

如果由于实例集指标或动态组不兼容而无法更新索引配置,请在更新索引配置之前删除不兼容的实例集指标或动态组。

位置索引和地理查询疑难解答

要解决位置索引和地理查询中的类型不匹配错误,您可以启用 CloudWatch 日志。有关如何监控 AWS IoT 使用的更多信息 CloudWatch,请按照 step-by-step 指南进行操作。

使用地理查询为位置数据编制索引时,您在中指定的位置字段geoLocations必须与传递到UpdateIndexingConfiguration的位置字段相匹配。如果存在不匹配的情况,队列索引会向发送不匹配的类型错误。 CloudWatch错误日志包含字段名称、无法转换的值以及设备的事物名称。

下面是一个错误日志示例:

{ "timestamp": "2023-11-09 01:39:43.466", "logLevel": "ERROR", "traceId": "79738924-1025-3a00-a669-7bec69f7f07a", "accountId": "123456789012", "status": "Failure", "eventType": "IndexingGeoLocationFieldFailed", "thingName": "thing0", "failedGeolocationFields": [ { "Name": "attributeName1", "Value": "apple", "ExpectedType": "Geopoint" } ], "reason": "failed to index the field because it could not be converted to one of the expected geoLocation formats." }

有关更多信息,请参阅 索引位置数据

机群故障排除指标

看不到中的数据点 CloudWatch

如果您能够创建队列指标,但无法在中看到数据点 CloudWatch,则很可能没有符合查询字符串条件的东西。

请参阅以下示例命令,了解如何创建机群指标:

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

如果没有符合查询字符串条件 --query-string "thingName:TempSensor* AND attributes.temperature>80" 的事物:

  • 使用values=count,您将能够创建舰队指标,并且会有数据点可供显示 CloudWatch。该值 count 的数据点始终为0。

  • 使用values其他count,您将能够创建舰队指标,但不会在中看到舰队指标 CloudWatch ,也不会显示任何数据点 CloudWatch。