

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

# AWS IoT Greengrass ログのモニタリング
<a name="monitor-logs"></a>

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 Logs へのログ記録を有効化](#enable-cloudwatch-logs)」を参照してください。

**Topics**
+ [ファイル システム ログをアクセス](#access-local-logs)
+ [CloudWatch Logs をアクセス](#access-cloudwatch-logs)
+ [システム サービス ログにアクセス](#access-system-service-logs)
+ [CloudWatch Logs へのログ記録を有効化](#enable-cloudwatch-logs)
+ [AWS IoT Greengrass のログ記録の設定](#configure-logging)
+ [AWS CloudTrail ログ](#cloudtrail-integration)

## ファイル システム ログをアクセス
<a name="access-local-logs"></a>

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 ソフトウェアとプラグインコンポーネント ([ログマネージャー](log-manager-component.md)と[シークレットマネージャー](secret-manager-component.md)など) のコアです。
+ `ComponentName.log` - Greengrass コンポーネントのログファイル。コンポーネント ログ ファイルを使用して、コアデバイスに実行される Greengrass コンポーネントに関するリアルタイム情報を確認します。ジェネリックコンポーネントと Lambda コンポーネントは、標準出力 (stdout) と標準エラー (stderr) をこれらのログファイルに書き込みます。
+ `main.log` - コンポーネントライフサイクルを処理する `main` サービスのログファイル。このログファイルは常に空の状態になります。

プラグイン、ジェネリック、Lambda コンポーネントの違いの詳細については、「[コンポーネントタイプ](develop-greengrass-components.md#component-types)」を参照してください。

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

  ファイルシステムの 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 コンポーネント](greengrass-nucleus-component.md)で設定できます。
+ **ログファイルの削除**

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

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

------
#### [ Linux or Unix ]

  ```
  sudo tail -f /greengrass/v2/logs/greengrass.log
  ```

------
#### [ Windows Command Prompt (CMD) ]

  ```
  type C:\greengrass\v2\logs\com.example.HelloWorld.log
  ```

  <a name="windows-cmd-type-observe-logs"></a>`type` コマンドは、ファイルのコンテンツを端末に書き込みます。このコマンドを複数回実行して、ファイル内の変更を確認してください。

------
#### [ PowerShell ]

  ```
  gc C:\greengrass\v2\logs\greengrass.log -Tail 10 -Wait
  ```

------

**コンポーネントのログファイルを確認するには**
+ 次のコマンドを実行して、ログファイルをリアルタイムで確認します。`/greengrass/v2` または *C:\$1greengrass\$1v2* を 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 CLI](greengrass-cli-component.md) の `logs` コマンドを使用して、コアデバイスの Greengrass ログを分析することもできます。`logs` コマンドを実行するには、[Greengrass nucleus](greengrass-nucleus-component.md) が JSON 形式のログファイルを出力するように設定する必要があります。詳細については、「[Greengrass コマンドラインインターフェイス](gg-cli.md)」および「[ログ](gg-cli-logs.md)」を参照してください。

## CloudWatch Logs をアクセス
<a name="access-cloudwatch-logs"></a>

[ログマネージャーコンポーネント](log-manager-component.md)をデプロイして、コアデバイスが CloudWatch Logs に書き込むように設定します。詳細については、「[CloudWatch Logs へのログ記録を有効化](#enable-cloudwatch-logs)」を参照してください。次に、Amazon CloudWatch コンソール の **[Logs]** (ログ) ページで、あるいは CloudWatch Logs API を使用して、ログを確認できます。<a name="log-manager-log-group-stream-format"></a>

**ロググループ名**  

```
/aws/greengrass/componentType/region/componentName
```
ロググループ名は、次の変数を使用します。  
+ `componentType` - 次のいずれかに該当するコンポーネントのタイプ。
  + `GreengrassSystemComponent` - このロググループには、Greengrass nucleus と同じ JVM で実行される nucleus とプラグインコンポーネントのログが含まれます。コンポーネントは [Greengrass nucleus](greengrass-nucleus-component.md) の一部です。
  + `UserComponent` - このロググループには、ジェネリックコンポーネント、Lambda コンポーネント、デバイスの他のアプリケーションのログが含まれます。コンポーネントは Greengrass nucleus の一部ではありません。

  詳細については、「[コンポーネントタイプ](develop-greengrass-components.md#component-types)」を参照してください。
+ `region` - コアデバイスが使用する AWS リージョン。
+ `componentName` - コンポーネントの名前。システムログの場合、この値は `System` です。

**ログストリーム名**  

```
/date/thing/thingName
```
ログストリーム名は次の変数を使用します。  
+ `date` - `2020/12/15` など、ログの日付。ログマネージャーコンポーネントは `yyyy/MM/dd` 形式を使用します。
+ `thingName` - コアデバイスの名前。
モノの名前にコロン (`:`) が含まれている場合、ログマネージャーはコロンをプラス (`+`) に置き換えます。

<a name="log-manager-considerations-intro"></a>次の考慮事項は、ログマネージャーコンポーネントを使用して CloudWatch Logs に書き込むときに適用されます。<a name="log-manager-considerations"></a>
+ **ログ遅延**
**注記**  
ログマネージャーバージョン 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 Logs にログをアップロードする頻度が高くなります。

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

  ログマネージャーコンポーネントは、新しいログを定期的にアップロードします。デフォルトで、ログマネージャーコンポーネントは 5 分ごとに新しいログをアップロードします。`periodicUploadIntervalSec` を設定することで、ログマネージャーコンポーネントがより頻繁に CloudWatch Logs にログをアップロードするように、より短いアップロード間隔を設定できます。この定期的な間隔を設定する方法の詳細については、「[設定](https://docs.aws.amazon.com/greengrass/v2/developerguide/log-manager-component.html#log-manager-component-configuration)」を参照してください。

  ログは、同じ Greengrass ファイルシステムからほぼリアルタイムでアップロードできます。ログをリアルタイムで監視する必要がある場合、[ファイルシステムログ](#access-local-logs)の使用を検討してください。
**注記**  
ログの書き込み先として別のファイルシステムを使用している場合、ログマネージャーは、ログマネージャーコンポーネントバージョン 2.2.8 以前の動作に戻ります。ファイルシステムログへのアクセスについては、「[ファイルシステムログをアクセス](https://docs.aws.amazon.com/greengrass/v2/developerguide/monitor-logs.html#access-local-logs)」を参照してください。
+ **クロックスキュー**

  ログマネージャーコンポーネントは、標準の署名バージョン 4 の署名プロセスを使用して、CloudWatch Logs への API 要求を作成します。コアデバイスのシステム時刻が同期していない時間が 15 分を超えると、CloudWatch Logs は要求を拒否します。詳細については、*AWS 全般のリファレンス*の「[署名バージョン 4 の署名プロセス](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html)」を参照してください。

## システム サービス ログにアクセス
<a name="access-system-service-logs"></a>

[システムサービスとして AWS IoT Greengrass Core ソフトウェアを設定](configure-greengrass-core-v2.md#configure-system-service)する場合、システムサービスログを確認して、ソフトウェアの起動失敗など、問題をトラブルシューティングできます。

**システム サービス ログ (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
   ```

------

1. 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** (イベントビューワー) アプリケーションを開きます。

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

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

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

## CloudWatch Logs へのログ記録を有効化
<a name="enable-cloudwatch-logs"></a>

[ログマネージャーコンポーネント](log-manager-component.md)をデプロイして、CloudWatch Logs にログを書き込むようにコアデバイスを設定できます。AWS IoT Greengrass Core ソフトウェアログ用に CloudWatch Logs を 有効にして、特定の Greengrass コンポーネント用に CloudWatch Logs を有効にできます。

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

```
{
  "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` コンポーネントの `uploadToCloudWatch` を `true` に設定する設定更新を指定する[デプロイの作成](create-deployments.md)を行います。AWS IoT GreengrassCore ソフトウェアログには、[Greengrass nucleus](greengrass-nucleus-component.md) と[プラグインコンポーネント](develop-greengrass-components.md#component-types)のログが含まれます。

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

コアデバイスが Greengrass コンポーネントのログを CloudWatch Logs に書き込むように設定するには、コンポーネントをコンポーネントログ設定リストに追加する設定更新を指定する[デプロイを作成](create-deployments.md)します。コンポーネントをこのリストに追加するとき、ログマネージャーコンポーネントは独自のログを CloudWatch Logs に書き込みます。コンポーネントログには、[ジェネリックコンポーネントと Lambda コンポーネント](develop-greengrass-components.md#component-types)のログが含まれます。

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

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

## AWS IoT Greengrass のログ記録の設定
<a name="configure-logging"></a>

次のオプションを設定して Greengrass コアデバイスのログをカスタマイズできます。これらのオプションを設定するには、Greengrass nucleus またはログマネージャーコンポーネントへの設定更新を指定する[デプロイの作成](create-deployments.md)を行います。
+ **CloudWatch Logs にログの書込み**

  コアデバイスを遠隔でトラブルシューティングするには、コアデバイスが AWS IoT Greengrass Core ソフトウェアとコンポーネントログを、CloudWatch Logs に書き込むように設定できます。これを行うには、[ログマネージャーコンポーネント](log-manager-component.md)をデプロイして設定します。詳細については、「[CloudWatch Logs へのログ記録を有効化](#enable-cloudwatch-logs)」を参照してください。
+ **アップロードされたログファイルの削除**

  ディスク容量の使用量を減らすには、ログファイルを CloudWatch Logs に書き込んだ後にログファイルを削除するように、コアデバイスを設定できます。詳細については、ログマネージャーコンポーネントの `deleteLogFileAfterCloudUpload` パラメータを参照してください。これは、[AWS IoT Greengrass Core ソフトウェアログ](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)と[コンポーネントログ](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)を対象として指定できます。
+ **ログディスクの容量制限**

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

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

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

  ログマネージャーコンポーネントが CloudWatch Logs に書き込む最小ログレベルを設定することもできます。例えば、より高いログレベルを指定して[ログコスト](https://aws.amazon.com/cloudwatch/pricing/)を減らすこともできます。詳細については、ログマネージャーコンポーネントの `minimumLogLevel` パラメータを参照してください。これは、[AWS IoT Greengrass Core ソフトウェアログ](log-manager-component.md#log-manager-component-configuration-system-logs-configuration)と[コンポーネントログ](log-manager-component.md#log-manager-component-configuration-component-logs-configuration)を対象として指定できます。
+ **CloudWatch Logs に書き込むログをチェックする間隔**

  ログマネージャーコンポーネントが CloudWatch Logs にログを書き込む頻度を増減するには、新しいログファイルの書き込みをチェックする間隔を設定できます。例えば、デフォルトの 5 分間隔よりも早く CloudWatch Logs でログを確認するように、間隔を短く指定できます。ログマネージャーコンポーネントはログファイルをより少ないリクエストにバッチ処理するので、コストを抑えるために間隔を長く指定できます。詳細については、ログマネージャーコンポーネントの[アップロード間隔パラメータ](log-manager-component.md#log-manager-component-configuration-periodic-upload-interval-sec) (`periodicUploadIntervalSec`) を参照してください。
+ **ログ形式**

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

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

## AWS CloudTrail ログ
<a name="cloudtrail-integration"></a>

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