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

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

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

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

デフォルトで、AWS IoT Greengrass Core ソフトウェアはローカルファイルシステムのみにログを書き込みます。リアルタイムでファイル システム ログを確認できるため、開発とデプロイする Greengrass コンポーネントをデバッグできます。 CloudWatch Logs にログを書き込むようにコアデバイスを設定して、ローカルファイルシステムにアクセスせずにコアデバイスをトラブルシューティングすることもできます。詳細については、「 CloudWatch ログへのログ記録を有効にする」を参照してください。

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

AWS IoT Greengrass Core ソフトウェアは、コアデバイスの /greengrass/v2/logsフォルダにログを保存します。ここで、 /greengrass/v2はAWS IoT Greengrassルートフォルダへのパスです。ログフォルダは次の構造があります。

/greengrass/v2 └── logs ├── greengrass.log ├── greengrass_2021_09_14_15_0.log ├── ComponentName.log ├── ComponentName_2021_09_14_15_0.log └── main.log
  • greengrass.log - AWS IoT Greengrass Core ソフトウェアのログファイル。このログファイルを使用して、コンポーネントとデプロイに関するリアルタイム情報を確認します。このログファイルには、Greengrass nucleus のログが含まれています。Greengrass nucleus は AWS IoT Greengrass Core ソフトウェアとプラグインコンポーネント (ログマネージャーシークレットマネージャーなど) のコアです。

  • ComponentName.log - Greengrass コンポーネントのログファイル。コンポーネント ログ ファイルを使用して、コアデバイスに実行される Greengrass コンポーネントに関するリアルタイム情報を確認します。ジェネリックコンポーネントと Lambda コンポーネントは、標準出力 (stdout) と標準エラー (stderr) をこれらのログファイルに書き込みます。

  • main.log - コンポーネントライフサイクルを処理する main サービスのログファイル。このログファイルは常に空の状態になります。

プラグイン、ジェネリック、Lambda コンポーネントの違いの詳細については、「コンポーネントタイプ」を参照してください。

以下の考慮事項は、ファイルシステムログを使用する場合に適用されます。

  • ルートユーザーの許可

    ファイルシステムの AWS IoT Greengrass ログを読み取る root 権限が必要です。

  • ログファイルのローテーション

    AWS IoT Greengrass Core ソフトウェアは、1 時間ごと、またはファイルサイズの制限を超えたときにログファイルをローテーションします。ローテーションされたログファイルは、ファイル名にタイムスタンプが含まれています。例えば、ローテーションした AWS IoT Greengrass Core ソフトウェアのログファイルは  greengrass_2021_09_14_15_0.log という名前が付けられる場合があります。デフォルトのファイルサイズの制限は 1,024 KB (1 MB) です。ファイルサイズの制限は、Greengrass nucleus コンポーネントで設定できます。

  • ログファイルの削除

    AWS IoT Greengrass Core ソフトウェアは、AWS IoT Greengrass Core ソフトウェアのログファイルまたは Greengrass コンポーネントのログファイルのサイズ (ローテーションされたログファイルを含む) がディスク容量の上限を超えたとき、以前のログファイルをクリーンアップします。AWS IoT Greengrass Core ソフトウェア ログと各コンポーネントログ のデフォルトのディスク容量上限は、10,240 KB (10 MB) です。Greengrass nucleus コンポーネントまたはログマネージャーコンポーネントの AWS IoT Greengrass Core ソフトウェアログのディスク容量上限を設定できます。ログマネージャーコンポーネントで、各コンポーネントのログディスク容量上限を設定できます。

AWS IoT Greengrass Core ソフトウェアのログファイルを確認するには
  • 次のコマンドを実行して、ログファイルをリアルタイムで確認します。をAWS IoT Greengrassルートフォルダへのパス/greengrass/v2に置き換えます。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/greengrass.log
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\com.example.HelloWorld.log

    type コマンドは、ファイルのコンテンツを端末に書き込みます。このコマンドを複数回実行して、ファイル内の変更を確認してください。

    PowerShell
    gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
コンポーネントのログファイルを確認するには
  • 次のコマンドを実行して、ログファイルをリアルタイムで確認します。/greengrass/v2 または C:\greengrass\v2 をAWS IoT Greengrassルートフォルダへのパスに置き換え、com.example.HelloWorld をコンポーネントの名前に置き換えます。

    Linux or Unix
    sudo tail -f /greengrass/v2/logs/com.example.HelloWorld.log
    PowerShell
    gc C:\greengrass\v2\logs\com.example.HelloWorld.log -Tail 10 -Wait

