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 は、アプリケーションを Greengrass Core デバイスやデプロイ通知などのさまざまなソースのデータに接続するために使用できるイベントバスサービスです。詳細については、「Amazon EventBridge ユーザーガイド」の「Amazon EventBridge とは」を参照してください。

プロジェクトとアプリケーションを作成して、エッジデバイスからのテレメトリデータを取得、分析、変換、レポートできます。プロセスエンジニアといった特定分野のエキスパートは、これらのアプリケーションを使用して、フリートのヘルスに関する洞察を得られます。

Greengrass エッジコンポーネントを適切に機能させるために、AWS IoT Greengrass は開発および品質改善の目的でデータを使用します。この機能は、エッジ機能や拡張エッジ機能にも役立ちます。AWS IoT Greengrass は、テレメトリデータを最大 7 日間のみ保持します。

この機能は AWS IoT Greengrass コアソフトウェア v1.11.0 で利用可能であり、既存のコアを含むすべての Greengrass コアにおいてデフォルトで有効になっています。AWS IoT Greengrass Core ソフトウェア v1.11.0 以降にアップグレードするとすぐに、データ受信が自動的に開始されます。

発行されたテレメトリデータへのアクセスやそうしたデータの管理を行う方法については、「テレメトリデータを受信するためのサブスクライブ」を参照してください。

テレメトリエージェントは、次のシステムメトリックを収集して発行します。

テレメトリメトリック
名前 説明 ソース

SystemMemUsage

オペレーティングシステムを含む、Greengrass コアデバイスのすべてのアプリケーションで現在使用されているメモリの量。

システム

CpuUsage

オペレーティングシステムを含む Greengrass コアデバイスのすべてのアプリケーションで現在使用されている CPU の量。

システム

TotalNumberOfFDs

Greengrass コアデバイスのオペレーティングシステムによって保存されているファイルディスクリプタの数。1 つのファイルディスクリプタは、1 つのオープンファイルを一意に識別します。

システム

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 Data Streams のストリームにエクスポートするデータのバイト数。

GGStreamManager システムコンポーネント

BytesUploadedToIoTSiteWise

ストリームマネージャーが AWS IoT SiteWise のアセットプロパティにエクスポートするデータのバイト数。

GGStreamManager システムコンポーネント

BytesUploadedToS3ExportTaskExecutor

ストリームマネージャーが Amazon S3 のオブジェクトにエクスポートするデータのバイト数。

GGStreamManager システムコンポーネント

BytesUploadedToHTTP

ストリームマネージャーが HTTP にエクスポートするデータのバイト数。

GGStreamManager システムコンポーネント

テレメトリ設定の構成

Greengrass テレメトリでは、次の設定が使用されます。

  • テレメトリエージェントは、1 時間ごとにテレメトリデータを集約します。

  • テレメトリエージェントは 24 時間ごとにテレメトリメッセージを発行します。

注記

こうした設定は変更できません。

Greengrass コアデバイスのテレメトリ機能は、有効または無効にできます。AWS IoT Greengrass は、シャドウを使用してテレメトリ設定を管理します。変更は、コアが AWS IoT Core に接続されるとすぐに反映されます。

テレメトリエージェントは、サービス品質 (QoS) レベルが 0 の MQTT プロトコルを使用してデータを発行します。つまり、配信の確認や発行の再試行は行いません。テレメトリメッセージは、MQTT 接続を、AWS IoT Core を送信先とする他のサブスクリプションメッセージと共有します。

データリンクの費用を除き、コアから AWS IoT Core へのデータ転送には料金は発生しません。これは、エージェントが AWS の予約済みトピックに発行しているためです。ただし、ユースケースによっては、データを受信または処理するときにコストが発生する場合もあります。

要件

テレメトリ設定を構成するときには、次の要件が適用されます。

  • AWS IoT Greengrass Core ソフトウェア 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 コンソールのナビゲーションペインの [Manage] (管理) で、[Greengrass devices] (Greengrass デバイス) を展開して、[Groups (V1)] (グループ (V1))を選択します。

  2. [Greengrass groups] (グリーングラスのグループ) で、対象グループを選択します。

  3. グループ設定ページの [Overview] (概要) セクションで、[Greengrass core] (Greengrass コア) を選択します。

  4. コアの設定ページで、 [Telemetry] (テレメトリ) タブを選択します。

  5. [System health telemetry] (システム ヘルス テレメトリ) セクションで、[Configure] (設定) を選択します。

  6. [Configure telemetry] (テレメトリの設定) で、[Telemetry] (テレメトリ) を選択して、テレメトリのステータスを有効または無効にします。

    重要

    AWS IoT Greengrass Core ソフトウェア v1.11.0 以降の場合、テレメトリ機能はデフォルトで有効になっています。

変更は実行時に有効になります。グループをデプロイする必要はありません。

テレメトリ設定の構成 (CLI)

AWS IoT Greengrass API の TelemetryConfiguration オブジェクトは Greengrass コアのテレメトリ設定を表しています。このオブジェクトは、コアに関連する RuntimeConfiguration オブジェクトの一部です。AWS IoT Greengrass API、AWS CLI、または AWS SDK を使用して、Greengrass テレメトリを管理できます。このセクションの例では AWS CLI を使用します。

