

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 使用 AWS IoT Greengrass 日誌監控
<a name="greengrass-logs-overview"></a>

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

於群組層級中設定日誌記錄。如需顯示如何設定 Greengrass 群組記錄日誌的步驟，請參閱[設定 的記錄 AWS IoT Greengrass](#config-logs)。

## 存取 CloudWatch Logs
<a name="gg-logs-cloudwatch"></a>

如果您設定 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 Logs 時，適用下列考量：
+ 如果沒有網際網路連線，日誌會傳送至重試次數有限的 CloudWatch Logs。用完重試次數之後，會刪除事件。
+ 交易、記憶體及其他限制應用。如需詳細資訊，請參閱[記錄限制](#gg-log-limits)。
+ <a name="gg-logs-cloudwatch-perms"></a>您的 Greengrass 群組角色必須允許 AWS IoT Greengrass 寫入 CloudWatch Logs。若要授與許可，請以您的群組角色[內嵌以下內嵌政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html#embed-inline-policy-console)。

------
#### [ JSON ]

****  

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

------
**注意**  
您可以授與您的日誌資源的更精細存取權。如需詳細資訊，請參閱《Amazon [ CloudWatch 使用者指南》中的針對 CloudWatch Logs 使用身分型政策 (IAM 政策）](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-identity-based-access-control-cwl.html)。 *Amazon CloudWatch *

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

     
**使用主控台**  

  1. <a name="console-gg-groups"></a>在 AWS IoT 主控台導覽窗格的**管理**下，展開 **Greengrass 裝置**，然後選擇**群組 (V1)**。

  1. <a name="group-choose-target-group"></a>選擇目標群組。

  1. 選擇**檢視設定**。在**群組角色**下，您可以檢視、關聯或取消群組角色的關聯。

     如需說明如何連接群組角色的步驟，請參閱[群組角色](group-role.md).
   
**使用 CLI**  
  + 若要尋找群組角色，請使用 [get-associated-role](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-associated-role.html) 命令。
  + 若要連接群組角色，請使用 [associate-role-to-group](https://docs.aws.amazon.com/cli/latest/reference/greengrass/associate-role-to-group.html) 命令。
  + 若要移除群組角色，請使用 [disassociate-role-from-group](https://docs.aws.amazon.com/cli/latest/reference/greengrass/disassociate-role-from-group.html) 命令。
   
若要了解如何取得群組 ID 以與這些指令搭配使用，請參閱 [取得群組 ID](deployments.md#api-get-group-id)。

## 存取檔案系統日誌
<a name="gg-logs-local"></a>

如果設定檔案系統記錄，則日誌檔會存放於核心裝置的 `{{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` 目錄。如果已設定好[寫入目錄](gg-core.md#write-directory)，那麼日誌就會位在該目錄中。

使用檔案系統日誌時有下列考量：
+ 在檔案系統上讀取 AWS IoT Greengrass 日誌需要根許可。
+ AWS IoT Greengrass 當日誌資料量接近設定的限制時， 支援以大小為基礎的輪換和自動清除。
+ `crash.log` 檔案僅於檔案系統日誌中提供。此日誌不會寫入 CloudWatch Logs。
+ 磁碟使用量限制應用。如需詳細資訊，請參閱[記錄限制](#gg-log-limits)。

**注意**  
 AWS IoT Greengrass Core 軟體 v1.0 的日誌存放在 `{{greengrass-root}}/var/log`目錄下。

## 預設日誌記錄組態
<a name="config-logs-default"></a>

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

AWS IoT Greengrass 系統元件  
+ 類型 - `FileSystem`
+ 元件 - `GreengrassSystem`
+ 等級 - `INFO`
+ 空格 - `128 KB`

使用者定義的 Lambda 函數  
+ 類型 - `FileSystem`
+ 元件 - `Lambda`
+ 等級 - `INFO`
+ 空格 - `128 KB`

**注意**  
在第一次部署之前，只有系統元件會將日誌寫入檔案系統，因為不會部署使用者定義的 Lambda 函數。

## 設定 的記錄 AWS IoT Greengrass
<a name="config-logs"></a>

您可以使用 AWS IoT 主控台或 [AWS IoT Greengrass APIs](#config-logs-api)來設定 AWS IoT Greengrass 記錄。

**注意**  
若要允許 AWS IoT Greengrass 將日誌寫入 CloudWatch Logs，您的群組角色必須允許[必要的 CloudWatch Logs 動作](#gg-logs-cloudwatch-perms)。

### 設定日誌記錄 (主控台)
<a name="config-logs-console"></a>

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

1. <a name="console-gg-groups"></a>在 AWS IoT 主控台導覽窗格的**管理**下，展開 **Greengrass 裝置**，然後選擇**群組 (V1)**。

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

1. 在群組組態頁面上，選擇**日誌**索引標籤。

1. 選擇記錄的位置，如下所示：
   + 若要設定 CloudWatch 記錄，請在 **CloudWatch 日誌組態**中選擇**編輯**。
   + 若要設定**本機日誌組態**的檔案系統記錄，請選擇**編輯**。

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

1. 在編輯日誌組態模態中，選取 **Greengrass 系統日誌層級**或 **User Lambda 函數日誌層級**。您可以同時選取兩個元件或單選。

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

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

### 設定日誌記錄 (API)
<a name="config-logs-api"></a>

您可以使用 AWS IoT Greengrass 記錄器 APIs，以程式設計方式設定記錄。例如，使用 [https://docs.aws.amazon.com/greengrass/v1/apireference/createloggerdefinition-post.html](https://docs.aws.amazon.com/greengrass/v1/apireference/createloggerdefinition-post.html) 動作根據 [https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-loggerdefinitionversion.html](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-loggerdefinitionversion.html)承載建立記錄器定義，其會使用以下語法：

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

`LoggerDefinitionVersion` 是一個陣列，其中一個或多個 [https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-logger.html](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-logger.html) 物件具有下列屬性：

`Id`  
記錄器的識別符。

`Type`  
日誌事件的儲存機制。使用 `AWSCloudWatch` 時，日誌事件會傳送到 CloudWatch Logs。使用 `FileSystem` 時，會儲存日誌事件於本機檔案系統中。  
有效值：`AWSCloudWatch`、`FileSystem`

`Component`  
日誌事件的來源。使用 `GreengrassSystem` 時，會記錄來自 Greengrass 系統元件的事件。使用 `Lambda` 時，會記錄來自使用者定義的 Lambda 函數之事件。  
有效值：`GreengrassSystem`、`Lambda`

`Level`  
日誌等級閾值。將會過濾低於此閾值的日誌事件，且不將其儲存。  
有效值：`DEBUG`、`INFO` (建議)、`WARN`、`ERROR`、`FATAL`

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

### 組態範例
<a name="config-logs-examples"></a>

以下 `LoggerDefinitionVersion` 範例指定記錄組態：
+ 開啟 AWS IoT Greengrass 系統元件的檔案系統和`ERROR`以上記錄。
+ 開啟使用者定義 Lambda 函數的檔案系統 `INFO`（及更高版本） 記錄。
+ 開啟使用者定義 Lambda 函數的 CloudWatch `INFO`（及更高版本） 記錄。

```
{
  "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 在[部署群組](deployments.md)前建立群組。

## 記錄限制
<a name="gg-log-limits"></a>

AWS IoT Greengrass 有下列記錄限制。

### 每秒交易數
<a name="gg-log-limit-tps"></a>

啟用記錄到 CloudWatch 時，記錄元件會在本機批次處理記錄事件，再將事件傳送到 CloudWatch，因此您可以以高於每個日誌串流每秒 5 個請求的速率進行記錄。

### 記憶體
<a name="gg-log-limit-mem"></a>



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

### 時鐘誤差
<a name="gg-log-limit-skew"></a>

啟用記錄到 CloudWatch 時，記錄元件會使用一般 Signature 第 4 版簽署程序來簽署對 CloudWatch 的請求。如果 AWS IoT Greengrass 核心裝置上的系統時間不同步超過 [15 分鐘](https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html)，則會拒絕請求。

### 硬碟使用量
<a name="gg-log-limit-disk"></a>

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

```
{{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 函數數量。

### 日誌受損
<a name="gg-log-loss"></a>

如果您的 AWS IoT Greengrass 核心裝置設定為僅記錄到 CloudWatch，而且沒有網際網路連線，則您無法擷取目前記憶體中的日誌。

當 Lambda 函數終止時 （例如，在部署期間），不會將數秒的日誌寫入 CloudWatch。

## CloudTrail 日誌
<a name="cloudtrail-integration"></a>

AWS IoT Greengrass 使用 執行 AWS CloudTrail，此服務提供使用者、角色或 AWS 服務在其中採取之動作的記錄 AWS IoT Greengrass。如需詳細資訊，請參閱[使用 記錄 AWS IoT Greengrass API 呼叫 AWS CloudTrail](logging-using-cloudtrail.md)。