使用 AWS IoT Greengrass 日誌進行監控 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 於 2023 年 6 月 30 日進入延長壽命階段。如需詳細資訊,請參閱 AWS IoT Greengrass V1 維護政策 。在此日期之後, AWS IoT Greengrass V1 不會發佈提供功能、增強功能、錯誤修正或安全修補程式的更新。在 上執行的裝置 AWS IoT Greengrass V1 不會中斷,並會繼續運作和連線至雲端。我們強烈建議您遷移至 AWS IoT Greengrass Version 2,這會新增重要的新功能,並支援其他平台

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 AWS IoT Greengrass 日誌進行監控

AWS IoT Greengrass 由雲端服務和 AWS IoT Greengrass Core 軟體組成。AWS IoT GreengrassCore 軟體可以將日誌寫入 Amazon CloudWatch 和核心裝置的本機檔案系統。核心上執行的 Lambda 函數和連接器也可以將記錄寫入 CloudWatch 記錄檔和本機檔案系統。您可以使用日誌來監控事件和排解疑難問題。所有 AWS IoT Greengrass 日誌項目皆含有時間戳記、日誌等級和事件資料。對記錄設定所做的變更會在部署群組後生效。

於群組層級中設定日誌記錄。如需顯示如何設定 Greengrass 群組記錄日誌的步驟,請參閱設定 AWS IoT Greengrass 的日誌記錄

存取 CloudWatch 記錄

如果您設定 CloudWatch 記錄,則可以在 Amazon CloudWatch 主控台的日誌頁面上檢視日誌。AWS IoT Greengrass 日誌的日誌群組使用以下的命名慣例:

/aws/greengrass/GreengrassSystem/greengrass-system-component-name /aws/greengrass/Lambda/aws-region/account-id/lambda-function-name

每個日誌群組都包含使用以下命名慣例的日誌串流:

date/account-id/greengrass-group-id/name-of-core-that-generated-log

當您使用 CloudWatch 記錄檔時,需要考量下列事項:

  • 如果沒有網際網路連線, CloudWatch 記錄會傳送至重試次數有限的記錄檔。用完重試次數之後,會刪除事件。

  • 交易、記憶體及其他限制應用。如需詳細資訊,請參閱 記錄限制

  • 您的 Greengrass 群組角色必須允許寫入記AWS IoT Greengrass錄檔。 CloudWatch 若要授與許可,請以您的群組角色內嵌以下內嵌政策

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
    注意

    您可以授與您的日誌資源的更精細存取權。如需詳細資訊,請參閱 Amazon 使用 CloudWatch 者指南中的對 CloudWatch 日誌使用身分型政策 (IAM 政策)

    群組角色是您建立並附加到 Greengrass 群組的 IAM 角色。您可以使用主控台或 AWS IoT Greengrass API 來管理群組角色。

     

    使用主控台
    1. 在AWS IoT主控台瀏覽窗格的 [管理] 下,展開 [Greengrass 裝置],然後選擇 [群組 (V1)]。

    2. 選擇目標群組。

    3. 選擇 [檢視設定]。在 [群組角色] 底下,您可以檢視、關聯或取消群組角色的關聯。

      如需說明如何連接群組角色的步驟,請參閱群組角色.

     

    使用 CLI

     

    若要了解如何取得群組 ID 以與這些指令搭配使用,請參閱 取得群組 ID

存取檔案系統日誌

如果設定檔案系統記錄,則日誌檔會存放於核心裝置的 greengrass-root/ggc/var/log 之下。以下是高階目錄結構:

greengrass-root/ggc/var/log - crash.log - system - log files for each Greengrass system component - user - region - account-id - log files generated by each user-defined Lambda function - aws - log files generated by each connector
注意

在預設情況下,greengrass-root 即為 /greengrass 目錄。如果已設定好寫入目錄,那麼日誌就會位在該目錄中。

使用檔案系統日誌時有下列考量:

  • 在檔案系統中讀取 AWS IoT Greengrass 日誌需要根許可。

  • 當日誌資料數量接近設定限制時,AWS IoT Greengrass 會根據大小支援旋轉,以及支援自動清除。

  • crash.log 檔案僅於檔案系統日誌中提供。此記錄檔不會寫入 CloudWatch 防護記錄。

  • 磁碟使用量限制應用。如需詳細資訊,請參閱 記錄限制

注意

AWS IoT Greengrass 核心軟體 1.0 版的日誌存放於 greengrass-root/var/log 目錄下。

預設日誌記錄組態

如果日誌記錄設定不明確,則在第一個群組部署後 AWS IoT Greengrass 會使用以下預設記錄組態。

AWS IoT Greengrass 系統元件
  • 類型 - FileSystem

  • 元件 - GreengrassSystem

  • 等級 - INFO

  • 空格 - 128 KB

使用者定 Lambda 的拉
  • 類型 - FileSystem

  • 元件 - Lambda

  • 等級 - INFO

  • 空格 - 128 KB

注意

在第一次部署之前,只有系統元件會將記錄寫入檔案系統,因為未部署使用者定義的 Lambda 函數。

設定 AWS IoT Greengrass 的日誌記錄

您可以使用AWS IoT主控台或 AWS IoT GreengrassAPI 來設定AWS IoT Greengrass記錄。

注意

若AWS IoT Greengrass要允許將記錄寫入記 CloudWatch 錄檔,您的群組角色必須允許必要的 CloudWatch 記錄動作

