

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

# 從 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)。