從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核心裝置收集系統健康狀態遙測資料

系統健康情況遙測資料是診斷資料,可協助您監視 Greengrass 核心裝置上關鍵作業的效能。Greengrass 核心上的遙測代理程式會收集本機遙測資料,並將其發佈到 Amazon, EventBridge 而不需要任何客戶互動。核心裝置會盡可能 EventBridge 發佈遙測資料。例如,核心裝置可能無法在離線時傳送遙測資料。

注意

Amazon EventBridge 是匯流排服務,可讓您用於將應用程式與來自各種來源的資料互相連。如需詳細資訊,請參閱什麼是 Amazon Events EventBridge?亞馬遜 EventBridge 用戶指南

您可以建立專案和應用程式,從邊緣裝置擷取、分析、轉換和報告遙測資料。流程工程師等領域專家可以使用這些應用程式來深入瞭解機隊健康狀況。

為了確保 Greengrass 邊緣元件正常運作,請將資料AWS IoT Greengrass用於開發和品質改善目的。此功能也有助於提供新的和增強的邊緣功能。 AWS IoT Greengrass最多只能保留遙測資料。

此功能可在AWS IoT Greengrass核心軟體 v1.11.0 中使用,並且預設情況下會針對所有 Greengrass 核心啟用,包括現有的核心。一旦升級至AWS IoT Greengrass核心軟體 v1.11.0 或更新版本,就會自動開始接收資料。

如需如何存取或管理發行遙測資料的資訊,請參閱訂閱接收遙測資料

遙測代理程式會收集並發佈下列系統度量。

遙測指標
名稱 描述 來源

SystemMemUsage

Greengrass 核心裝置 (包括作業系統) 上所有應用程式目前使用的記憶體容量。

系統

CpuUsage

Greengrass 核心裝置 (包括作業系統) 上所有應用程式目前正在使用的 CPU 數量。

系統

TotalNumberOfFDs

Greengrass 核心裝置作業系統所儲存的檔案描述元數目。一個文件描述符唯一標識一個打開的文件。

系統

LambdaOutOfMemory

導致 Lambda 函數記憶體不足的執行次數。

系統

DroppedMessageCount

目的地捨棄的郵件數目AWS IoT Core。

GGCloudSpooler系統元件

LambdaTimeout

執行使用者定義 Lambda

使用者定義的 Lambda 函數和系統AWS 雲端

LambdaUngracefullyKilled

使用者定義 Lambda 函數無法完成的執行次數。

使用者定義的 Lambda 函數和系統AWS 雲端

LambdaError

導致使用者定義 Lambda 函數寫入錯誤記錄的執行次數。

使用者定義的 Lambda 函數和系統AWS 雲端

BytesAppended

附加到串流管理員的位元組數量。

GGStreamManager系統元件

BytesUploadedToIoTAnalytics

串流管理員匯出到頻道的位元組數量AWS IoT Analytics。

GGStreamManager系統元件

BytesUploadedToKinesis

串流管理員匯出至 Amazon Kinesis 資料串流中串流的資料位元組數。

GGStreamManager系統元件

BytesUploadedToIoTSiteWise

串流管理員匯出至資產屬性的位元組數量AWS IoT SiteWise。

GGStreamManager系統元件

BytesUploadedToS3ExportTaskExecutor

串流管理員匯出到 Amazon S3 中物件的位元組數量。

GGStreamManager系統元件

BytesUploadedToHTTP

串流管理員匯出至 HTTP 的位元組數量。

GGStreamManager系統元件

進行遙測設定

綠色遙測使用下列設定:

  • 遙測代理程式每小時會彙總一次遙測資料。

  • 遙測代理程式會每 24 小時發佈一次遙測訊息。

注意

這些設定是不可變更的。

您可以啟用或停用 Greengrass 核心裝置的遙測功能。 AWS IoT Greengrass使用陰影來管理遙測組態。當核心連線時,您的變更會立即生效AWS IoT Core。

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

除了數據鏈接成本外,從核心傳輸到AWS IoT Core的數據不收取任何費用。這是因為代理程式會發佈至AWS保留主題。不過,視您的使用案例而定,可能會在您收到或處理資料時產生費用。

請求

