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 ログでのモニタリング

AWS IoT Greengrass は、クラウドサービスと AWS IoT Greengrass Core ソフトウェアで設定されます。AWS IoT Greengrass Core ソフトウェアは、Amazon CloudWatch とコアデバイスのローカルファイルシステムにログを書き込むことができます。コアで実行されている Lambda 関数とコネクタは、 CloudWatch Logs とローカルファイルシステムにログを書き込むこともできます。問題をトラブルシューティングするには、ログを使用してイベントをモニタリングします。AWS IoT Greengrass ログエントリにはすべて、タイムスタンプ、ログレベル、イベントに関する情報が含まれています。ログ設定の変更は、グループをデプロイした後に有効になります。

ログ記録は、グループレベルで設定されます。Greengrass グループのログ記録を設定する方法を示すステップについては、AWS IoT Greengrass のログ記録の設定 を参照してください。

CloudWatch ログへのアクセス

CloudWatch ログ記録を設定すると、Amazon CloudWatch コンソールのログページでログを表示できます。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 ログに書き込むことを許可する必要があります。アクセス許可を付与するには、グループロールに次のインラインポリシーを組み込みます

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }
    注記

    詳細なアクセス権をログリソースに付与することができます。詳細については、「Amazon CloudWatch ユーザーガイド」の CloudWatch 「 ログにアイデンティティベースのポリシー (IAM ポリシー) を使用する」を参照してください。

    グループロールは、ユーザーが作成して Greengrass グループにアタッチした IAM ロールです。コンソールまたは AWS IoT Greengrass API を使用して、グループロールを管理できます。

     

    コンソールの使用
    1. AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。

    2. ターゲットグループを選択します。

    3. [View Settings] (設定を表示) をクリックします。[Group role] (グループロール) では、グループロールを表示、関連付けまたは関連付けの解除ができます。

      グループロールをアタッチする手順については、「グループロール」を参照してください。

     

    CLI の使用

     

    これらのコマンドで使用するグループ 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 ログにログを書き込むことを許可するには、グループロールが必要な CloudWatch ログアクション を許可する必要があります。

ログ記録の設定 (コンソール)

グループの [設定] ページでログ記録を設定できます。

  1. AWS IoT コンソールのナビゲーションペインの [Manage](管理)で、[Greengrass devices](Greengrass デバイス)を展開して、[Group (V1)](グループ (V1))を選択します。

  2. ログ記録を設定するグループを選択します。

  3. グループの設定ページで、[Logs] (ログ) タブを選択します。

  4. 次のようにログ記録の場所を選択します。

    • CloudWatch ログ記録を設定するには、CloudWatch ログ設定 の編集 を選択します。

    • ファイルシステムログ記録を設定するには、[Local logs configuration] (ローカルログ設定) の、[Edit] (編集) を選択します。

    1 つの場所または両方の場所のログ記録を設定できます。

  5. ログの編集設定モーダルで、[Greengrass system log level] (Greengrass システムのログレベル) または [User Lambda functions log level] (ユーザーの Lambda 関数のログレベル) を選択します。1 つのコンポーネントまたは両方のコンポーネントを選択することができます。

  6. ログに記録するイベントの最低レベルを選択します。このしきい値に達しないイベントは除外され、保存されません。

  7. [保存] を選択します。変更は、グループをデプロイした後に有効になります。

ログ記録の設定 (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 ログに送信されます。FileSystem を使用すると、ログイベントはローカルファイルシステムに保存されます。

有効な値: AWSCloudWatchFileSystem

Component

ログイベントのソース。GreengrassSystem を使用すると、Greengrass システムコンポーネントのイベントがログに記録されます。Lambda を使用すると、ユーザー定義の Lambda 関数のイベントがログに記録されます。

有効な値: GreengrassSystemLambda

Level

ログレベルのしきい値。このしきい値に達しないログイベントは除外され、保存されません。

有効な値: DEBUGINFO (推奨)、WARNERRORFATAL

Space

ログを保存するローカルストレージの最大容量 (KB 単位)。このフィールドは、TypeFileSystem に設定した場合にのみ適用されます。

設定例

次の 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、ログストリームごとに 1 秒あたり 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 コールのログ記録」を参照してください。