2023 年 6 月 30 日に AWS IoT Greengrass Version 1 は延長ライフサイクルフェーズに入りました。詳細については、「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 以降にアップグレードするとすぐに、データ受信が自動的に開始されます。
発行されたテレメトリデータへのアクセスやそうしたデータの管理を行う方法については、「テレメトリデータを受信するためのサブスクライブ」を参照してください。
テレメトリエージェントは、次のシステムメトリックを収集して発行します。
名前 | 説明 | ソース |
---|---|---|
|
オペレーティングシステムを含む、Greengrass コアデバイスのすべてのアプリケーションで現在使用されているメモリの量。 |
システム |
|
オペレーティングシステムを含む Greengrass コアデバイスのすべてのアプリケーションで現在使用されている CPU の量。 |
システム |
|
Greengrass コアデバイスのオペレーティングシステムによって保存されているファイルディスクリプタの数。1 つのファイルディスクリプタは、1 つのオープンファイルを一意に識別します。 |
システム |
|
Lambda 関数がメモリを使い切った実行の回数。 |
システム |
|
AWS IoT Core に送信されドロップされたメッセージの数。 |
|
|
ユーザー定義 Lambda 関数の実行がタイムアウトした回数。 |
ユーザー定義 Lambda 関数、AWS クラウド、システム |
|
ユーザー定義 Lambda 関数の実行が完了しなかった回数。 |
ユーザー定義 Lambda 関数、AWS クラウド、システム |
|
ユーザー定義 Lambda 関数の実行によってエラーログが書き込まれた回数。 |
ユーザー定義 Lambda 関数、AWS クラウド、システム |
|
ストリームマネージャーに追加されたデータのバイト数。 |
|
|
ストリームマネージャーが AWS IoT Analytics のチャネルにエクスポートするデータのバイト数。 |
|
|
ストリームマネージャーが Amazon Kinesis Data Streams のストリームにエクスポートするデータのバイト数。 |
|
|
ストリームマネージャーが AWS IoT SiteWise のアセットプロパティにエクスポートするデータのバイト数。 |
|
|
ストリームマネージャーが Amazon S3 のオブジェクトにエクスポートするデータのバイト数。 |
|
|
ストリームマネージャーが HTTP にエクスポートするデータのバイト数。 |
|
テレメトリ設定の構成
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 コアのテレメトリ設定を更新する方法を示します。
-
AWS IoT コンソールのナビゲーションペインの [Manage] (管理) で、[Greengrass devices] (Greengrass デバイス) を展開して、[Groups (V1)] (グループ (V1))を選択します。
-
[Greengrass groups] (グリーングラスのグループ) で、対象グループを選択します。
-
グループ設定ページの [Overview] (概要) セクションで、[Greengrass core] (Greengrass コア) を選択します。
-
コアの設定ページで、 [Telemetry] (テレメトリ) タブを選択します。
-
[System health telemetry] (システム ヘルス テレメトリ) セクションで、[Configure] (設定) を選択します。
-
[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 を返します。
ConfigurationSyncStatus
がInSync
の場合、テレメトリ設定の変更が適用されています。変更は実行時に有効になります。グループをデプロイする必要はありません。 -
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 ルールを作成する」を参照してください 。
-
Amazon EventBridge コンソール
を開き、[Create rule] (ルールの作成) を選択します。 -
[Name and description (名前と説明)] に、ルールの名前と説明を入力します。
-
[Event bus] (イベントバス) を選択し、選択したイベントバスでルールを有効にします。
-
[Rule type] (ルールタイプ)、[Rule with an event pattern] (イベントパターンを持つルール) の順に選択します。
-
[Next] を選択します。
-
[Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。
-
[サンプルイベント] では、[AWS イベント]、[Greengrass テレメトリデータ] の順に選択します。
-
[Event pattern] (イベントパターン) では、次のように選択します。
-
[イベントパターンフォーム] では、AWS[サービス] を選択します。
-
[AWS Service] (サービス) では、 [Greengrass] を選択します。
-
[Event type] (イベントタイプ) では、[Greengrass Telemetry Data] (Greengrass テレメトリデータ) を選択します。
-
-
[Next] を選択します。
-
[Target 1] (ターゲット 1) で、[AWS services] (サービス) を選択します。
-
[Select a target] (ターゲットの選択) で、[SQS queue] (SQS キュー) を選択します。
-
[Queue] (キュー) で、関数を選択します。
テレメトリデータを取得するイベントルールの作成 (CLI)
次の手順に従って、AWS CLI で、Greengrass コアが発行したテレメトリデータを受信する EventBridge ルールを作成します。これにより、ウェブサーバー、E メールアドレス、その他のトピック受信者がイベントに応答できるようになります。
-
ルールを作成します。
-
thing-name
をコアのモノ名に置き換えます。モノの名前を取得するには、get-core-definition-version コマンドを使用します。このコマンドは、モノの名前を含むモノの ARN を返します。
aws events put-rule \ --name TestRule \ --event-pattern "{\"source\": [\"aws.greengrass\"], \"detail\": {\"ThingName\": [\"
thing-name
\"]}}"パターンで省略されたプロパティは無視されます。
-
-
トピックをルールターゲットとして追加します。次の例では、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 メトリクスを使用して、モノを監視します。