當您設定遙測設定時,適用下列需求:

  • 您必須使用AWS IoT Greengrass核心軟體 v1.11.0 或更新版本。

    注意

    如果您執行的是舊版,而且不想使用遙測,則不需要執行任何動作。

  • 在更新遙測設定之前,您必須提供 IAM 權限才能更新核心 (物件) 陰影並呼叫組態 API。

    下列 IAM 政策範例可讓您管理特定核心的陰影和執行階段設定:

    { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowManageShadow", "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow", "iot:DescribeThing" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name-*" ] }, { "Sid": "AllowManageRuntimeConfig", "Effect": "Allow", "Action": [ "greengrass:GetCoreRuntimeConfiguration", "greengrass:UpdateCoreRuntimeConfiguration" ], "Resource": [ "arn:aws:iot:region:account-id:thing/core-name" ] } ] }

    您可以授與資源的細微或條件式存取權,例如使用萬用字元*命名配置。如需詳細資訊,請參閱 IAM 使用者指南中的新增和移除 IAM 政策

進行遙測設定 (主控台)

以下說明如何在AWS IoT Greengrass主控台中更新 Greengrass 核心的遙測設定。

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

  2. Greengrass 群組下,選擇您的目標群體。

  3. 在群組設定頁面的 [概觀] 區段中,選擇您的 Greengrass 核心

  4. 在核心的組態頁面上,選擇遙測索引標籤。

  5. 在 [系統健康狀況遙測] 區段中選擇 [設定]。

  6. 在 [設定遙測] 中,選取 [遙測] 以啟用或停用遙測狀態。

    重要

    根據預設,AWS IoT Greengrass核心軟體 v1.11.0 或更新版本已啟用遙測功能。

這些變更在執行時間便會生效。您不需要部署群組。

設定遙測設定 (CLI)

在AWS IoT Greengrass API 中,TelemetryConfiguration物件代表 Greengrass 核心的遙測設定。這個對象是與核心關聯的RuntimeConfiguration對象的一部分。您可以使用AWS IoT Greengrass API 或AWS SDK 來管理 Greengrass 測。AWS CLI本節中的範例使用AWS CLI.

若要檢查遙測設定

下列命令會取得 Greengrass 核心的遙測設定。

  • core-thing-name以目標核心的名稱取代。

    若要取得物件名稱,請使用get-core-definition-version指令。命令會傳回包含物件名稱之物件的 ARN。

aws greengrass get-thing-runtime-configuration --thing-name core-thing-name

此命令會在 JSON 回應中傳回GetCoreRuntimeConfigurationResponse物件。例如:

{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "OutOfSync", "Telemetry": "On" } } }
若要設定遙測設定

下列命令會更新 Greengrass 核心的遙測設定。

  • core-thing-name以目標核心的名稱取代。

    若要取得物件名稱,請使用get-core-definition-version指令。命令會傳回包含物件名稱之物件的 ARN。

JSON expanded
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration '{ "RuntimeConfiguration": { "TelemetryConfiguration": { "ConfigurationSyncStatus": "InSync", "Telemetry": "Off" } } }
JSON single-line
aws greengrass update-thing-runtime-configuration --thing-name core-thing-name --telemetry-configuration "{\"TelemetryConfiguration\":{\"ConfigurationSyncStatus\":\"InSync\",\"Telemetry\":\"Off\"}}"

如果是,則已套用遙測設定ConfigurationSyncStatus的變更InSync。這些變更在執行時間便會生效。您不需要部署群組。

TelemetryConfiguration 物件

TelemetryConfiguration物件具有下列屬性:

ConfigurationSyncStatus

檢查遙測設定是否同步。您可能不會變更此屬性。

類型:字串

有效值:InSyncOutOfSync

Telemetry

開啟或關閉遙測。預設值為 On

類型:字串

有效值:OnOff

訂閱接收遙測資料

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

遙測事件

部署狀態變更 (包括遙測資料) 的事件使用下列格式:

