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 ログでのモニタリング
AWS IoT Greengrass は、クラウドサービスと AWS IoT Greengrass Core ソフトウェアで設定されます。AWS IoT Greengrass Core ソフトウェアを使用して、Amazon CloudWatch とコアデバイスのローカルファイルシステムにログを書き込むことができます。コア上で実行されている Lambda 関数とコネクタは CloudWatch Logs とローカルファイルシステムにログを書き込むこともできます。問題をトラブルシューティングするには、ログを使用してイベントをモニタリングします。AWS IoT Greengrass ログエントリにはすべて、タイムスタンプ、ログレベル、イベントに関する情報が含まれています。ログ設定の変更は、グループをデプロイした後に有効になります。
ログ記録は、グループレベルで設定されます。Greengrass グループのログ記録を設定する方法を示すステップについては、AWS IoT Greengrass のログ記録の設定 を参照してください。
CloudWatch Logs にアクセスする
CloudWatch ログ記録を設定すると、Amazon CloudWatch コンソールの [Logs] (ログ) ページにログを表示できます。AWS IoT Greengrass ログのロググループは、次の命名規則を使用します。
/aws/greengrass/GreengrassSystem/greengrass-system-component-name
/aws/greengrass/Lambda/aws-region
/account-id
/lambda-function-name
各ロググループには、次の命名規則を使用するログストリームが含まれています。
date
/account-id
/greengrass-group-id
/name-of-core-that-generated-log
以下の考慮事項は、CloudWatch Logs を使用する場合に適用されます。
-
ログは、インターネットに接続できない場合、制限された再試行回数で CloudWatch Logs に送信されます。再試行回数の上限に達すると、イベントは削除されます。
-
トランザクション、メモリ、その他の制限が適用されます。詳細については、「ログ記録の制限」を参照してください。
-
Greengrass グループロールを使用して、AWS IoT Greengrass から CloudWatch Logs への書き込みを許可する必要があります。アクセス許可を付与するには、グループロールに次のインラインポリシーを組み込みます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
注記
詳細なアクセス権をログリソースに付与することができます。詳細については、「Amazon CloudWatch ユーザーガイド」の「CloudWatch Logs でアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。
グループロールは、ユーザーが作成して Greengrass グループにアタッチした IAM ロールです。コンソールまたは AWS IoT Greengrass API を使用して、グループロールを管理できます。
- コンソールの使用
-
AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。
ターゲットグループを選択します。
-
[View Settings] (設定を表示) をクリックします。[Group role] (グループロール) では、グループロールを表示、関連付けまたは関連付けの解除ができます。
グループロールをアタッチする手順については、「グループロール」を参照してください。
- CLI の使用
-
-
グループロールを検索するには、get-associated-role コマンドを使用します。
-
グループロールをアタッチするには、associate-role-to-group コマンドを使用します。
-
グループロールを削除するには、disassociate-role-from-group コマンドを使用します。
これらのコマンドで使用するグループ ID を取得する方法については、「グループ ID の取得」を参照してください。
-
ファイルシステムログへのアクセス
ファイルシステムのログ記録を設定すると、ログファイルは、コアデバイスの
に保存されます。高レベルのディレクトリ構造を以下に示します。greengrass-root
/ggc/var/log
greengrass-root
/ggc/var/log
- crash.log
- system
- log files for each Greengrass system component
- user
- region
- account-id
- log files generated by each user-defined Lambda function
- aws
- log files generated by each connector
注記
デフォルトでは、greengrass-root
は /greengrass
ディレクトリです。書き込みディレクトリが設定されている場合には、ログはこのディレクトリにあります。
以下の考慮事項は、ファイルシステムログを使用する場合に適用されます。
-
ファイルシステムの AWS IoT Greengrass ログを確認するには、ルート権限が必要です。
-
AWS IoT Greengrass には、ログデータの量が設定済みの制限に達したときに、サイズベースのローテーションと自動クリーンアップがサポートされています。
-
crash.log
ファイルは、ファイルシステムログでのみ使用できます。このログは CloudWatch Logs に書き込まれません。 -
ディスク使用量の制限が適用されます。詳細については、「ログ記録の制限」を参照してください。
注記
AWS IoT Greengrass Core ソフトウェア v1.0 のログは、
ディレクトリに保存されます。greengrass-root
/var/log
デフォルトのログ記録設定
ログ記録設定が明示的に設定されていない場合は、AWS IoT Greengrass は、最初のグループのデプロイ後に以下の既定のログ記録設定を使用します。
- AWS IoT Greengrass システムコンポーネント
-
-
タイプ -
FileSystem
-
コンポーネント -
GreengrassSystem
-
レベル -
INFO
-
スペース -
128 KB
-
- ユーザー定義 Lambda 関数
-
-
タイプ -
FileSystem
-
コンポーネント -
Lambda
-
レベル -
INFO
-
スペース -
128 KB
-
注記
最初のデプロイ前に、ユーザー定義の Lambda 関数がデプロイされていないため、システムコンポーネントだけがファイルシステムにログを書き込みます。
AWS IoT Greengrass のログ記録の設定
AWS IoT コンソールまたは AWS IoT Greengrass APIs を使用して、AWS IoT Greengrass ログ記録を設定できます。
注記
AWS IoT Greengrass がログを CloudWatch Logs に書き込むことを許可するには、グループロールが必要な CloudWatch Logs アクションを許可する必要があります。
ログ記録の設定 (コンソール)
グループの [設定] ページでログ記録を設定できます。
AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。
-
ログ記録を設定するグループを選択します。
-
グループの設定ページで、[Logs] (ログ) タブを選択します。
-
次のようにログ記録の場所を選択します。
-
CloudWatch ログ記録を設定するには、[CloudWatch logs configuration] (CloudWatch ログ設定) の、[Edit] (編集) を選択します。
-
ファイルシステムログ記録を設定するには、[Local logs configuration] (ローカルログ設定) の、[Edit] (編集) を選択します。
1 つの場所または両方の場所のログ記録を設定できます。
-
-
ログの編集設定モーダルで、[Greengrass system log level] (Greengrass システムのログレベル) または [User Lambda functions log level] (ユーザーの Lambda 関数のログレベル) を選択します。1 つのコンポーネントまたは両方のコンポーネントを選択することができます。
-
ログに記録するイベントの最低レベルを選択します。このしきい値に達しないイベントは除外され、保存されません。
-
[Save] を選択します。変更は、グループをデプロイした後に有効になります。
ログ記録の設定 (API)
AWS IoT Greengrass ロガー API を使用して、プログラムでログ記録を設定できます。例えば、CreateLoggerDefinition
アクションを使用して、LoggerDefinitionVersion
ペイロードに基づくロガー定義を作成します。これは、次の構文を使用します。
{ "Loggers": [ { "Id": "string", "Type": "FileSystem|AWSCloudWatch", "Component": "GreengrassSystem|Lambda", "Level": "DEBUG|INFO|WARN|ERROR|FATAL", "Space": "integer" }, { "Id": "string", ... } ] }
LoggerDefinitionVersion
は、次のプロパティを持つ 1 つ以上の Logger
オブジェクトの配列です。
Id
-
ロガーの識別子。
Type
-
ログイベントのストレージメカニズム。
AWSCloudWatch
を使用する場合、ログイベントは CloudWatch Logs に送信されます。FileSystem
を使用すると、ログイベントはローカルファイルシステムに保存されます。有効な値:
AWSCloudWatch
、FileSystem
Component
-
ログイベントのソース。
GreengrassSystem
を使用すると、Greengrass システムコンポーネントのイベントがログに記録されます。Lambda
を使用すると、ユーザー定義の Lambda 関数のイベントがログに記録されます。有効な値:
GreengrassSystem
、Lambda
Level
-
ログレベルのしきい値。このしきい値に達しないログイベントは除外され、保存されません。
有効な値:
DEBUG
、INFO
(推奨)、WARN
、ERROR
、FATAL
Space
-
ログを保存するローカルストレージの最大容量 (KB 単位)。このフィールドは、
Type
をFileSystem
に設定した場合にのみ適用されます。
設定例
次の LoggerDefinitionVersion
の例では、次のようなログ記録設定を指定しています。
-
AWS IoT Greengrass システムコンポーネントのファイルシステム
ERROR
以上のログ記録を有効にします。 -
ユーザー定義の Lambda 関数のファイルシステム
INFO
(以上) のログ記録を有効にします。 -
ユーザー定義の Lambda 関数の CloudWatch
INFO
(以上) のログ記録を有効にします。
{ "Name": "LoggingExample", "InitialVersion": { "Loggers": [ { "Id": "1", "Component": "GreengrassSystem", "Level": "ERROR", "Space": 10240, "Type": "FileSystem" }, { "Id": "2", "Component": "Lambda", "Level": "INFO", "Space": 10240, "Type": "FileSystem" }, { "Id": "3", "Component": "Lambda", "Level": "INFO", "Type": "AWSCloudWatch" } ] } }
ロガー定義バージョンを作成した後、そのバージョン ARN を使用して、グループをデプロイする前にグループバージョンを作成できます。
ログ記録の制限
AWS IoT Greengrass には次のログ記録の制限があります。
1 秒あたりのトランザクション
CloudWatch へのログ記録を有効にすると、ログイベントはログコンポーネントでローカルにバッチ処理された後で CloudWatch に送信されるため、ログストリームごとに 5 リクエスト/秒よりも高いレートでログを記録できます。
「メモリ」
AWS IoT Greengrass のログの送信先として CloudWatch を設定し、Lambda 関数で長時間にわたって 5 MB/秒を超えるログを記録すると、内部処理パイプラインが最終的に満杯になります。理論的には Lambda 関数あたり 6 MB で限界に達します。
クロックスキュー
CloudWatch へのログ記録を有効にすると、ログ記録コンポーネントは標準の署名バージョン 4 の署名プロセスを使用して CloudWatch へのリクエストに署名します。AWS IoT Greengrass コアデバイスのシステム時刻が同期していない時間が 15 分を超えていると、リクエストは拒否されます。
ディスク使用量
次の式を使用して、ログ記録用の最大の合計ディスク使用量を計算します。
greengrass-system-component-space
* 8 // 7 if automatic IP detection is disabled
+ 128KB // the internal log for the local logging component
+ lambda-space
* lambda-count
// different versions of a Lambda function are treated as one
コードの説明は以下のとおりです。
greengrass-system-component-space
-
AWS IoT Greengrass システムコンポーネントログのローカルストレージの最大量。
lambda-space
-
Lambda 関数のログ用の最大のローカルストレージ容量。
lambda-count
-
Lambda 関数のデプロイ数。
ログの損失
AWS IoT Greengrass コアデバイスのログの記録先として CloudWatch のみを設定した場合、インターネット接続が失われると、現在メモリにあるログは取得されません。
Lambda 関数が (デプロイ時などに) 終了すると、数秒分のログは CloudWatch に書き込まれません。
CloudTrail ログ
AWS IoT Greengrass は AWS CloudTrail と統合されています。これは、ユーザー、ロール、または AWS IoT Greengrass の AWS サービスによって実行されたアクションを記録するサービスです。詳細については、「AWS IoT Greengrass による AWS CloudTrail API コールのログ記録」を参照してください。