Greengrass CLIlogs コマンドを使用して、コアデバイスの Greengrass ログを分析することもできます。logs コマンドを実行するには、Greengrass nucleus が JSON 形式のログファイルを出力するように設定する必要があります。詳細については、「Greengrass コマンドラインインターフェイスログ」を参照してください。

アクセス CloudWatch ログ

ログマネージャーコンポーネントをデプロイして、 CloudWatch ログに書き込むようにコアデバイスを設定できます。詳細については、「 CloudWatch ログへのログ記録を有効にする」を参照してください。その後、Amazon CloudWatch コンソールのログページで、または Logs API CloudWatch を使用してログを表示できます。

ロググループ名
/aws/greengrass/componentType/region/componentName

ロググループ名は、次の変数を使用します。

  • componentType - 次のいずれかに該当するコンポーネントのタイプ。

    • GreengrassSystemComponent — このロググループには、Greengrass nucleus と同じ JVM で実行される nucleus とプラグインコンポーネントのログが含まれます。コンポーネントは Greengrass nucleus の一部です。

    • UserComponent – このロググループには、ジェネリックコンポーネント、Lambda コンポーネント、およびデバイス上の他のアプリケーションのログが含まれます。コンポーネントは Greengrass nucleus の一部ではありません。

    詳細については、「コンポーネントタイプ」を参照してください。

  • region - コアデバイスが使用する AWS リージョン。

  • componentName - コンポーネントの名前。システムログの場合、この値は System です。

ログストリーム名
/date/thing/thingName

ログストリーム名は次の変数を使用します。

  • date - 2020/12/15 など、ログの日付。ログマネージャーコンポーネントは yyyy/MM/dd 形式を使用します。

  • thingName - コアデバイスの名前。

注記

モノの名前にコロン (:) が含まれている場合、ログマネージャーはコロンをプラス (+) に置き換えます。

ログマネージャーコンポーネントを使用して CloudWatch Logs に書き込む場合は、次の考慮事項が適用されます。

  • ログ遅延

    注記

    ログマネージャーバージョン 2.3.0 にアップグレードすることをお勧めします。これにより、ローテーションされたアクティブなログファイルのログ遅延が軽減されます。ログマネージャー 2.3.0 にアップグレードする際には、Greengrass nucleus 2.9.1 にもアップグレードすることをお勧めします。

    ログマネージャーコンポーネントバージョン 2.2.8 (およびそれ以前) は、ローテーションされたログファイルからのみ、ログを処理およびアップロードします。デフォルトで、AWS IoT Greengrass Core ソフトウェアは、1 時間ごと、または 1,024 KB に達した後に、ログファイルをローテーションします。その結果、ログマネージャーコンポーネントは、AWS IoT Greengrass Core ソフトウェアまたは Greengrass コンポーネントが 1,024 KB を超えるログを書き込んだ後にのみ、ログをアップロードします。ログファイルの容量上限を低く設定して、ログファイルのローテーション頻度を上げることができます。これにより、ログマネージャーコンポーネントはログをより頻繁に CloudWatch ログにアップロードします。

    ログマネージャーコンポーネントバージョン 2.3.0 (およびそれ以降) は、すべてのログを処理およびアップロードします。新しいログを書き込むと、ログマネージャーバージョン 2.3.0 (およびそれ以降) は、ローテーションを待つことなく、そのアクティブなログファイルを処理して直接アップロードします。そのため、5 分以内に新しいログを表示することができます。

    ログマネージャーコンポーネントは、新しいログを定期的にアップロードします。デフォルトで、ログマネージャーコンポーネントは 5 分ごとに新しいログをアップロードします。ログマネージャーコンポーネントが を設定することでログをより頻繁に CloudWatch Logs にアップロードするように、アップロード間隔を短く設定できますperiodicUploadIntervalSec。この定期的な間隔を設定する方法の詳細については、「設定」を参照してください。

    ログは、同じ Greengrass ファイルシステムからほぼリアルタイムでアップロードできます。ログをリアルタイムで監視する必要がある場合、ファイルシステムログの使用を検討してください。

    注記

    ログの書き込み先として別のファイルシステムを使用している場合、ログマネージャーは、ログマネージャーコンポーネントバージョン 2.2.8 以前の動作に戻ります。ファイルシステムログへのアクセスについては、「ファイルシステムログをアクセス」を参照してください。

  • クロックスキュー

    ログマネージャーコンポーネントは、標準の Signature Version 4 署名プロセスを使用して、 CloudWatch ログへの API リクエストを作成します。コアデバイスのシステム時間が同期していない時間が 15 分を超えると、 CloudWatch ログはリクエストを拒否します。詳細については、「AWS 全般のリファレンス」の「署名バージョン 4 の署名プロセス」を参照してください。