テレメトリ設定を確認するには

次のコマンドでは、Greengrass コアのテレメトリ設定を取得します。

  • core-thing-name をターゲットコアの名前に置き換えます。

    モノの名前を取得するには、get-core-definition-version コマンドを使用します。このコマンドは、モノの名前を含むモノの ARN を返します。

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

このコマンドでは、GetCoreRuntimeConfigurationResponse オブジェクトが JSON 応答で返ります。例:

{ "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\"}}"

ConfigurationSyncStatusInSync の場合、テレメトリ設定の変更が適用されています。変更は実行時に有効になります。グループをデプロイする必要はありません。

TelemetryConfiguration オブジェクト

TelemetryConfiguration オブジェクトには以下のプロパティがあります。

ConfigurationSyncStatus

テレメトリ設定が同期しているかどうかを確認します。このプロパティは変更できません。

タイプ: 文字列

有効な値: InSync または OutOfSync

Telemetry

テレメトリをオンまたはオフにします。デフォルトは On です。

タイプ: 文字列

有効な値: On または Off

テレメトリデータを受信するためのサブスクライブ

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 ルールを作成するための前提条件

AWS IoT Greengrass の EventBridge ルールを作成する前に、以下を行う必要があります。

  • EventBridge のイベント、ルール、ターゲットに精通しておいてください。

  • EventBridge ルールによって呼び出される [targets] (ターゲット) を作成して設定します。ルールによって、Amazon Kinesis ストリーム、AWS Lambda 関数、Amazon SNS トピック、Amazon SQS キューなど、さまざまなタイプのターゲットを呼び出すことができます。

    EventBridge ルールと関連ターゲットは、Greengrass リソースを作成した AWS リージョン 内になければなりません。詳細については、「AWS 全般のリファレンス」の「サービスのエンドポイントとクォータ」を参照してください。

詳細については、Amazon EventBridge ユーザーガイドの「 Amazon EventBridge とは」および「Amazon EventBridge の開始方法」を参照してください。

テレメトリデータを取得するイベントルールの作成 (コンソール)

次の手順に従って、AWS Management Console で、Greengrass コアが発行したテレメトリデータを受信する EventBridge ルールを作成します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。ルールの作成方法の詳細については、「Amazon EventBridge ユーザーガイド」の「AWS リソースのイベントでトリガーする EventBridge ルールを作成する」を参照してください 。

  1. Amazon EventBridge コンソールを開き、[Create rule] (ルールの作成) を選択します。

  2. [Name and description (名前と説明)] に、ルールの名前と説明を入力します。

  3. [Event bus] (イベントバス) を選択し、選択したイベントバスでルールを有効にします。

  4. [Rule type] (ルールタイプ)、[Rule with an event pattern] (イベントパターンを持つルール) の順に選択します。

  5. [Next] (次へ) をクリックします。

  6. [Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。

  7. [サンプルイベント] では、[AWS イベント][Greengrass テレメトリデータ] の順に選択します。

  8. [Event pattern] (イベントパターン) では、次のように選択します。

    1. [Event source] (イベントソース) では、AWS[services] (サービス) を選択します。

    2. [AWS Service] (サービス) では、 [Greengrass] を選択します。

    3. [Event type] (イベントタイプ) では、[Greengrass Telemetry Data] (Greengrass テレメトリデータ) を選択します。

  9. [Next] (次へ) をクリックします。

  10. [Target 1] (ターゲット 1) で、[AWS services] (サービス) を選択します。

  11. [Select a target] (ターゲットの選択) で、[SQS queue] (SQS キュー) を選択します。

  12. [Queue] (キュー) で、関数を選択します。

テレメトリデータを取得するイベントルールの作成 (CLI)

次の手順に従って、AWS CLI で、Greengrass コアが発行したテレメトリデータを受信する EventBridge ルールを作成します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。

  1. ルールを作成します。

    • thing-name をコアのモノ名に置き換えます。

      モノの名前を取得するには、get-core-definition-version コマンドを使用します。このコマンドは、モノの名前を含むモノの ARN を返します。

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

    パターンで省略されたプロパティは無視されます。

  2. トピックをルールターゲットとして追加します。次の例では、Amazon SQS を使用していますが、他のターゲットタイプも設定できます。

    • queue-arn を 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 テレメトリの設定に関するトラブルシューティングに役立ちます。

次のエラーが発生する。The response contains "ConfigurationStatus": "OutOfSync" after you run the get-thing-runtime-configuration command

解決方法

  • AWS IoT デバイスシャドウサービスでは、ランタイム設定の更新を処理し、その更新を Greengrass コアデバイスに配信するまでに時間がかかります。しばらく待った後に、テレメトリ設定が同期しているかどうかを確認してください。

  • コアデバイスがオンラインになっていることを確認します。

  • AWS IoT Core の Amazon CloudWatch Logs を有効にして、シャドウを監視します。

  • AWS IoT メトリクスを使用して、モノを監視します。