{ "version": "0", "id": "f70f943b-9ae2-e7a5-fec4-4c22178a3e6a", "detail-type": "Greengrass Telemetry Data", "source": "aws.greengrass", "account": "123456789012", "time": "2020-07-28T20:45:53Z", "region": "us-west-1", "resources": [], "detail": { "ThingName": "CoolThing", "Schema": "2020-06-30", "ADP": [ { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToKinesis", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToS3ExportTaskExecutor", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToHTTP", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTAnalytics", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "StreamManager", "M": [ { "N": "BytesAppended|BytesUploadedToIoTSiteWise", "Sum": 11, "U": "Bytes" } ] }, { "TS": 123231546, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaTimeout", "Sum": 15, "U": "Count" } ] }, { "TS": 123231546, "NS": "CloudSpooler", "M": [ { "N": "DroppedMessageCount", "Sum": 15, "U": "Count" } ] }, { "TS": 1593727692, "NS": "SystemMetrics", "M": [ { "N": "SystemMemUsage", "Sum": 11.23, "U": "Megabytes" }, { "N": "CpuUsage", "Sum": 35.63, "U": "Percent" }, { "N": "TotalNumberOfFDs", "Sum": 416, "U": "Count" } ] }, { "TS": 1593727692, "NS": "arn:aws:lambda:us-west-1:123456789012:function:my-function", "M": [ { "N": "LambdaOutOfMemory", "Sum": 12, "U": "Count" }, { "N": "LambdaUngracefullyKilled", "Sum": 100, "U": "Count" }, { "N": "LambdaError", "Sum": 7, "U": "Count" } ] } ] } }

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

TS

必要。匯總資料時的時間戳記。

NS

必要。該系統的命名空間。

M

必要。量度清單。測量結果包含下列特性:

N

測量結果的名稱。

Sum

聚總的測量結果值。遙測代理程式會將新值新增至先前的總計,因此總和是不斷增加的值。您可以使用時間戳記來尋找特定彙總的值。例如,若要尋找最新的彙總值,請從最新的時間戳記值中減去先前的時間戳記值。

U

指標值的單位。

ThingName

必要。您指定的物件裝置的名稱。

建立 EventBridge 規則的先決條件

在您為其建立 EventBridge 規則之前AWS IoT Greengrass,請執行下列動作:

  • 熟悉中的事件、規則和目標 EventBridge。

  • 建立和設定由您的 EventBridge 規則叫用的目標。規則可以叫用許多類型的目標,例如 Amazon Kinesis 串流、AWS Lambda函數、Amazon SNS 主題和 Amazon SQS 佇列。

    您的 EventBridge 規則和關聯的目標必須AWS 區域位於您建立 Greengrass 資源的位置。如需詳細資訊,請參閱《AWS 一般參考》中的服務端點和配額

如需詳細資訊,請參閱什麼是 Amazon Events EventBridge?在亞馬遜用 EventBridge 戶指南 EventBridge中開始使用亞馬遜

建立事件規則以取得遙測資料 (主控台)

使用下列步驟來建立AWS Management Console接收 Greengrass 核心所發佈之遙測資料的 EventBridge 規則。藉由這個規則,Web 伺服器、電子郵件地址和其他主題訂閱者將能回應事件。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南的建立可從AWS資源觸發事件的 EventBridge 規則

  1. 開啟 Amazon 主 EventBridge控台,然後選擇建立規則

  2. Name and description (名稱和描述),輸入規則的名稱和描述。

  3. 選擇事件匯流排-並在選取的事件匯流排上啟用規則。

  4. 選取「規則」類型,然後選擇「具有事件模式的規則」。

  5. 選擇 下一步

  6. 對於事件來源,請選擇AWS事件或 EventBridge 合作夥伴事件。

  7. 對於範例事件,請選擇AWS事件,然後選取 Greengrass 遙測資料

  8. Events 中,請執行下列選擇:

    1. Event source (事件來源) 欄位中,選擇 AWS services (服務)。

    2. 對於AWS服務,請選擇 Greengrass

    3. 針對 [事件類型],選擇 [Greengrass 遙測資料]

  9. 選擇 下一步

  10. 針對目標 1,選擇AWS服務

  11. 針對 「選取目標」,選擇 SQS 佇列

  12. 佇列中,選擇您的函數。

建立事件規則以取得遙測資料 (CLI)

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

  1. 建立 規則。

    • 物件名稱取代為核心的物件名稱。

      若要取得物件名稱,請使用get-core-definition-version指令。命令會傳回包含物件名稱之物件的 ARN。

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

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

  2. 新增主題作為規則目標。下列範例使用 Amazon SQS,但您可以設定其他目標類型。

    • 使用 Amazon SQS 佇列的 ARN 取代佇列中的佇列。

    aws events put-targets \ --rule TestRule \ --targets "Id"="1","Arn"="queue-arn"
    注意

    若要讓 Amazon EventBridge 叫用您的目標佇列,您必須將以資源為基礎的政策新增到您的主題。如需詳細資訊,請參閱 Amazon EventBridge 使用者指南中的 Amazon SQS 許可。

如需詳細資訊,請參閱 Amazon EventBridge 使用者指南 EventBridge中的事件和事件模式

疑難排解AWS IoT Greengrass遙

使用以下資訊以協助對AWS IoT Greengrass遙測的問題進行故障診斷。

錯誤:執行 get-thing-runtime-configuration 命令後回應包含ConfigurationStatusOutOfSync "": ""

解決方案:

  • AWS IoTDevice Shadow 服務需要一些時間來處理執行階段設定更新,並將更新傳送至 Greengrass 核心裝置。您可以等待並檢查遙測設定是否在稍後同步。

  • 確保您的核心設備在線。

  • 啟用亞馬遜 CloudWatch 日誌AWS IoT Core以監控陰影。

  • 使用AWS IoT指標來監視您的事物。