システム サービス ログにアクセス

システムサービスとして AWS IoT Greengrass Core ソフトウェアを設定する場合、システムサービスログを確認して、ソフトウェアの起動失敗など、問題をトラブルシューティングできます。

システム サービス ログ (CLI) を表示するには
  1. 以下のコマンドを実行して AWS IoT Greengrass Core ソフトウェア システムのサービスログを確認します。

    Linux or Unix (systemd)
    sudo journalctl -u greengrass.service
    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.wrapper.log
    PowerShell
    gc C:\greengrass\v2\logs\greengrass.wrapper.log
  2. Windows デバイスでは、AWS IoT Greengrass Core ソフトウェアがシステムサービスエラー用に別のログファイルを作成します。次のコマンドを実行して、システムサービスエラーログを表示します。

    Windows Command Prompt (CMD)
    type C:\greengrass\v2\logs\greengrass.err.log
    PowerShell
    gc C:\greengrass\v2\logs\greengrass.err.log

Windows デバイスで、[Event Viewer] (イベントビューワー) アプリケーションを使用してシステム サービス ログも確認できます。

Windows サービスログ (イベントビューア) を確認するには
  1. Event Viewer (イベントビューワー) アプリケーションを開きます。

  2. [Windows Logs] (Windows ログ) を選択して展開します。

  3. [Application] (アプリケーション) を選択して、アプリケーション サービス ログを確認します。

  4. [Source] (ソース) が [greengrass] のイベントログを検索して開きます。

CloudWatch ログへのログ記録を有効にする

ログマネージャーコンポーネントをデプロイして、 CloudWatch ログにログを書き込むようにコアデバイスを設定できます。AWS IoT Greengrass Core ソフトウェア CloudWatch ログのログを有効にし、特定の Greengrass コンポーネントの CloudWatch ログを有効にできます。

注記

次の IAM ポリシーの例に示すように、Greengrass コアデバイスのトークン交換ロールは、コアデバイスが CloudWatch Logs に書き込むことを許可する必要があります。自動リソースプロビジョニング機能を備えた AWS IoT Greengrass Core ソフトウェアをインストールした場合、コアデバイスにはこれらの許可が付与されています。

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

AWS IoT Greengrass Core ソフトウェアログを CloudWatch Logs に書き込むようにコアデバイスを設定するには、 aws.greengrass.LogManager コンポーネントtrueに対して を uploadToCloudWatchに設定する設定更新を指定するデプロイを作成します。 AWS IoT GreengrassCore ソフトウェアログには、Greengrass nucleusプラグインコンポーネントのログが含まれます。

{ "logsUploaderConfiguration": { "systemLogsConfiguration": { "uploadToCloudWatch": "true" } } }

Greengrass コンポーネントのログを CloudWatch Logs に書き込むようにコアデバイスを設定するには、コンポーネントをコンポーネントログ記録設定のリストに追加する設定更新を指定するデプロイを作成します。このリストにコンポーネントを追加すると、ログマネージャーコンポーネントは CloudWatch ログにログを書き込みます。コンポーネントログには、ジェネリックコンポーネントと Lambda コンポーネントのログが含まれます。

{ "logsUploaderConfiguration": { "componentLogsConfigurationMap": { "com.example.HelloWorld": { } } } }

ログマネージャーコンポーネントをデプロイするときに、ディスク容量の制限と、コアデバイスが CloudWatch Logs に書き込んだ後にログファイルを削除するかどうかを設定することもできます。詳細については、「AWS IoT Greengrass のログ記録の設定」を参照してください。

AWS IoT Greengrass のログ記録の設定

