如何在 AWS IoT Core 中最有效地管理 AWS IoT 日誌的記錄層級?

2 分的閱讀內容
0

在 AWS IoT Core 中設定 AWS IoT 日誌時,我想要按照最佳實務進行,以降低成本和資料流量。

簡短描述

**注意:**本文僅與 AWS IoT Core 日誌的 V2 相關。

最佳實務是了解必須監控哪些 AWS IoT Core 資源以及監控層級。您可以將 AWS IoT Core 資源分段,並為每個區段指派符合您監控需求的記錄層級。AWS IoT Core 日誌可讓您為資源設定預設記錄層級和特定記錄層級。

最佳實務是設定以下項目:

  • 預設記錄 – 具有較低的詳盡度記錄層級,例如 ERROR 或 WARN 層級。如果已設定預設記錄,則其將套用至所有資源,除非資源已設定資源特定記錄。
  • 資源特定記錄(手動或動態)– 具有更詳細的層級,例如 INFO 或 DEBUG。這可以針對不同的目標類型進行設定,例如 THING_GROUP、CLIENT_ID、SOURCE_IP 或 PRINCIPAL_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

預設記錄

將 AWS IoT 日誌的預設記錄層級設定為 ERROR 或 WARN 後,您就可以檢閱日誌錯誤或警告。將預設值設定為較粗略的層級,即可降低成本和資料流量。如需詳細資訊,請參閱如何設定 AWS IoT Core 的預設記錄設定?

**注意:**建立案例時,您必須將 AWS IoT Core 日誌提供給 AWS Support。AWS Support 無法存取此資訊,因為該資訊被視為客戶資料。

手動記錄特定資源

AWS IoT Core 日誌可讓您針對以下兩者設定資源特定記錄層級:

  • 用戶端註冊為物件
  • 用戶端未註冊為物件

如需詳細資訊,請參閱如何在 AWS IoT Core 中手動設定特定資源的記錄層級?

對於用戶端註冊為物件,您可以在已定義的記錄層級管理多個物件的資源特定記錄。您也可以手動新增或移除物件群組中的物件。您的客戶必須在 AWS IoT Core 中註冊為 IoT 物件,並且必須使用與其物件名稱關聯的相同用戶端 ID 進行連接。然後,您可以使用目標類型為 THING_GROUP 的靜態物件群組來管理物件群組。

**注意:**使用靜態物件群組時,必須考慮配額限制。如需詳細資訊,請參閱 AWS IoT Core 物件群組資源限制和配額

對於未註冊為物件的用戶端,您可以使用用戶端屬性作為目標類型來管理資源。這些屬性包括 CLIENT_ID、SOURCE_IP 或 PRINCIPAL_ID。

自動記錄特定資源

您可以使用動態物件群組,自動為物件設定資源特定記錄層級。您的用戶端必須註冊為 IoT 物件,並且使用與其物件名稱相同的用戶端 ID 進行連接。動態物件群組使用機群索引查詢,該查詢會持續尋找符合查詢條件的物件,並將其自動新增至群組中。如需詳細資訊,請參閱如何在 AWS IoT Core 中動態設定特定資源的記錄層級?

**注意:**建立或更新動態物件群組時,物件可能有資格加入動態物件群組,但不會自動加入其中。如需詳細資訊,請參閱成功的命令可記錄錯誤

監控日誌項目

您可以使用 Amazon CloudWatch 主控台或 AWS CLI 來監控 AWS IoT 日誌項目:

CloudWatch 主控台

1.    開啟 CloudWatch 主控台

2.    在導覽窗格的日誌下,選擇日誌群組

3.    在篩選條件文字方塊中,輸入 AWSIoTLogsV2,然後按 Enter 鍵。
**注意:**在成功開啟 AWS IoT Core 中的記錄之前,在 CloudWatch 主控台中看不到 AWSIoTLogsV2 日誌群組。日誌項目還必須由 AWS IoT 操作寫入,才能使日誌群組可見。

4.    選擇 AWSIoTLogsV2

5.    選擇全部搜尋。此時即會顯示針對您的帳戶所產生的 AWS IoT 日誌的完整清單。

AWS CLI

執行下列命令,以在 AWS CLI 中取得 AWS IoT 日誌:

aws logs filter-log-events --log-group-name AWSIotLogsV2 \
 --start-time YourStartTimeInMilliseconds

**注意:**您可以使用 --filter-pattern 來搜尋特定日誌屬性。如需詳細資訊,請參閱篩選條件和模式語法

"logLevel" 欄位的值反映了針對目標所設定的記錄層級。在下列範例中,目標的記錄層級設定為 INFO:

{
 "timestamp": "2017-08-10 15:37:23.476",
 "logLevel": "INFO",
 "traceId": "20b23f3f-d7f1-feae-169f-82263394fbdb",
 "accountId": "123456789012",
 "status": "Success",
 "eventType": "Connect",
 "protocol": "MQTT",
 "clientId": "abf27092886e49a8a5c1922749736453",
 "principalId": "145179c40e2219e18a909d896a5340b74cf97a39641beec2fc3eeafc5a123456",
 "sourceIp": "123.123.123.123",
 "sourcePort": 13490
}

**注意:**僅在使用 MQTT 或 MQTT over WSS 協定連接至 AWS IoT Core 時才可使用 CLIENT_ID。HTTPS 協定不支援用戶端 ID。請改用 SOURCE_IP 或 PRINCIPAL_ID 目標類型。

編輯或刪除記錄層級

您可以隨時變更預設層級和特定資源的記錄層級。最多可能需要十分鐘才能反映變更。

在 AWS CLI 中,執行 delete-v2-logging-level 命令,並對 --target-type--target-name 欄位進行下列編輯:

aws iot delete-v2-logging-level \
 --target-type "THING_GROUP | CLIENT_ID | SOURCE_IP | PRINCIPAL_ID" \
 --target-name YourTargetName

相關資訊

AWS IoT Device Management 端點和配額

監控 AWS IoT

AWS IoT Device Management 定價

AWS 官方
AWS 官方已更新 1 年前