

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

# 在 中記錄和監控 AWS IoT Greengrass
<a name="logging-and-monitoring"></a>

監控是維護 和 AWS 解決方案的可靠性、可用性 AWS IoT Greengrass 和效能的重要部分。您應該從 AWS 解決方案的所有部分收集監控資料，以便在發生多點失敗時更輕鬆地偵錯。開始監控之前 AWS IoT Greengrass，您應該建立監控計畫，其中包含下列問題的答案：
+ 監控目標是什麼？
+ 監控哪些資源？
+ 監控這些資源的頻率為何？
+ 將使用哪些監控工具？
+ 誰將執行監控任務？
+ 發生問題時應該通知誰？

**Topics**
+ [監控工具](#monitoring-tools)
+ [監控 AWS IoT Greengrass 日誌](monitor-logs.md)
+ [使用 記錄 AWS IoT Greengrass V2 API 呼叫 AWS CloudTrail](logging-using-cloudtrail.md)
+ [從 AWS IoT Greengrass 核心裝置收集系統運作狀態遙測資料](telemetry.md)
+ [取得部署和元件運作狀態通知](deployment-health-notifications.md)
+ [檢查 Greengrass 核心裝置狀態](device-status.md)

## 監控工具
<a name="monitoring-tools"></a>

AWS 提供可用來監控的工具 AWS IoT Greengrass。您可設定部分這些工具以為您執行監控工作。部分工具將需要手動操作。建議您盡可能自動化監控任務。

您可以使用下列自動化監控工具來監控 AWS IoT Greengrass 和報告問題：
+ **Amazon CloudWatch Logs** – 從 AWS CloudTrail 或其他來源監控、存放和存取您的日誌檔案。如需詳細資訊，請參閱《*Amazon CloudWatch 使用者指南*》中的[監控日誌檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)。
+ **AWS CloudTrail 日誌監控** – 在帳戶之間共用日誌檔案、透過將日誌檔案傳送至 CloudWatch Logs 即時監控 CloudTrail 日誌檔案、在 Java 中寫入日誌處理應用程式，以及驗證您的日誌檔案在 CloudTrail 交付後並未變更。如需詳細資訊，請參閱 *AWS CloudTrail 使用者指南*中的[使用 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-working-with-log-files.html)。
+ **Greengrass 系統運作狀態遙測** – 訂閱以接收從 Greengrass 核心傳送的遙測資料。如需詳細資訊，請參閱[從 AWS IoT Greengrass 核心裝置收集系統運作狀態遙測資料](telemetry.md)。
+ **裝置運作狀態通知** 使用 Amazon EventBridge 建立事件，以接收有關部署和元件的狀態更新。如需詳細資訊，請參閱[取得部署和元件運作狀態通知](deployment-health-notifications.md)。
+ **機群狀態服務** – 使用機群狀態 API 操作來檢查核心裝置及其 Greengrass 元件的狀態。您也可以在 AWS IoT Greengrass 主控台中檢視機群狀態資訊。如需詳細資訊，請參閱[檢查 Greengrass 核心裝置狀態](device-status.md)。

# 監控 AWS IoT Greengrass 日誌
<a name="monitor-logs"></a>

AWS IoT Greengrass 包含 雲端服務和 AWS IoT Greengrass 核心軟體。 AWS IoT Greengrass 核心軟體可以將日誌寫入 Amazon CloudWatch Logs 和核心裝置的本機檔案系統。在核心裝置上執行的 Greengrass 元件也可以將日誌寫入 CloudWatch Logs 和本機檔案系統。您可以使用日誌來監控事件和排解疑難問題。所有 AWS IoT Greengrass 日誌項目都包含時間戳記、日誌層級和事件的相關資訊。

根據預設， AWS IoT Greengrass 核心軟體只會將日誌寫入本機檔案系統。您可以即時檢視檔案系統日誌，以便偵錯您開發和部署的 Greengrass 元件。您也可以設定核心裝置將日誌寫入 CloudWatch Logs，以便對核心裝置進行故障診斷，而無需存取本機檔案系統。如需詳細資訊，請參閱[啟用記錄至 CloudWatch Logs](#enable-cloudwatch-logs)。

**Topics**
+ [存取檔案系統日誌](#access-local-logs)
+ [存取 CloudWatch Logs](#access-cloudwatch-logs)
+ [存取系統服務日誌](#access-system-service-logs)
+ [啟用記錄至 CloudWatch Logs](#enable-cloudwatch-logs)
+ [設定 的記錄 AWS IoT Greengrass](#configure-logging)
+ [AWS CloudTrail 日誌](#cloudtrail-integration)

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

Core AWS IoT Greengrass 軟體會將日誌存放在核心裝置上的 `/greengrass/v2/logs` 資料夾中，其中 `/greengrass/v2`是 AWS IoT Greengrass 根資料夾的路徑。日誌資料夾具有下列結構。

```
/greengrass/v2
└── logs
    ├── greengrass.log
    ├── greengrass_2021_09_14_15_0.log
    ├── ComponentName.log
    ├── ComponentName_2021_09_14_15_0.log
    └── main.log
```
+ `greengrass.log` – AWS IoT Greengrass 核心軟體日誌檔案。使用此日誌檔案來檢視元件和部署的即時資訊。此日誌檔案包含 Greengrass 核的日誌，這是 AWS IoT Greengrass Core 軟體的核心，以及外掛程式元件，例如[日誌管理員](log-manager-component.md)和[秘密管理員](secret-manager-component.md)。
+ `ComponentName.log` – Greengrass 元件日誌檔案。使用元件日誌檔案來檢視在核心裝置上執行之 Greengrass 元件的即時資訊。一般元件和 Lambda 元件會將標準輸出 (stdout) 和標準錯誤 (stderr) 寫入這些日誌檔案。
+ `main.log` – 處理元件生命週期之`main`服務的日誌檔案。此日誌檔案一律為空白。

如需外掛程式、一般元件和 Lambda 元件之間差異的詳細資訊，請參閱 [元件類型](develop-greengrass-components.md#component-types)。

使用檔案系統日誌時有下列考量：
+ **根使用者許可**

  您必須具有讀取檔案系統 AWS IoT Greengrass 日誌的根許可。
+ **日誌檔案輪換**

   AWS IoT Greengrass 核心軟體每小時輪換日誌檔案，或在超過檔案大小限制時輪換日誌檔案。輪換的日誌檔案在檔案名稱中包含時間戳記。例如，輪換 AWS IoT Greengrass 的核心軟體日誌檔可能命名為 `greengrass_2021_09_14_15_0.log`。預設檔案大小限制為 1，024 KB (1 MB)。您可以在 [Greengrass 核元件](greengrass-nucleus-component.md)上設定檔案大小限制。
+ **日誌檔案刪除**

   AWS IoT Greengrass 核心軟體會在 AWS IoT Greengrass 核心軟體日誌檔案或 Greengrass 元件日誌檔案的大小超過磁碟空間限制時，清除先前的日誌檔案，包括輪換的日誌檔案。Core AWS IoT Greengrass 軟體日誌和每個元件日誌的預設磁碟空間限制為 10，240 KB (10 MB)。您可以在 [Greengrass 核元件](greengrass-nucleus-component.md)或日誌管理員元件上設定 AWS IoT Greengrass 核心軟體日誌磁碟空間限制。 [日誌管理員](log-manager-component.md)您可以在日誌管理員元件上設定每個[元件的日誌](log-manager-component.md)磁碟空間限制。

**檢視 AWS IoT Greengrass 核心軟體日誌檔案**
+ 執行下列命令來即時檢視日誌檔案。`/greengrass/v2` 將 取代為 AWS IoT Greengrass 根資料夾的路徑。

------
#### [ Linux or Unix ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  type C:\greengrass\v2\logs\com.example.HelloWorld.log
  ```

  <a name="windows-cmd-type-observe-logs"></a>`type` 命令會將檔案的內容寫入終端機。多次執行此命令，以觀察 檔案中的變更。

------
#### [ PowerShell ]

  ```
  gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

**檢視元件的日誌檔案**
+ 執行下列命令來即時檢視日誌檔案。將 `/greengrass/v2`或 *C：\$1greengrass\$1v2* 取代為 AWS IoT Greengrass 根資料夾的路徑，並將 *com.example.HelloWorld* 取代為元件名稱。

------
#### [ Linux or Unix ]

  ```
  sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
  ```

------
#### [ PowerShell ]

  ```
  gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait
  ```

------

您也可以使用 [Greengrass CLI ](greengrass-cli-component.md)的 `logs`命令來分析核心裝置上的 Greengrass 日誌。若要使用 `logs`命令，您必須設定 [Greengrass 核](greengrass-nucleus-component.md)以輸出 JSON 格式日誌檔案。如需詳細資訊，請參閱[Greengrass 命令列界面](gg-cli.md)及[日誌](gg-cli-logs.md)。

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

您可以部署[日誌管理員元件](log-manager-component.md)，將核心裝置設定為寫入 CloudWatch Logs。如需詳細資訊，請參閱[啟用記錄至 CloudWatch Logs](#enable-cloudwatch-logs)。然後，您可以在 Amazon CloudWatch 主控台的**日誌**頁面上或使用 CloudWatch Logs API 檢視日誌。<a name="log-manager-log-group-stream-format"></a>

**日誌群組名稱**  

```
/aws/greengrass/componentType/region/componentName
```
日誌群組名稱使用下列變數：  
+ `componentType` – 元件的類型，可以是下列其中一項：
  + `GreengrassSystemComponent` – 此日誌群組包含核心和外掛程式元件的日誌，這些元件在與 Greengrass 核心相同的 JVM 中執行。元件是 [Greengrass 核](greengrass-nucleus-component.md)的一部分。
  + `UserComponent` – 此日誌群組包含一般元件、Lambda 元件和裝置上的其他應用程式的日誌。元件不屬於 Greengrass 核。

  如需詳細資訊，請參閱[元件類型](develop-greengrass-components.md#component-types)。
+ `region` – 核心裝置使用的 AWS 區域。
+ `componentName` – 元件的名稱。對於系統日誌，此值為 `System`。

**日誌串流名稱**  

```
/date/thing/thingName
```
日誌串流名稱使用下列變數：  
+ `date` – 日誌的日期，例如 `2020/12/15`。日誌管理員元件使用 `yyyy/MM/dd` 格式。
+ `thingName` – 核心裝置的名稱。
如果物件名稱包含冒號 (`:`)，則日誌管理員會以加號 () 取代冒號`+`。

<a name="log-manager-considerations-intro"></a>當您使用日誌管理員元件寫入 CloudWatch Logs 時，適用下列考量：<a name="log-manager-considerations"></a>
+ **日誌延遲**
**注意**  
我們建議您升級至日誌管理員 2.3.0 版，以減少輪換和作用中日誌檔案的日誌延遲。當您升級至日誌管理員 2.3.0 時，我們建議您也升級至 Greengrass 核 2.9.1。

  日誌管理員元件 2.2.8 版 （及更舊版本） 只會從輪換的日誌檔案處理和上傳日誌。根據預設， AWS IoT Greengrass 核心軟體會每小時輪換日誌檔案，或在 1，024 KB 之後輪換日誌檔案。因此，日誌管理員元件只會在 AWS IoT Greengrass Core 軟體或 Greengrass 元件寫入超過 1，024 KB 的日誌之後上傳日誌。您可以設定較低的日誌檔案大小限制，讓日誌檔案更頻繁地輪換。這會導致日誌管理員元件更頻繁地將日誌上傳至 CloudWatch Logs。

  日誌管理員元件 2.3.0 版 （及更新版本） 會處理和上傳所有日誌。當您撰寫新的日誌時，日誌管理員 2.3.0 版 （及更新版本） 會處理並直接上傳該作用中日誌檔案，而不是等待輪換。這表示您可以在 5 分鐘內檢視新日誌。

  日誌管理員元件會定期上傳新日誌。根據預設，日誌管理員元件會每 5 分鐘上傳新日誌。您可以設定較低的上傳間隔，讓日誌管理員元件透過設定 ，更頻繁地將日誌上傳至 CloudWatch Logs`periodicUploadIntervalSec`。如需如何設定此定期間隔的詳細資訊，請參閱[組態](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html#log-manager-component-configuration)。

  日誌可以近乎即時地從相同的 Greengrass 檔案系統上傳。如果您需要即時觀察日誌，請考慮使用[檔案系統日誌](#access-local-logs)。
**注意**  
如果您使用不同的檔案系統來寫入日誌，日誌管理員會還原至日誌管理員元件 2.2.8 版及更早版本中的行為。如需有關存取檔案系統日誌的資訊，請參閱[存取檔案系統日誌](https://docs.aws.amazon.com/greengrass/v2/developerguide/monitor-logs.html#access-local-logs)。
+ **時鐘扭曲**

  日誌管理員元件使用標準 Signature 第 4 版簽署程序來建立對 CloudWatch Logs 的 API 請求。如果核心裝置上的系統時間不同步超過 15 分鐘，則 CloudWatch Logs 會拒絕請求。如需詳細資訊，請參閱 *AWS 一般參考* 中的 [Signature 第 4 版簽署程序](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)。

## 存取系統服務日誌
<a name="access-system-service-logs"></a>

如果您[將 AWS IoT Greengrass Core 軟體設定為系統服務](configure-greengrass-core-v2.md#configure-system-service)，您可以檢視系統服務日誌來疑難排解問題，例如軟體無法啟動。

**檢視系統服務日誌 (CLI)**

1. 執行下列命令以檢視 AWS IoT Greengrass Core 軟體系統服務日誌。

------
#### [ Linux or Unix (systemd) ]

   ```
   sudo journalctl -u greengrass.service
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   type C:\greengrass\v2\logs\greengrass.wrapper.log
   ```

------
#### [ PowerShell ]

   ```
   gc C:\greengrass\v2\logs\greengrass.wrapper.log
   ```

------

1. 在 Windows 裝置上， AWS IoT Greengrass 核心軟體會為系統服務錯誤建立個別的日誌檔案。執行下列命令以檢視系統服務錯誤日誌。

------
#### [ Windows Command Prompt (CMD) ]

   ```
   type C:\greengrass\v2\logs\greengrass.err.log
   ```

------
#### [ PowerShell ]

   ```
   gc C:\greengrass\v2\logs\greengrass.err.log
   ```

------

在 Windows 裝置上，您也可以使用**事件檢視器**應用程式來檢視系統服務日誌。

**檢視 Windows 服務日誌 （事件檢視器）**

1. 開啟**事件檢視器**應用程式。

1. 選取 **Windows Logs** 以展開日誌。

1. 選擇**應用程式**以檢視應用程式服務日誌。

1. 尋找並開啟**來源**為 的事件日誌**greengrass**。

## 啟用記錄至 CloudWatch Logs
<a name="enable-cloudwatch-logs"></a>

您可以部署[日誌管理員元件](log-manager-component.md)，以設定核心裝置將日誌寫入 CloudWatch Logs。您可以啟用 CloudWatch Logs for AWS IoT Greengrass Core 軟體日誌，也可以針對特定 Greengrass 元件啟用 CloudWatch Logs。

**注意**  
Greengrass 核心裝置的字符交換角色必須允許核心裝置寫入 CloudWatch Logs，如下列範例 IAM 政策所示。如果您[使用自動資源佈建安裝 AWS IoT Greengrass 核心軟體](quick-installation.md)，則您的核心裝置具有這些許可。  

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

若要設定核心裝置將 AWS IoT Greengrass 核心軟體日誌寫入 CloudWatch Logs，[請建立部署](create-deployments.md)，指定針對`aws.greengrass.LogManager`元件`uploadToCloudWatch`設定為 `true` 的組態更新。 AWS IoT Greengrass 核心軟體日誌包含 [Greengrass 核](greengrass-nucleus-component.md)和[外掛程式元件](develop-greengrass-components.md#component-types)的日誌。

```
{
  "logsUploaderConfiguration": {
    "systemLogsConfiguration": {
      "uploadToCloudWatch": "true"
    }
  }
}
```

若要設定核心裝置將 Greengrass 元件的日誌寫入 CloudWatch Logs，[請建立部署](create-deployments.md)，指定將元件新增至元件記錄組態清單的組態更新。當您將元件新增至此清單時，日誌管理員元件會將其日誌寫入 CloudWatch Logs。元件日誌包含[一般元件和 Lambda 元件](develop-greengrass-components.md#component-types)的日誌。

```
{
  "logsUploaderConfiguration": {
    "componentLogsConfigurationMap": {
      "com.example.HelloWorld": {
      
      }
    }
  }
}
```

部署日誌管理員元件時，您也可以設定磁碟空間限制，以及核心裝置是否在將日誌檔案寫入 CloudWatch Logs 後刪除日誌檔案。如需詳細資訊，請參閱[設定 的記錄 AWS IoT Greengrass](#configure-logging)。

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

您可以設定下列選項來自訂 Greengrass 核心裝置的記錄。若要設定這些選項，[請建立指定 Greengrass 核或日誌管理員元件組態更新的部署](create-deployments.md)。
+ **將日誌寫入 CloudWatch Logs**

  若要遠端疑難排解核心裝置，您可以設定核心裝置將 AWS IoT Greengrass 核心軟體和元件日誌寫入 CloudWatch Logs。若要這樣做，請部署和設定[日誌管理員元件](log-manager-component.md)。如需詳細資訊，請參閱[啟用記錄至 CloudWatch Logs](#enable-cloudwatch-logs)。
+ **刪除上傳的日誌檔案**

  若要減少磁碟空間使用量，您可以將核心裝置設定為在將日誌檔案寫入 CloudWatch Logs 後刪除日誌檔案。如需詳細資訊，請參閱日誌管理員元件的 `deleteLogFileAfterCloudUpload` 參數，您可以為[AWS IoT Greengrass 核心軟體日誌](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[元件日誌](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定 參數。
+ **日誌磁碟空間限制**

  若要限制磁碟空間用量，您可以在核心裝置上設定每個日誌的最大磁碟空間，包括其輪換的日誌檔案。例如，您可以設定 `greengrass.log`和 輪換`greengrass.log`檔案的最大合併磁碟空間。如需詳細資訊，請參閱 Greengrass 核元件的 `logging.totalLogsSizeKB` 參數和日誌管理員元件的 `diskSpaceLimit` 參數，您可以為[AWS IoT Greengrass 核心軟體日誌](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[元件日誌](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定 參數。
+ **日誌檔案大小限制**

  您可以設定每個日誌檔案的檔案大小上限。日誌檔案超過此檔案大小限制後， AWS IoT Greengrass 核心軟體會建立新的日誌檔案。[日誌管理員元件](log-manager-component.md) 2.28 版 （及更舊版本） 只會將輪換的日誌檔案寫入 CloudWatch Logs，因此您可以指定較低的檔案大小限制，以更頻繁地將日誌寫入 CloudWatch Logs。日誌管理員元件 2.3.0 版 （及更新版本） 會處理和上傳所有日誌，而不是等待輪換。如需詳細資訊，請參閱 Greengrass 核元件的[日誌檔案大小限制參數](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-file-size) (`logging.fileSizeKB`)。
+ **日誌層級下限**

  您可以設定 Greengrass 核元件寫入檔案系統日誌的最低日誌層級。例如，您可以指定`DEBUG`關卡日誌以協助故障診斷，也可以指定`ERROR`關卡日誌，以減少核心裝置建立的日誌數量。如需詳細資訊，請參閱 Greengrass 核元件的[日誌層級參數](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-level) (`logging.level`)。

  您也可以設定日誌管理員元件寫入 CloudWatch Logs 的最低日誌層級。例如，您可以指定較高的日誌層級來降低[記錄成本](https://aws.amazon.com/cloudwatch/pricing/)。如需詳細資訊，請參閱日誌管理員元件的 `minimumLogLevel` 參數，您可以為[AWS IoT Greengrass 核心軟體日誌](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)和[元件日誌](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)指定 參數。
+ **檢查日誌以寫入 CloudWatch Logs 的間隔**

  若要增加或減少日誌管理員元件將日誌寫入 CloudWatch Logs 的頻率，您可以設定其檢查要寫入新日誌檔案的間隔。例如，您可以指定比預設 5 分鐘間隔更快的間隔來檢視 CloudWatch Logs 中的日誌。您可以指定較高的間隔來降低成本，因為日誌管理員元件會將日誌檔案批次處理為較少的請求。如需詳細資訊，請參閱日誌管理員元件的[上傳間隔參數](log-manager-component.md#log-manager-component-configuration-periodic-upload-interval-sec) (`periodicUploadIntervalSec`)。
+ **日誌格式**

  您可以選擇 AWS IoT Greengrass Core 軟體是以文字或 JSON 格式寫入日誌。如果您讀取日誌，請選擇文字格式；如果您使用應用程式來讀取或剖析日誌，請選擇 JSON 格式。如需詳細資訊，請參閱 Greengrass 核元件的[日誌格式參數](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-logging-format) (`logging.format`)。
+ **本機檔案系統日誌資料夾**

  您可以將日誌資料夾從 `/greengrass/v2/logs` 變更為核心裝置上的另一個資料夾。如需詳細資訊，請參閱 Greengrass 核元件的[輸出目錄參數](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-log-level) (`logging.outputDirectory`)。

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

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

# 使用 記錄 AWS IoT Greengrass V2 API 呼叫 AWS CloudTrail
<a name="logging-using-cloudtrail"></a>

AWS IoT Greengrass V2 已與 服務整合 AWS CloudTrail，此服務可提供使用者、角色或 AWS 服務在其中採取之動作的記錄 AWS IoT Greengrass Version 2。CloudTrail 會將 的所有 API 呼叫擷取 AWS IoT Greengrass 為事件。擷取的呼叫包括來自 AWS IoT Greengrass 主控台的呼叫，以及對 AWS IoT Greengrass API 操作的程式碼呼叫。

如果您建立線索，您可以將 CloudTrail 事件持續交付至 S3 儲存貯體，包括 的事件 AWS IoT Greengrass。即使您未設定追蹤，依然可以透過 CloudTrail 主控台中的**事件歷史記錄**檢視最新事件。您可以使用 CloudTrail 所收集的資訊來判斷提出的請求 AWS IoT Greengrass、提出請求的 IP 地址、提出請求的人員、提出請求的時間，以及其他詳細資訊。

如需有關 CloudTrail 的相關資訊，請參閱 [AWS CloudTrail 使用者指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。

**Topics**
+ [AWS IoT Greengrass V2 CloudTrail 中的資訊](#service-name-info-in-cloudtrail)
+ [AWS IoT Greengrass CloudTrail 中的資料事件](#greengrass-data-events-cloudtrail)
+ [AWS IoT Greengrass CloudTrail 中的管理事件](#greengrass-management-events-cloudtrail)
+ [了解 AWS IoT Greengrass V2 日誌檔案項目](#understanding-service-name-entries)

## AWS IoT Greengrass V2 CloudTrail 中的資訊
<a name="service-name-info-in-cloudtrail"></a>

建立帳戶 AWS 帳戶 時，您的 上會啟用 CloudTrail。當活動在 中發生時 AWS IoT Greengrass，該活動會與**事件歷史記錄**中的其他服務 AWS 事件一起記錄在 CloudTrail 事件中。您可以檢視、搜尋和下載 AWS 帳戶的最新事件。如需詳細資訊，請參閱[「使用 CloudTrail 事件歷史記錄檢視事件」](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

若要持續記錄 中的事件 AWS 帳戶，包括 的事件 AWS IoT Greengrass，請建立追蹤。*線索*可讓 CloudTrail 將日誌檔案傳遞到 S3 儲存貯體。根據預設，當您在主控台中建立線索時，線索會套用至所有 AWS 區域。線索會記錄 AWS 分割區中所有區域的事件，並將日誌檔案傳送到您指定的 S3 儲存貯體。此外，您可以設定其他 AWS 服務，以進一步分析和處理 CloudTrail 日誌中收集的事件資料。如需詳細資訊，請參閱下列內容：
+ [建立追蹤的概觀](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [CloudTrail 支援的服務和整合](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html)
+ [設定 CloudTrail 的 Amazon SNS 通知](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [接收多個區域的 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html)和[接收多個帳戶的 CloudTrail 日誌檔案](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

CloudTrail 會記錄所有 AWS IoT Greengrass V2 動作，並記錄在 [AWS IoT Greengrass V2 API 參考](https://docs.aws.amazon.com/greengrass/v2/APIReference/Welcome.html)中。例如，對 `CreateComponentVersion`、`CreateDeployment` 和 `CancelDeployment` 動作發出的呼叫會在 CloudTrail 記錄檔案中產生專案。

每一筆事件或日誌專案都會包含產生請求者的資訊。身分資訊可協助您判斷下列事項：
+ 是否使用根或 AWS Identity and Access Management (IAM) 使用者登入資料提出請求。
+ 提出該請求時，是否使用了特定角色或聯合身分使用者的暫時安全憑證。
+ 請求是否由其他 AWS 服務提出。

如需詳細資訊，請參閱 [CloudTrail userIdentity 元素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)。

## AWS IoT Greengrass CloudTrail 中的資料事件
<a name="greengrass-data-events-cloudtrail"></a>

[資料事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)提供有關在資源上執行或在資源中執行的資源操作的資訊 （例如，取得元件版本或部署的組態）。這些也稱為資料平面操作。資料事件通常是大量資料的活動。根據預設，CloudTrail 不會記錄資料事件。CloudTrail **事件歷史記錄**不會記錄資料事件。

資料事件需支付額外的費用。如需 CloudTrail 定價的詳細資訊，請參閱 [AWS CloudTrail 定價](https://aws.amazon.com/cloudtrail/pricing/)。

您可以使用 CloudTrail 主控台 AWS CLI或 CloudTrail API 操作來記錄 AWS IoT Greengrass 資源類型的資料事件。本節中的[表格](#data-events-table)顯示可用的資源類型 AWS IoT Greengrass。
+ 若要使用 CloudTrail 主控台記錄資料事件，請建立[線索](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html#creating-a-trail-in-the-console)或[事件資料存放區](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/query-event-data-store-cloudtrail.html)以記錄資料事件，或[更新現有的線索或事件資料存放區](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-console)以記錄資料事件。

  1. 選擇**資料事件**以記錄資料事件。

  1. 從**資料事件類型**清單中，選擇您要記錄資料事件的資源類型。

  1. 選擇您要使用的日誌選取器範本。您可以記錄資源類型的所有資料事件、記錄所有`readOnly`事件、記錄所有`writeOnly`事件，或建立自訂日誌選取器範本來篩選 `readOnly`、 `eventName`和 `resources.ARN` 欄位。
+ 若要使用 記錄資料事件 AWS CLI，請設定 `--advanced-event-selectors` 參數以將 `eventCategory` 欄位設定為 ，`Data`並將 `resources.type` 欄位設定為 資源類型值 （請參閱 [資料表](#data-events-table))。您可以新增條件來篩選 `readOnly`、 `eventName`和 `resources.ARN` 欄位的值。
  + 若要設定追蹤記錄資料事件，請執行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html)命令。如需詳細資訊，請參閱[使用 記錄線索的資料事件 AWS CLI](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-CLI-trail-examples)。
  + 若要設定事件資料存放區來記錄資料事件，請執行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/create-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/create-event-data-store.html)命令來建立新的事件資料存放區來記錄資料事件，或執行 [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html)命令來更新現有的事件資料存放區。如需詳細資訊，請參閱[使用 記錄事件資料存放區的資料事件 AWS CLI](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-CLI-eds-examples)。

下表列出 AWS IoT Greengrass 資源類型。**資料事件類型 (主控台)** 資料行會顯示從 CloudTrail 主控台上的**資料事件類型**清單中選擇的值。**resources.type 值**欄會顯示值，您會在使用 AWS CLI 或 CloudTrail APIs 設定進階事件選取器時指定此`resources.type`值。**記錄到 CloudTrail 的資料 API** 資料行會針對資源類型顯示記錄到 CloudTrail 的 API 呼叫。


| 資料事件類型 (主控台) | resources.type 值 | 記錄到 CloudTrail 的資料 API | 
| --- | --- | --- | 
| IoT 憑證 | AWS::IoT::Certificate |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT Greengrass 元件版本 |  AWS::GreengrassV2::ComponentVersion  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT Greengrass 部署 |  AWS::GreengrassV2::Deployment  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 
| IoT 物件 | AWS::IoT::Thing |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/greengrass/v2/developerguide/logging-using-cloudtrail.html)  | 

您可以設定進階事件選取器來篩選 `eventName`、`readOnly` 和 `resources.ARN` 欄位，以僅記錄對您重要的事件。

在 上新增篩選條件`eventName`，以包含或排除特定資料 APIs。

如需有關這些欄位的詳細資訊，請參閱 [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html)。

下列範例示範如何使用 設定進階選取器 AWS CLI。使用您自己的資訊取代 *TrailName* 和*區域*。

**Example – 記錄 IoT 物件的資料事件**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
            “Name”: “Log all thing data events”,
            “FieldSelectors”: [
                { “Field”: “eventCategory”, “Equals”: [“Data”] },
                { “Field”: “resources.type”, “Equals”: [“AWS::IoT::Thing”] }
            ]
        }
]’
```

**Example – 篩選特定 IoT 物件 API**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
            “Name”: “Log IoT Greengrass PutCertificateAuthorities API calls”,
            “FieldSelectors”: [
                { “Field”: “eventCategory”, “Equals”: [“Data”] },
                { “Field”: “resources.type”, “Equals”: [“AWS::IoT::Thing”] },
                { “Field”: “eventName”, “Equals”: [“PutCertificateAuthorities”] }
            ]
    }
]’
```

**Example – 記錄所有 Greengrass 資料事件**  

```
aws cloudtrail put-event-selectors --trail-name TrailName --region region \
--advanced-event-selectors \
‘[
    {
        “Name”: “Log all certificate data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::IoT::Certificate”
                ]
            }
        ]
    },
    {
        “Name”: “Log all component version data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::GreengrassV2::ComponentVersion”
                ]
            }
        ]
    },
    {
        “Name”: “Log all deployment version”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::GreengrassV2::Deployment”
                ]
            }
        ]
    },
    {
        “Name”: “Log all thing data events”,
        “FieldSelectors”: [
            {
                “Field”: “eventCategory”,
                “Equals”: [
                    “Data”
                ]
            },
            {
                “Field”: “resources.type”,
                “Equals”: [
                    “AWS::IoT::Thing”
                ]
            }
        ]
    }
]’
```

## AWS IoT Greengrass CloudTrail 中的管理事件
<a name="greengrass-management-events-cloudtrail"></a>

[管理事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-management-events-with-cloudtrail.html#logging-management-events)提供有關在 AWS 帳戶中資源上執行的管理操作的資訊。這些也稱為控制平面操作。根據預設，CloudTrail 記錄管理事件。

AWS IoT Greengrass 會將所有 AWS IoT Greengrass 控制平面操作記錄為管理事件。如需 AWS IoT Greengrass 記錄到 CloudTrail 的 AWS IoT Greengrass 控制平面操作清單，請參閱 [AWS IoT Greengrass API 參考第 2 版](https://docs.aws.amazon.com/greengrass/v2/APIReference/Welcome.html)。

## 了解 AWS IoT Greengrass V2 日誌檔案項目
<a name="understanding-service-name-entries"></a>

權杖是一種組態，能讓事件以日誌檔案的形式交付至您指定的 S3 儲存貯體。CloudTrail 日誌檔案包含一個或多個日誌項目。事件代表來自任何來源的單一請求。其中包含了請求的動作、動作的日期和時間、請求參數等相關資訊。CloudTrail 日誌檔並非依公有 API 呼叫的堆疊追蹤排序，因此不會以任何特定順序出現。

以下範例顯示的是展示 `CreateDeployment` 動作的 CloudTrail 日誌項目。

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDACKCEVSQ6C2EXAMPLE",
        "arn": "arn:aws:iam::123456789012:user/Administrator",
        "accountId": "123456789012",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "Administrator"
    },
    "eventTime": "2021-01-06T02:38:05Z",
    "eventSource": "greengrass.amazonaws.com",
    "eventName": "CreateDeployment",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "203.0.113.0",
    "userAgent": "aws-cli/2.1.9 Python/3.7.9 Windows/10 exe/AMD64 prompt/off command/greengrassv2.create-deployment",
    "requestParameters": {
        "deploymentPolicies": {
            "failureHandlingPolicy": "DO_NOTHING",
            "componentUpdatePolicy": {
                "timeoutInSeconds": 60,
                "action": "NOTIFY_COMPONENTS"
            },
            "configurationValidationPolicy": {
                "timeoutInSeconds": 60
            }
        },
        "deploymentName": "Deployment for MyGreengrassCoreGroup",
        "components": {
            "aws.greengrass.Cli": {
                "componentVersion": "2.0.3"
            }
        },
        "iotJobConfiguration": {},
        "targetArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup"
    },
    "responseElements": {
        "iotJobArn": "arn:aws:iot:us-west-2:123456789012:job/fdfeba1d-ac6d-44ef-ab28-54f684ea578d",
        "iotJobId": "fdfeba1d-ac6d-44ef-ab28-54f684ea578d",
        "deploymentId": "4196dddc-0a21-4c54-a985-66a525f6946e"
    },
    "requestID": "311b9529-4aad-42ac-8408-c06c6fec79a9",
    "eventID": "c0f3aa2c-af22-48c1-8161-bad4a2ab1841",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "eventCategory": "Management",
    "recipientAccountId": "123456789012"
}
```

# 從 AWS IoT Greengrass 核心裝置收集系統運作狀態遙測資料
<a name="telemetry"></a>

系統運作狀態遙測資料是診斷資料，可協助您監控 Greengrass 核心裝置上關鍵操作的效能。您可以建立專案和應用程式，從邊緣裝置擷取、分析、轉換和報告遙測資料。程序工程師等網域專家可以使用這些應用程式來深入了解機群運作狀態。

您可以使用下列方法來從 Greengrass 核心裝置收集遙測資料：
+ 根據預設，**Nucleus 遙測發射器元件** - Greengrass 核心裝置上的[核遙測發射器元件 ](nucleus-emitter-component.md)(`aws.greengrass.telemetry.NucleusEmitter`) 會將遙測資料發佈至`$local/greengrass/telemetry`主題。您可以使用發佈至此主題的資料，在核心裝置上於本機採取行動，即使您的裝置與雲端的連線有限。您也可以選擇性地設定 元件，將遙測資料發佈至您選擇的 AWS IoT Core MQTT 主題。

  您必須將核發射器元件部署至核心裝置，才能發佈遙測資料。將遙測資料發佈至本機主題不會產生相關費用。不過，使用 MQTT 主題將資料發佈到 AWS 雲端 需要[AWS IoT Core 定價](https://aws.amazon.com/iot-core/pricing/)。

  <a name="greengrass-software-catalog-influxdb-telemetry-publisher"></a>AWS IoT Greengrass 提供多種[社群元件](greengrass-software-catalog.md)，可協助您使用 InfluxDB 和 Grafana 在本機核心裝置上分析和視覺化遙測資料。這些元件使用來自 核發射器元件的遙測資料。如需詳細資訊，請參閱 [InfluxDB 發佈者元件](https://github.com/awslabs/aws-greengrass-labs-telemetry-influxdbpublisher)的 README。
+ **遙測代理**程式 - Greengrass 核心裝置上的遙測代理程式會收集本機遙測資料，並將其發佈至 Amazon EventBridge，而不需要任何客戶互動。核心裝置會盡最大努力將遙測資料發佈至 EventBridge。例如，核心裝置可能無法在離線時交付遙測資料。

  預設會為所有 Greengrass 核心裝置啟用遙測代理程式功能。一旦您設定 Greengrass 核心裝置，就會自動開始接收資料。除了您的資料連結成本之外，從核心裝置到 的資料傳輸 AWS IoT Core 是免費的。這是因為代理程式發佈到 AWS 預留主題。不過，視您的使用案例而定，您可能會在接收或處理資料時產生成本。
**注意**  
Amazon EventBridge 是一種事件匯流排服務，可用來將應用程式與各種來源的資料連線，例如 Greengrass 核心裝置。如需詳細資訊，請參閱《Amazon EventBridge 使用者指南》**中的[什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)

為了確保 AWS IoT Greengrass Core 軟體正常運作， AWS IoT Greengrass 會將資料用於開發和品質改善目的。此功能也有助於通知新的和增強的邊緣功能。 最多可 AWS IoT Greengrass 保留七天的遙測資料。

本節說明如何設定和使用遙測代理程式。如需設定核遙測發射器元件的資訊，請參閱 [Nucleus 遙測發射器](nucleus-emitter-component.md)。

**Topics**
+ [遙測指標](#telemetry-metrics)
+ [設定遙測代理程式設定](#configure-telemetry-agent-settings)
+ [訂閱 EventBridge 中的遙測資料](#subscribe-for-telemetry-data)

## 遙測指標
<a name="telemetry-metrics"></a>

下表說明遙測代理程式發佈的指標。


| 名稱 | 描述 | 
| --- | --- | 
|  **系統**  | 
|  `SystemMemUsage`  |  Greengrass 核心裝置上所有應用程式目前使用的記憶體數量，包括作業系統。  | 
|  `CpuUsage`  |  Greengrass 核心裝置上所有應用程式目前使用的 CPU 數量，包括作業系統。  | 
|  `TotalNumberOfFDs`  |  Greengrass 核心裝置的作業系統存放的檔案描述項數量。一個檔案描述項可唯一識別一個開啟的檔案。  | 
|  **Greengrass 核**  | 
|  `NumberOfComponentsRunning`  |  在 Greengrass 核心裝置上執行的元件數量。  | 
|  `NumberOfComponentsErrored`  |  Greengrass 核心裝置上處於錯誤狀態的元件數量。  | 
|  `NumberOfComponentsInstalled`  |  安裝在 Greengrass 核心裝置上的元件數量。  | 
|  `NumberOfComponentsStarting`  |  在 Greengrass 核心裝置上啟動的元件數量。  | 
|  `NumberOfComponentsNew`  |  Greengrass 核心裝置上的新元件數量。  | 
|  `NumberOfComponentsStopping`  |  Greengrass 核心裝置上停止的元件數量。  | 
|  `NumberOfComponentsFinished`  |  Greengrass 核心裝置上完成的元件數量。  | 
|  `NumberOfComponentsBroken`  |  Greengrass 核心裝置上損壞的元件數量。  | 
|  `NumberOfComponentsStateless`  |  Greengrass 核心裝置上無狀態的元件數量。  | 
|  **用戶端裝置驗證** – 此功能需要 v2.4.0 或更新版本的用戶端裝置驗證元件。  | 
|  `VerifyClientDeviceIdentity.Success`  |  驗證用戶端裝置身分是否成功的次數。  | 
|  `VerifyClientDeviceIdentity.Failure`  |  驗證用戶端裝置身分失敗的次數。  | 
|  `AuthorizeClientDeviceActions.Success`  |  用戶端裝置獲授權完成請求動作的次數。  | 
|  `AuthorizeClientDeviceActions.Failure`  |  用戶端裝置無權完成請求動作的次數。  | 
|  `GetClientDeviceAuthToken.Success`  |  用戶端裝置成功驗證的次數。  | 
|  `GetClientDeviceAuthToken.Failure`  |  用戶端裝置無法驗證的次數。  | 
|  `SubscribeToCertificateUpdates.Success`  |  憑證更新的成功訂閱數量。  | 
|  `SubscribeToCertificateUpdates.Failure`  |  嘗試訂閱憑證更新的失敗次數。  | 
|  `ServiceError`  |  用戶端裝置驗證中未處理的內部錯誤數目。  | 
|  **串流管理員** – 此功能需要 2.7.0 版或更新版本的 Greengrass 核元件。  | 
|  `BytesAppended`  |  附加至串流管理員的資料位元組數。  | 
|  `BytesUploadedToIoTAnalytics`  |  串流管理員匯出至頻道的資料位元組數 AWS IoT Analytics。  | 
|  `BytesUploadedToKinesis`  |  串流管理員匯出至 Amazon Kinesis Data Streams 中串流的資料位元組數。  | 
|  `BytesUploadedToIoTSiteWise`  |  串流管理員匯出至資產屬性的資料位元組數 AWS IoT SiteWise。  | 
|  `BytesUploadedToS3`  |  串流管理員匯出至 Amazon S3 物件的資料位元組數。  | 
|  **系統指標** – 此功能需要 2.15.0 版或更新版本的 Greengrass 核元件。  | 
|  `CPUArchitecture`  |  裝置中央處理單元架構。  | 
|  `Family`  |  裝置作業系統系列 （僅限 Windows)。  | 
|  `KernelVersion`  |  裝置核心版本 （僅限 Unix)。  | 
|  `KnowledgeBaseArticles`  |  安裝在裝置上的知識庫文章 （僅限 Windows)。  | 
|  `OSBuildMajor`  |  作業系統版本的主要建置編號 （僅限 Windows)。  | 
|  `OSBuildMinor`  |  作業系統版本的次要建置編號 （僅限 Windows)。  | 
|  `OSName`  |  裝置作業系統的名稱。  | 
|  `OSVersion`  |  裝置作業系統的行銷版本。  | 

## 設定遙測代理程式設定
<a name="configure-telemetry-agent-settings"></a>

遙測代理程式使用以下預設設定：
+ 遙測代理程式每小時彙總一次遙測資料。
+ 遙測代理程式每 24 小時發佈一次遙測訊息。

遙測代理程式會使用服務品質 (QoS) 層級為 0 的 MQTT 通訊協定來發佈資料，這表示它不會確認交付或重試發佈嘗試。遙測訊息與目標為 之訂閱的其他訊息共用 MQTT 連線 AWS IoT Core。

除了您的資料連結成本之外，從核心到 的資料傳輸 AWS IoT Core 是免費的。這是因為代理程式發佈到 AWS 預留主題。不過，視您的使用案例而定，您可能會在接收或處理資料時產生成本。

您可以啟用或停用每個 Greengrass 核心裝置的遙測代理程式功能。您也可以設定核心裝置彙總和發佈資料的間隔。若要設定遙測，請在部署 [Greengrass 核元件](greengrass-nucleus-component.md)時自訂[遙測組態參數](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-telemetry)。

## 訂閱 EventBridge 中的遙測資料
<a name="subscribe-for-telemetry-data"></a>

您可以在 Amazon EventBridge 中建立規則，定義如何處理從 Greengrass 核心裝置上的遙測代理程式發佈的遙測資料。EventBridge 收到資料時，會叫用規則中定義的目標動作。例如，您可以建立事件規則來傳送通知、存放事件資訊、採取修正動作或叫用其他事件。

### 遙測事件
<a name="events-message-format"></a>

遙測事件使用以下格式。

```
{
  "version": "0",
  "id": "a09d303e-2f6e-3d3c-a693-8e33f4fe3955",
  "detail-type": "Greengrass Telemetry Data",
  "source": "aws.greengrass",
  "account": "123456789012",
  "time": "2020-11-30T20:45:53Z",
  "region": "us-east-1",
  "resources": [],
  "detail": {
    "ThingName": "MyGreengrassCore",
    "Schema": "2020-07-30",
    "ADP": [
      {
        "TS": 1602186483234,
        "NS": "SystemMetrics",
        "M": [
          {
            "N": "TotalNumberOfFDs",
            "Sum": 6447.0,
            "U": "Count"
          },
          {
            "N": "CpuUsage",
            "Sum": 15.458333333333332,
            "U": "Percent"
          },
          {
            "N": "SystemMemUsage",
            "Sum": 10201.0,
            "U": "Megabytes"
          }
        ]
      },
      {
        "TS": 1602186483234,
        "NS": "GreengrassComponents",
        "M": [
          {
            "N": "NumberOfComponentsStopping",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsStarting",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsBroken",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsFinished",
            "Sum": 1.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsInstalled",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsRunning",
            "Sum": 7.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsNew",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsErrored",
            "Sum": 0.0,
            "U": "Count"
          },
          {
            "N": "NumberOfComponentsStateless",
            "Sum": 0.0,
            "U": "Count"
          }
        ]
      },
      {
        "TS": 1602186483234,
        "NS": "aws.greengrass.ClientDeviceAuth",
        "M": [
          {
            "N": "VerifyClientDeviceIdentity.Success",
            "Sum": 3.0,
            "U": "Count"
          },
          {
            "N": "VerifyClientDeviceIdentity.Failure",
            "Sum": 1.0,
            "U": "Count"
          },
          {
            "N": "AuthorizeClientDeviceActions.Success",
            "Sum": 20.0,
            "U": "Count"
          },
          {
            "N": "AuthorizeClientDeviceActions.Failure",
            "Sum": 5.0,
            "U": "Count"
          },
          {
            "N": "GetClientDeviceAuthToken.Success",
            "Sum": 5.0,
            "U": "Count"
          },
          {
            "N": "GetClientDeviceAuthToken.Failure",
            "Sum": 2.0,
            "U": "Count"
          },
          {
            "N": "SubscribeToCertificateUpdates.Success",
            "Sum": 10.0,
            "U": "Count"
          },
          {
            "N": "SubscribeToCertificateUpdates.Failure",
            "Sum": 1.0,
            "U": "Count"
          },
          {
            "N": "ServiceError",
            "Sum": 3.0,
            "U": "Count"
          }
        ]
      },
      {
        "TS": 1602186483234,
        "NS": "aws.greengrass.StreamManager",
        "M": [
          {
            "N": "BytesAppended",
            "Sum": 157745524.0,
            "U": "Bytes"
          },
          {
            "N": "BytesUploadedToIoTAnalytics",
            "Sum": 149012.0,
            "U": "Bytes"
          },
          {
            "N": "BytesUploadedToKinesis",
            "Sum": 12192.0,
            "U": "Bytes"
          },
          {
            "N": "BytesUploadedToIoTSiteWise",
            "Sum": 13321.0,
            "U": "Bytes"
          },
          {
            "N": "BytesUploadedToS3",
            "Sum": 12213.0,
            "U": "Bytes"
          }
        ]
      }
      {
        "TS": 1750104449426,
        "NS": "SystemMetrics",
        "M": [
          {
            "N": "KernelVersion",
            "Sum": 1,
            "U": "6.1.140-154.222.amzn2023.x86_64"
          },
          {
            "N": "OSVersion",
            "Sum": 1,
            "U": "2023.7.20250609"
          },
          {
            "N": "OSName",
            "Sum": 1,
            "U": "Amazon Linux"
          },
          {
            "N": "CPUArchitecture",
            "Sum": 1,
            "U": "Broadwell (Server)"
          },
        ]
      }
    ]
  }
}
```<a name="telemetry-agent-adp-array-config"></a>

`ADP` 陣列包含具有下列屬性的彙總資料點清單：

`TS`  
收集資料時的時間戳記。

`NS`  
指標命名空間。

`M`  
指標清單。指標包含下列屬性：    
`N`  
指標的名稱  
`Sum`  
此遙測事件中指標值的總和。  
`U`  
指標值的單位。

如需每個指標的詳細資訊，請參閱[遙測指標](#telemetry-metrics)。

### 建立 EventBridge 規則的先決條件
<a name="create-events-rule-prerequisites-telemetry"></a>

為 建立 EventBridge 規則之前 AWS IoT Greengrass，您應該執行下列動作：
+ 熟悉 Eventbridge 中的事件、規則和目標。
+ 建立和設定 EventBridge 規則調用[的目標](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-targets.html)。規則可以叫用許多類型的目標，例如 Amazon Kinesis 串流、 AWS Lambda 函數、Amazon SNS 主題和 Amazon SQS 佇列。

  您的 EventBridge 規則和相關聯的目標必須位於您建立 Greengrass 資源 AWS 區域 的 中。如需詳細資訊，請參閱《AWS 一般參考》**中的[服務端點和配額](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html)。

如需詳細資訊，請參閱*《Amazon EventBridge 使用者指南》*中的[什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 和 [Amazon EventBridge 入門](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)。

### 建立事件規則以取得遙測資料 （主控台）
<a name="create-telemetry-event-rule-console"></a>

使用下列步驟來使用 AWS 管理主控台 建立 EventBridge 規則，以接收 Greengrass 核心裝置發佈的遙測資料。藉由這個規則，Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。如需詳細資訊，請參閱《Amazon [ EventBridge 使用者指南》中的從 AWS 資源建立事件觸發的](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) EventBridge 規則。 * EventBridge *

1. 開啟 [Amazon EventBridge 主控台](https://console.aws.amazon.com/events/)，然後選擇**建立規則**。

1. 在 **Name and description (名稱和描述)**，輸入規則的名稱和描述。

1. 在 **Define pattern (定義模式)**，設定規則模式。

   1. 選擇 **Event pattern** (事件模式)。

   1. 選擇**Pre-defined pattern by service (依服務預先定義模式)**。

   1. 在 **Service provider** (服務提供者)，選擇 **AWS**。

   1. 在 **Service Name (服務名稱)**，選擇 **Greengrass**。

   1. 針對**事件類型**，選取 **Greengrass 遙測資料**。

1. 在 **Select event bus (選取事件匯流排)**，保留預設的事件匯流排選項。

1. 在 **Select targets (選取目標)**，設定您的目標。下列範例使用 Amazon SQS 佇列，但您可以設定其他目標類型。

   1. 針對**目標**，選擇 **SQS 佇列**。

   1. 針對**佇列\$1**，選擇您的目標佇列。

1. 在 **Tags - optional (標籤 - 選用)**，定義規則的標籤，或將欄位留白。

1. 選擇**建立**。

### 建立事件規則以取得遙測資料 (CLI)
<a name="create-telemetry-event-rule-cli"></a>

使用下列步驟來使用 AWS CLI 建立 EventBridge 規則，以接收 Greengrass 核心裝置發佈的遙測資料。藉由這個規則，Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。

1. 建立 規則。
   + 以核心裝置的物件名稱取代 *thing-name*。

------
#### [ Linux or Unix ]

   ```
   aws events put-rule \
     --name MyGreengrassTelemetryEventRule \
     --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws events put-rule ^
     --name MyGreengrassTelemetryEventRule ^
     --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"
   ```

------
#### [ PowerShell ]

   ```
   aws events put-rule `
     --name MyGreengrassTelemetryEventRule `
     --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"thing-name\"]}}"
   ```

------

   模式省略的屬性會遭到忽略。

1. 新增主題作為規則目標。下列範例使用 Amazon SQS，但您可以設定其他目標類型。
   + 將 *queue-arn* 取代為 Amazon SQS 佇列的 ARN。

------
#### [ Linux or Unix ]

   ```
   aws events put-targets \
     --rule MyGreengrassTelemetryEventRule \
     --targets "Id"="1","Arn"="queue-arn"
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws events put-targets ^
     --rule MyGreengrassTelemetryEventRule ^
     --targets "Id"="1","Arn"="queue-arn"
   ```

------
#### [ PowerShell ]

   ```
   aws events put-targets `
     --rule MyGreengrassTelemetryEventRule `
     --targets "Id"="1","Arn"="queue-arn"
   ```

------
**注意**  
若要允許 Amazon EventBridge 叫用您的目標佇列，您必須將資源型政策新增至主題。如需詳細資訊，請參閱[《Amazon EventBridge 使用者指南》中的 Amazon SQS 許可](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sqs-permissions)。 * EventBridge *

如需詳細資訊，請參閱*《Amazon EventBridge 使用者指南》*中的 [EventBridge 中的事件和事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)。

# 取得部署和元件運作狀態通知
<a name="deployment-health-notifications"></a>

Amazon EventBridge 事件規則會針對裝置收到的 Greengrass 部署和裝置上已安裝的元件，提供您狀態變更的通知。EventBridge 提供近乎即時的系統事件串流，描述 AWS 資源的變更。 *會盡最大努力*將這些事件 AWS IoT Greengrass 傳送至 EventBridge。這表示 會 AWS IoT Greengrass 嘗試將所有事件傳送至 EventBridge，但在某些情況下，可能不會傳送事件。此外， AWS IoT Greengrass 可能會傳送指定事件的多個副本，這表示您的事件接聽程式可能不會按照事件發生的順序接收事件。

**注意**  
Amazon EventBridge 是一種事件匯流排服務，可用來將應用程式與各種來源的資料連線，例如 [Greengrass 核心裝置](telemetry.md)、部署和元件通知。如需詳細資訊，請參閱《Amazon EventBridge 使用者指南》**中的[什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html)

**Topics**
+ [部署狀態變更事件](#deployment.events-message-format)
+ [元件狀態變更事件](#component.events-message-format)
+ [建立 EventBridge 規則的先決條件](#create-events-rule-prereqs)
+ [設定裝置運作狀態通知 （主控台）](#create-events-rule-console)
+ [設定裝置運作狀態通知 (CLI)](#create-events-rule-cli)
+ [設定裝置運作狀態通知 (CloudFormation)](#create-events-rule-cloudformation)
+ [另請參閱](#deployment-notifications-see-also)

## 部署狀態變更事件
<a name="deployment.events-message-format"></a>

AWS IoT Greengrass 當部署進入下列狀態時發出事件：`FAILED`、`SUCCEEDED``COMPLETED`、、 `REJECTED`和 `CANCELED`。您可以建立 EventBridge 規則，針對所有狀態轉換或轉換至您指定的狀態執行該規則。當部署進入啟動規則的狀態時，EventBridge 會叫用規則中定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作，或啟動其他事件來回應狀態變更。例如，您可以為下列使用案例建立規則：
+ 啟動部署後操作，例如下載資產和通知人員。
+ 部署成功或失敗後傳送通知。
+ 發佈關於部署事件的自訂指標。

部署狀態變更的[事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)會使用下列格式：

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Effective Deployment Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail":{    
        "deploymentId": "4f38f1a7-3dd0-42a1-af48-EXAMPLE09681",
        "coreDeviceExecutionStatus": "FAILED|SUCCEEDED|COMPLETED|REJECTED|CANCELED",
        "statusDetails": {
          "errorStack": ["DEPLOYMENT_FAILURE", "ARTIFACT_DOWNLOAD_ERROR", "S3_ERROR", "S3_ACCESS_DENIED", "S3_HEAD_OBJECT_ACCESS_DENIED"],
          "errorTypes": ["DEPENDENCY_ERROR", "PERMISSION_ERROR"],
        },
        "reason": "S3_HEAD_OBJECT_ACCESS_DENIED: FAILED_NO_STATE_CHANGE: Failed to download artifact name: 's3://pentest27/nucleus/281/aws.greengrass.nucleus.zip' for component aws.greengrass.Nucleus-2.8.1, reason: S3 HeadObject returns 403 Access Denied. Ensure the IAM role associated with the core device has a policy granting s3:GetObject. null (Service: S3, Status Code: 403, Request ID: HR94ZNT2161DAR58, Extended Request ID: wTX4DDI+qigQt3uzwl9rlnQiYlBgwvPm/KJFWeFAn9t1mnGXTms/luLCYANgq08RIH+x2H+hEKc=)"
     }
}
```

您可以建立規則和事件，以更新部署狀態。當部署完成 `FAILED`、`SUCCEEDED`、`REJECTED`、 或 時`COMPLETED`，會啟動事件`CANCELED`。如果核心裝置上的部署失敗，您將收到詳細的回應，說明部署失敗的原因。如需部署錯誤代碼的詳細資訊，請參閱 [詳細部署錯誤代碼](troubleshooting-deployment.md)。

**部署狀態**  
+ `FAILED`。 部署失敗。
+ `SUCCEEDED`。 針對物件群組的部署已成功完成。
+ `COMPLETED`。 目標為物件的部署已成功完成。
+ `REJECTED`。 部署遭拒。如需詳細資訊，請參閱 `statusDetails` 欄位。
+ `CANCELED`。 使用者已取消部署。

事件可能會重複或不按順序。若要判斷事件的順序，請使用 `time` 屬性。

如需 `errorStacks`和 中錯誤代碼的完整清單`errorTypes`，請參閱 [詳細部署錯誤代碼](troubleshooting-deployment.md)和 [詳細的元件狀態碼](troubleshooting-component.md)。

## 元件狀態變更事件
<a name="component.events-message-format"></a>

對於 2.12.2 版和更早 AWS IoT Greengrass 版本，Greengrass 會在元件進入下列狀態時發出事件： `ERRORED`和 `BROKEN`。對於 Greengrass 核版本 2.12.3 和更新版本，Greengrass 會在元件進入下列狀態時發出事件：`ERRORED`、`RUNNING`、 `BROKEN`和 `FINISHED`。當部署完成時，Greengrass 也會發出事件。您可以建立 EventBridge 規則，針對所有狀態轉換或轉換至您指定的狀態執行該規則。當已安裝的元件進入啟動規則的狀態時，EventBridge 會叫用規則中定義的目標動作。這可讓您傳送通知、擷取事件資訊、採取修正動作，或啟動其他事件來回應狀態變更。

元件狀態變更[的事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/CloudWatchEventsandEventPatterns.html)使用以下格式：

------
#### [ Greengrass nucleus v2.12.2 and earlier ]

元件狀態： `ERRORED` 或 `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

------
#### [ Greengrass nucleus v2.12.3 and later ]

元件狀態： `ERRORED` 或 `BROKEN`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "ERRORED|BROKEN",
            "lifecycleStatusCodes": ["STARTUP_ERROR"],
            "lifecycleStateDetails": "An error occurred during startup. The startup script exited with code 1."
          }
        ]
    }
}
```

元件狀態： `RUNNING` 或 `FINISHED`  

```
{
    "version":"0",
    "id":" cd4d811e-ab12-322b-8255-EXAMPLEb1bc8",
    "detail-type":"Greengrass V2 Installed Component Status Change",
    "source":"aws.greengrass",
    "account":"123456789012",
    "region":"us-west-2",
    "time":"2018-03-22T00:38:11Z",
    "resources":["arn:aws:greengrass:us-east-1:123456789012:coreDevices:MyGreengrassCore"],
    "detail": {
       "components": [
          {
            "componentName": "MyComponent",
            "componentVersion": "1.0.0",
            "root": true,
            "lifecycleState": "RUNNING|FINISHED",
            "lifecycleStateDetails": null
          }
        ]
    }
}
```

------

您可以建立規則和事件，以更新已安裝元件的狀態。當元件變更裝置上的狀態時，會啟動事件。您將會收到詳細的回應，說明元件發生錯誤或損壞的原因。您也會收到狀態碼，指出失敗的原因。如需元件狀態碼的詳細資訊，請參閱 [詳細的元件狀態碼](troubleshooting-component.md)。

## 建立 EventBridge 規則的先決條件
<a name="create-events-rule-prereqs"></a>

為 建立 EventBridge 規則之前 AWS IoT Greengrass，請執行下列動作：
+ 熟悉 Eventbridge 中的事件、規則和目標。
+ 建立和設定將由您的 Eventbridge 規則叫用的目標。規則可以叫用許多類型的目標，包括：
  + Amazon Simple Notification Service (Amazon SNS)
  + AWS Lambda 函數
  + Amazon Kinesis Video Streams
  + Amazon Simple Queue Service (Amazon SQS) 佇列

如需詳細資訊，請參閱*《Amazon EventBridge 使用者指南》*中的[什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) 和 [Amazon EventBridge 入門](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-getting-set-up.html)。

## 設定裝置運作狀態通知 （主控台）
<a name="create-events-rule-console"></a>

使用下列步驟建立 EventBridge 規則，在群組的部署狀態變更時發佈 Amazon SNS 主題。藉由這個規則，Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。如需詳細資訊，請參閱《Amazon [ EventBridge 使用者指南》中的從 AWS 資源建立事件觸發的](https://docs.aws.amazon.com/eventbridge/latest/userguide/create-eventbridge-rule.html) EventBridge 規則。 * EventBridge *

1. 開啟 [Amazon EventBridge 主控台](https://console.aws.amazon.com/events/)。

1. 在導覽窗格中，選擇**規則**。

1. 選擇**建立規則**。

1. 輸入規則的名稱和描述。

   在同一個區域和同一個事件匯流排上，規則不能與另一個規則同名。

1. 針對**事件匯流排**，選擇要與此規則建立關聯的事件匯流排。如果您想要此規則匹配來自您的帳戶的事件，請選取 **AWS 預設事件匯流排**。當您帳戶中 AWS 的服務發出事件時，一律會前往您帳戶的預設事件匯流排。

1. 針對**規則類型**，選擇**具有事件模式的規則**。

1. 選擇**下一步**。

1. 在**事件來源**，選擇 **AWS 事件**。

1. 針對**事件模式**，選擇 **AWS 服務**。

1. 針對**AWS 服務**，選擇 Greengrass。

1. 針對**事件類型**，從下列選項中選擇：
   + 針對部署事件，選擇 **Greengrass V2 有效部署狀態變更**。
   + 針對元件事件，選擇 **Greengrass V2 已安裝元件狀態變更**。

1. 選擇**下一步**。

1. 在**目標類型**欄位中，選擇 **AWS 服務**。

1. 針對**選取目標**，設定您的目標。此範例使用 Amazon SNS 主題，但您可以設定其他目標類型來傳送通知。

   1. 在 **Target (目標)**，選擇 **SNS topic (SNS 主題)**。

   1. 在 **Topic (主題)**，選擇您的目標主題。

   1. 選擇**下一步**。

1. 選擇**下一步**。

1. 檢閱規則的詳細資訊，然後選擇**建立規則**。

## 設定裝置運作狀態通知 (CLI)
<a name="create-events-rule-cli"></a>

使用下列步驟建立 EventBridge 規則，在發生 Greengrass 狀態變更事件時發佈 Amazon SNS 主題。藉由這個規則，Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。

1. 建立 規則。
   + 對於部署狀態變更事件。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Effective Deployment Status Change\"]}"
     ```
   + 對於元件狀態變更事件。

     ```
     aws events put-rule \
       --name TestRule \
       --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail-type\": [\"Greengrass V2 Installed Component Status Change\"]}"
     ```

   模式省略的屬性會遭到忽略。

1. 新增主題作為規則目標。
   + 將 *topic-arn* 取代為 Amazon SNS 主題的 ARN。

   ```
   aws events put-targets \
     --rule TestRule \
     --targets "Id"="1","Arn"="topic-arn"
   ```
**注意**  
若要讓 Amazon EventBridge 呼叫您的目標主題，您必須將以資源為基礎的政策新增到您的主題。如需詳細資訊，請參閱*《Amazon EventBridge 使用者指南》*中的 [Amazon SNS 許可](https://docs.aws.amazon.com/eventbridge/latest/userguide/resource-based-policies-eventbridge.html#sns-permissions)。

如需詳細資訊，請參閱*《Amazon EventBridge 使用者指南》*中的 [EventBridge 中的事件和事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-and-event-patterns.html)。

## 設定裝置運作狀態通知 (CloudFormation)
<a name="create-events-rule-cloudformation"></a>

使用 CloudFormation 範本建立 EventBridge 規則，傳送 Greengrass 群組部署狀態變更的通知。如需詳細資訊，請參閱《 *AWS CloudFormation 使用者指南*》中的 [Amazon EventBridge 資源類型參考](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_Events.html)。

## 另請參閱
<a name="deployment-notifications-see-also"></a>
+ [檢查裝置部署狀態](check-deployment-status.md#check-device-deployment-status)
+ 《[Amazon EventBridge 使用者指南》中的什麼是 Amazon EventBridge？](https://docs.aws.amazon.com/eventbridge/latest/userguide/what-is-amazon-eventbridge.html) * EventBridge *

# 檢查 Greengrass 核心裝置狀態
<a name="device-status"></a>

Greengrass 核心裝置報告其軟體元件的狀態 AWS IoT Greengrass。您可以檢查每個裝置的運作狀態摘要，也可以檢查每個裝置上每個元件的狀態。

核心裝置的運作狀態如下：
+ `HEALTHY` – AWS IoT Greengrass 核心軟體和所有元件在核心裝置上執行時不會發生問題。
+ `UNHEALTHY` – AWS IoT Greengrass 核心軟體或元件在核心裝置上處於錯誤狀態。

**注意**  
AWS IoT Greengrass 倚賴個別裝置傳送狀態更新至 AWS 雲端。如果 AWS IoT Greengrass Core 軟體未在裝置上執行，或裝置未連線至 AWS 雲端，則該裝置回報的狀態可能不會反映其目前狀態。狀態時間戳記指出裝置狀態上次更新的時間。  
核心裝置會在下列時間傳送狀態更新：  
 AWS IoT Greengrass 核心軟體啟動時
當核心裝置從 接收部署時 AWS 雲端
對於 Greengrass 核 2.12.2 及更早版本，核心裝置會在核心裝置上任何元件的狀態變成 `ERRORED`或 `BROKEN`
對於 Greengrass 核 2.12.3 和更新版本，核心裝置會在核心裝置上任何元件的狀態變成 `ERRORED`、`RUNNING`、 `BROKEN`或 時傳送狀態更新 `FINISHED`
您可以[設定的定期間隔](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration-fss)，預設為 24 小時
對於 AWS IoT Greengrass Core v2.7.0 和更新版本，核心裝置會在本機部署和雲端部署發生時傳送狀態更新

**Topics**
+ [檢查核心裝置的運作狀態](#check-core-device-health-status)
+ [檢查核心裝置群組的運作狀態](#check-core-device-group-health-status)
+ [檢查核心裝置元件狀態](#check-core-device-component-status)

## 檢查核心裝置的運作狀態
<a name="check-core-device-health-status"></a>

您可以檢查個別核心裝置的狀態。

**檢查核心裝置的狀態 (AWS CLI)**
+ 執行下列命令來擷取裝置的狀態。將 *coreDeviceName* 取代為要查詢的核心裝置名稱。

  ```
  aws greengrassv2 get-core-device --core-device-thing-name coreDeviceName
  ```

  回應包含核心裝置的相關資訊，包括其狀態。

## 檢查核心裝置群組的運作狀態
<a name="check-core-device-group-health-status"></a>

您可以檢查核心裝置群組 （物件群組） 的狀態。

**檢查裝置群組的狀態 (AWS CLI)**
+ 執行下列命令來擷取多個核心裝置的狀態。將命令中的 ARN 取代為要查詢之物件群組的 ARN。

  ```
  aws greengrassv2 list-core-devices --thing-group-arn "arn:aws:iot:region:account-id:thinggroup/thingGroupName"
  ```

  回應包含物件群組中核心裝置的清單。清單中的每個項目都包含核心裝置的狀態。

## 檢查核心裝置元件狀態
<a name="check-core-device-component-status"></a>

您可以在核心裝置上檢查軟體元件的狀態，例如生命週期狀態。如需元件生命週期狀態的詳細資訊，請參閱[開發 AWS IoT Greengrass 元件](develop-greengrass-components.md)。

**若要檢查核心裝置上的元件狀態 (AWS CLI)**
+ 執行下列命令來擷取核心裝置上的元件狀態。將 *coreDeviceName* 取代為要查詢的核心裝置名稱。

  ```
  aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  ```

  回應包含在核心裝置上執行的元件清單。清單中的每個項目都包含元件的生命週期狀態，包括資料的目前狀態，以及 Greengrass 核心裝置上次將包含特定元件的訊息傳送到雲端的時間。回應也會包含將元件帶入 Greengrass 核心裝置的最新部署來源。
**注意**  
此命令會擷取 Greengrass 核心裝置執行的元件分頁清單。根據預設，此清單不包含部署為其他元件相依性的元件。您可以將 `topologyFilter` 參數設定為 ，在回應中包含相依性`ALL`。