我想為 AWS IoT Core 日誌,動態設定資源特定的記錄。
簡短說明
**注意:**本文僅適用 AWS IoT Core 日誌的第 2 版。
您可以使用 AWS IoT Core 日誌,為特定資源動態設定記錄等級。您可以使用動態實物群組以設定資源特定的記錄等級。您必須將用戶端註冊為實物,且它們必須使用與實物名稱相關的相同用戶端 ID 連線。動態實物群組使用機群索引查詢,該查詢會持續尋找符合查詢條件的實物,並自動新增至群組。
最佳實務是設定預設記錄為較低的詳細資訊等級,並設定資源特定的記錄為較高的詳細資訊等級。日誌詳細資訊等級包括 DISABLED (最低)、ERROR、WARN、INFO 和 DEBUG (最高)。
建立或更新動態實物群組時,實物可能有資格加入動態實物群組,而不會自動新增至動態實物群組。如需相關資訊,請參閱成功的命令可以記錄錯誤。
**重要事項:**需視您的 AWS IoT Core 機群大小,開啟更詳細的日誌等級可能會產生高昂的成本,並導致疑難排解變得更困難。INFO 或 DEBUG 只能作為疑難排解時的暫時措施。疑難排解完成後,應該設定記錄等級回較不詳細的設定。
解決方法
先決條件
確定您已使用 IoT 管理員許權限憑證,在本機安裝 AWS Command Line Interface (AWS CLI)。AWS CLI 的預設 AWS 區域必須指向目標 AWS 區域。您必須讓用戶端連線到 AWS IoT Core 端點並進行互動,作為已註冊的 IoT 實物。
**注意:**如果您執行 AWS CLI 命令時收到錯誤訊息,確認您使用的是最新版本的 AWS CLI。
設定特定資源的自動記錄
1. 建立 AWS IoT 實物,並新增實物屬性至該實物。
**注意:**您可以視需要新增更多實物屬性。然後,您可以變更動態實物群組查詢以搜尋這些屬性。
2. 開啟實物索引。
3. 執行 DescribeIndex 命令以驗證您的實物索引有 ACTIVE indexStatus 屬性:
aws iot describe-index --index-name "AWS_Things"
4. 使用 AWS IoT 主控台或 AWS CLI,建立動態實物群組。
AWS IoT 主控台
1. 如果尚未開啟機群索引,請先開啟。
2. 登入 AWS IoT 主控台。
3. 在導覽窗格,選擇所有裝置,然後選擇實物群組。
4. 選擇建立實物群組。
5. 針對實物群組類型,選擇建立動態實物群組,然後選擇下一步。
6. 針對實務群組名稱,輸入 logging_level_debug_dynamic。然後,選擇建立實物群組。
**注意:**使用您的實物群組名稱,取代 logging_level_debug_dynamic。
7. 在查詢下,輸入 attributes.firmware:1,然後按 Enter 以套用搜尋查詢陳述式。
**注意:**使用您要用於查詢的實物屬性和值,取代 firmware:1。
8. 選擇預覽查詢以查看符合查詢條件的所有實物。
9. 選擇建立實物群組。
AWS CLI
1. 執行 CreateDynamicThingGroup 命令以建立動態實物群組:
**注意:**動態實物群組不會立即建立,可能需要一些時間才能完成。如需相關資訊,請參閱建立動態實物群組。
aws iot create-dynamic-thing-group \
--thing-group-name "logging_level_debug_dynamic" \
--query-string "attributes.firmware:1"
**注意:**在前述範例,使用您要用於查詢的屬性和值,取代 firmware:1。使用您的實物群組名稱,取代 logging_level_debug_dynamic。
輸出看起來類似下列訊息:
{
"thingGroupName": "logging_level_debug_dynamic",
"thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
"thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
"indexName": "AWS_Things",
"queryString": "attributes.firmware:1",
"queryVersion": "2017-09-30"
}
2. 執行 DescribeThingGroup 命令以驗證您的動態實物群組為 ACTIVE:
aws iot describe-thing-group --thing-group-name "logging_level_debug_dynamic"
**注意:**在前述的範例,使用您的實物群組名稱,取代 logging_level_debug_dynamic。
輸出看起來類似下列訊息:
{
"thingGroupName": "logging_level_debug_dynamic",
"thingGroupId": "b8f96cc3-f36b-4da2-b0f8-e28f5a123456",
"thingGroupArn": "arn:aws:iot:eu-west-1:123456789012:thinggroup/logging_level_debug_dynamic",
"version": 1,
"thingGroupProperties": {},
"thingGroupMetadata": {
"creationDate": "2022-11-30T12:37:19.980000+00:00"
},
"indexName": "AWS_Things",
"queryString": "attributes.firmware:1",
"queryVersion": "2017-09-30",
"status": "ACTIVE"
}
3. 執行 SetV2LoggingLevel 命令以設定資源的記錄等級。設定記錄等級最多可能需要十分鐘才能完成。
aws iot set-v2-logging-level \
--log-target targetType=THING_GROUP,targetName=logging_level_debug_dynamic \
--log-level DEBUG
**注意:**在前述的範例,使用您的動態實物群組名稱,取代 logging_level_debug_dynamic。
輸出看起來類似下列訊息。預設記錄會包含在輸出中,並根據您的組態包含詳細資料。也會顯示您已設定的其他記錄等級。
{
"logTargetConfigurations": [{
"logTarget": {
"targetType": "DEFAULT"
},
"logLevel": "WARN"
},
{
"logTarget": {
"targetType": "THING_GROUP",
"targetName": "
logging_level_debug_dynamic "
},
"logLevel": "DEBUG"
}
]
}
監控產生的日誌
最佳實務是監控 IoT 日誌中的問題。您可以使用 AWS CloudWatch Logs 主控台或 AWS CLI 以監控您的 AWS IoT Core 日誌。如需相關資訊,請參閱如何在 AWS IoT Core 最有效管理 AWS IoT 日誌的記錄等級?的「監控日誌項目」一節。
相關資訊
AWS IoT Device Management 定價
如何設定 AWS IoT Core 的預設記錄設定?
如何在 AWS IoT Core 手動設定特定資源記錄等級?