次のオプションを設定して Greengrass コアデバイスのログをカスタマイズできます。これらのオプションを設定するには、Greengrass nucleus またはログマネージャーコンポーネントへの設定更新を指定するデプロイの作成を行います。

  • ログへの CloudWatch ログの書き込み

    コアデバイスをリモートでトラブルシューティングするには、 Core ソフトウェアとコンポーネントログを CloudWatch Logs に書き込むようにAWS IoT Greengrassコアデバイスを設定できます。これを行うには、ログマネージャーコンポーネントをデプロイして設定します。詳細については、「 CloudWatch ログへのログ記録を有効にする」を参照してください。

  • アップロードされたログファイルの削除

    ディスク容量の使用量を減らすために、ログファイルを CloudWatch Logs に書き込んだ後にログファイルを削除するようにコアデバイスを設定できます。詳細については、ログマネージャーコンポーネントの deleteLogFileAfterCloudUpload パラメータを参照してください。これは、AWS IoT Greengrass Core ソフトウェアログコンポーネントログを対象として指定できます。

  • ログディスクの容量制限

    ディスク容量の使用量を制限するには、コアデバイスの各ログに対して最大ディスク容量 (ローテーションされたログファイルを含む) を設定できます。例えば、greengrass.log とローテーションされた greengrass.log ファイルの最大合計ディスク容量を設定できます。詳細については、Greengrass nucleus コンポーネントの logging.totalLogsSizeKB パラメータとログマネージャーコンポーネントの diskSpaceLimit パラメータを参照してください。これは、AWS IoT Greengrass Core ソフトウェアログコンポーネントログを対象として指定できます。

  • ログファイルのサイズ制限

    各ログファイルの最大ファイルサイズを設定できます。ログファイルがこのファイルサイズの上限を超えると、AWS IoT Greengrass Core ソフトウェアは新しいログファイルを作成します。ログマネージャーコンポーネントバージョン 2.28 (およびそれ以前) では、ローテーションされたログファイルのみが CloudWatch Logs に書き込まれるため、より低いファイルサイズの制限を指定して、ログに CloudWatch ログをより頻繁に書き込むことができます。ログマネージャーコンポーネントバージョン 2.3.0 (およびそれ以降) は、ローテーションを待たずにすべてのログを処理してアップロードします。詳細については、Greengrass nucleus コンポーネントのログファイルサイズの上限パラメータ (logging.fileSizeKB) を参照してください。

  • 最小ログレベル

    Greengrass nucleus コンポーネントがファイル システム ログに書き込む最小ログレベルを設定できます。例えば、トラブルシューティングを支援するために DEBUG レベルのログを指定、あるいはコアデバイスが作成するログの量を減らすために ERROR レベルログを指定できます。詳細については、Greengrass nucleus コンポーネントのログレベルパラメータ (logging.level) を参照してください。

    ログマネージャーコンポーネントが CloudWatch ログに書き込む最小ログレベルを設定することもできます。例えば、より高いログレベルを指定してログコストを減らすこともできます。詳細については、ログマネージャーコンポーネントの minimumLogLevel パラメータを参照してください。これは、AWS IoT Greengrass Core ソフトウェアログコンポーネントログを対象として指定できます。

  • ログに書き込む CloudWatch ログをチェックする間隔

    ログマネージャーコンポーネントが CloudWatch ログにログを書き込む頻度を増減するには、新しいログファイルが書き込まれることを確認する間隔を設定できます。例えば、デフォルトの 5 分間隔よりも早く CloudWatch Logs のログを表示するように、間隔を短く指定できます。ログマネージャーコンポーネントはログファイルをより少ないリクエストにバッチ処理するので、コストを抑えるために間隔を長く指定できます。詳細については、ログマネージャーコンポーネントのアップロード間隔パラメータ (periodicUploadIntervalSec) を参照してください。

  • ログ形式

    AWS IoT Greengrass Core ソフトウェアがログをテキストまたは JSON 形式のいずれかに書き込むように選択できます。ログを読み取る場合、テキスト形式を選択します。または、アプリケーションを使用してログの読み取りまたはパーシングする場合、JSON 形式を選択します。詳細については、Greengrass nucleus コンポーネントのログ形式パラメータ (logging.format) を参照してください。

  • ローカルファイルシステムのログフォルダ

    ログフォルダを /greengrass/v2/logs からコアデバイスの別なフォルダに変更できます。詳細については、Greengrass nucleus コンポーネントの出力ディレクトリパラメータ (logging.outputDirectory) を参照してください。

AWS CloudTrail ログ

AWS IoT Greengrass は、ユーザー、ロール、AWS IoT Greengrass の AWS のサービス が行ったアクションの記録を提供するサービスである AWS CloudTrail と統合されています。詳細については、「を使用した AWS IoT Greengrass V2 API コールのログ記録 AWS CloudTrail」を参照してください。