AWS IoT Greengrass ログでのモニタリング - AWS IoT Greengrass

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

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 を使用して、グループロールを管理できます。

     

    コンソールの使用
    1. AWS IoT コンソールで、[Greengrass]、[グループ] の順に選択します。

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

    3. [設定] を選択します。[グループロール] では、グループロールを表示、アタッチ、または削除できます。

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

     

    CLI の使用

     

    これらのコマンドで使用するグループ ID を取得する方法については、「グループ ID の取得」を参照してください。

ファイルシステムログへのアクセス

ファイルシステムのログ記録を設定すると、ログファイルは、コアデバイスの greengrass-root/ggc/var/log に保存されます。高レベルのディレクトリ構造を以下に示します。

greengrass-root/ggc/var/log - crash.log - system - log files for each Greengrass system component - user - リージョン - 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 API を使用して、AWS IoT Greengrass ログ記録を設定できます。

注記

AWS IoT Greengrass がログを CloudWatch Logs に書き込むことを許可するには、グループロールが必要な CloudWatch Logs アクションを許可する必要があります。

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

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

  1. AWS IoT コンソール コンソールで、[Greengrass]、[グループ] の順に選択します。

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

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

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

    • CloudWatch ログ記録を設定するには、[CloudWatch logs configuration (CloudWatch ログ設定)] の、[Edit (編集)] を選択します。

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

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

  5. [Configure Group logging] (グループログの設定) ページで、Add another log type (他のログタイプを追加) を選択します。

  6. 次のように、イベントソースを選択します。

    • ユーザー定義の Lambda 関数のイベントをログに記録するには、[User Lambdas (ユーザー Lambda)] を選択します。

    • AWS IoT Greengrass システムコンポーネントのイベントをログに記録するには、[Greengrass system (Greengrass システム)] を選択します。

    1 つのコンポーネントまたは両方のコンポーネントを選択することができます。

  7. [Update] を選択します。

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

  9. ファイルシステムログの場合は、ディスク容量制限を指定します。

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

ログ記録の設定 (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

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

有効な値: 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 に送信されるため、ログストリームごとに 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 IoT Greengrass のユーザーやロール、または AWS のサービスによって実行されたアクションを記録するサービスである AWS CloudTrail と統合されています。詳細については、「AWS CloudTrail による AWS IoT Greengrass API コールのログ記録」を参照してください。