設定日誌記錄 (主控台)

您可以在群組的設定頁面設定日誌記錄。

  1. 在AWS IoT主控台瀏覽窗格的 [管理] 下,展開 [Greengrass 裝置],然後選擇 [群組 (V1)]。

  2. 選擇您要設定日誌記錄的群組。

  3. 在群組設定頁面上,選擇記錄檔索引標籤。

  4. 選擇記錄的位置,如下所示:

    • 若要設定 CloudWatch 記錄,請針對CloudWatch 記錄組態選擇編輯

    • 若要設定本機日誌組態的檔案系統記錄,請選擇編輯

    您可以同時設定兩個記錄的位置或單選。

  5. 在編輯記錄組態模式中,選取 Greengrass 系統記錄層級使用者 Lambda 函數記錄層級。您可以同時選取兩個元件或單選。

  6. 選擇您想要記錄事件日誌的最低等級。將會過濾低於此閾值的事件且不將其儲存。

  7. 選擇儲存。變更會在部署群組之後生效。

設定日誌記錄 (API)

您可以使用 AWS IoT Greengrass 記錄器 API,以編寫程式的方式設定日誌記錄。例如,使用 CreateLoggerDefinition 動作根據 LoggerDefinitionVersion承載建立記錄器定義,其會使用以下語法:

{ "Loggers": [ { "Id": "string", "Type": "FileSystem|AWSCloudWatch", "Component": "GreengrassSystem|Lambda", "Level": "DEBUG|INFO|WARN|ERROR|FATAL", "Space": "integer" }, { "Id": "string", ... } ] }

LoggerDefinitionVersion 是一個陣列,其中一個或多個 Logger 物件具有下列屬性:

Id

記錄器的識別符。

Type

日誌事件的儲存機制。使用AWSCloudWatch時,記錄事件會傳送至 CloudWatch 記錄檔。使用 FileSystem 時,會儲存日誌事件於本機檔案系統中。

有效值:AWSCloudWatchFileSystem

Component

日誌事件的來源。使用 GreengrassSystem 時,會記錄來自 Greengrass 系統元件的事件。使用 Lambda 時,會記錄來自使用者定義的 Lambda 函數之事件。

有效值:GreengrassSystemLambda

Level

日誌等級閾值。將會過濾低於此閾值的日誌事件,且不將其儲存。

有效值:DEBUGINFO (建議)、WARNERRORFATAL

Space

用來存放日誌的最大本機儲存容量 (KB)。僅當 Type 設為 FileSystem 時才會套用此範圍設定。

組態範例

以下 LoggerDefinitionVersion 範例指定記錄組態:

  • 打開系統組件的AWS IoT Greengrass文件系統ERROR和以上日誌記錄。

  • 開啟使用者定義 Lambda 函數的檔案系統 INFO (及以上) 記錄。

  • 開啟 CloudWatch INFO (及以上) 使用者定義 Lambda 函數的記錄功能。

{ "Name": "LoggingExample", "InitialVersion": { "Loggers": [ { "Id": "1", "Component": "GreengrassSystem", "Level": "ERROR", "Space": 10240, "Type": "FileSystem" }, { "Id": "2", "Component": "Lambda", "Level": "INFO", "Space": 10240, "Type": "FileSystem" }, { "Id": "3", "Component": "Lambda", "Level": "INFO", "Type": "AWSCloudWatch" } ] } }

在您建立記錄器定義版本後,您可以使用其版本 ARN 在部署群組前建立群組。

記錄限制

AWS IoT Greengrass 具有下列記錄限制。

每秒交易數

啟用記錄時,記錄元件會先在本機上批次記錄事件,然後再將事件傳送到 CloudWatch,因此您可以以高於每個記錄資料流每秒五個要求的速率進行記錄。 CloudWatch

記憶體

如果設定AWS IoT Greengrass為將記錄傳送至, CloudWatch 且 Lambda 函數在長時間內記錄超過 5 MB/ 秒,則內部處理管線最終會填滿。理論上最壞的情況是每個 Lambda 函數 6 MB。

時鐘誤差

啟用記錄時 CloudWatch ,記錄元件會 CloudWatch使用正常的簽章版本 4 簽署程序來簽署要求。如果AWS IoT Greengrass核心裝置上的系統時間不同步超過 15 分鐘,則會拒絕要求。

硬碟使用量

使用下列公式計算磁碟要記錄的最大使用總量。

greengrass-system-component-space * 8 // 7 if automatic IP detection is disabled + 128KB // the internal log for the local logging component + lambda-space * lambda-count // different versions of a Lambda function are treated as one

其中:

greengrass-system-component-space

用來存放 AWS IoT Greengrass 系統元件日誌的最大本機儲存容量。

lambda-space

Lambda 函數日誌的本機儲存容量上限。

lambda-count

部署的 Lambda 函數數目。

日誌受損

如果您的AWS IoT Greengrass核心裝置設定為僅登入, CloudWatch 而且沒有網際網路連線,您就無法擷取記憶體中目前的記錄檔。

當 Lambda 函數終止時 (例如,在部署期間),幾秒鐘的記錄不會寫入。 CloudWatch

CloudTrail 日誌

AWS IoT Greengrass使用執行的服務AWS CloudTrail,可提供中使用者、角色或服務所採取之動作記錄的AWS服務AWS IoT Greengrass。如需更多詳細資訊,請參閱 使用 AWS CloudTrail 記錄 AWS IoT Greengrass API 呼叫