

# Amazon CloudWatch Logs への Amazon Aurora MySQL ログの発行
<a name="AuroraMySQL.Integrating.CloudWatch"></a>

Aurora MySQL DB クラスターを設定して、全般ログ、スローログ、監査ログおよびエラーログのデータを Amazon CloudWatch Logs のロググループに発行できます。CloudWatch Logs を使用すると、ログデータのリアルタイム分析や、CloudWatch を使用したアラームの作成、メトリクスの表示を行うことができます。CloudWatch Logs を使用して、耐久性の高いストレージにログレコードを格納できます。

ログを CloudWatch Logs に発行するには、それぞれのログを有効にする必要があります。エラーログはデフォルトで有効になっていますが、他のタイプのログは明示的に有効にする必要があります。MySQL でログを有効にする方法については、MySQL ドキュメントの「[一般クエリログおよびスロークエリログの出力先の選択](https://dev.mysql.com/doc/refman/8.0/en/log-destinations.html)」を参照してください。Aurora MySQL 監査ログを有効にする方法については、「[アドバンストな監査の有効化](AuroraMySQL.Auditing.md#AuroraMySQL.Auditing.Enable)」を参照してください。

**注記**  
Aurora は、無効化された監査ログデータをエクスポートする場合に、既存のロググループまたはログストリームを削除しません。既存の監査ログデータが無効化されている場合、既存のログは保持期間により、CloudWatch Logs で使用可能となり、保管された監査ログデータに変更を加えることもできます。ログストリーミングとロググループは、CloudWatch Logs コンソール、AWS CLI または CloudWatch Logs API を使用して削除できます。
CloudWatch Logs に監査ログを発行する別の方法は、[高度な監査] を有効にし、カスタウ DB クラスターパラメータグループを作成して、`server_audit_logs_upload` パラメータを `1` に設定することです。`server_audit_logs_upload` DB クラスターパラメータのデフォルト値は `0` です。[高度な監査] を有効にする方法については、「[Amazon Aurora MySQL DB クラスターでのアドバンストな監査の使用](AuroraMySQL.Auditing.md)」を参照してください。  
この代替メソッドを使用する場合、CloudWatch Logs にアクセスして `aws_default_logs_role` クラスターレベルパラメータをこのロールの ARN に設定するには、IAM ロールが必要です。ロールの作成の詳細については、「[AWS のサービスにアクセスするための IAM ロールの設定](AuroraMySQL.Integrating.Authorizing.IAM.md)」を参照してください。ただし、`AWSServiceRoleForRDS` サービスにリンクされたロールがある場合、CloudWatch Logs へのアクセスが提供され、カスタム定義のロールが上書きされます。Amazon RDS のサービスにリンクされたロールの詳細については、「[Amazon Aurora のサービスにリンクされたロールの使用](UsingWithRDS.IAM.ServiceLinkedRoles.md)」を参照してください。
監査ログを CloudWatch Logs にエクスポートしない場合は、監査ログをエクスポートするすべてのメソッドが無効になっていることを確認してください。これらのメソッドは、AWS マネジメントコンソール、AWS CLI、RDS API、および `server_audit_logs_upload` パラメータです。
 Aurora Serverless v1 DB クラスターの手順は、プロビジョンドインスタンスや Aurora Serverless v2 インスタンスを含む DB クラスターの手順とは少し異なります。Aurora Serverless v1 クラスターでは、設定パラメータによって有効にしたすべてのログを自動的にアップロードします。  
したがって、Aurora Serverless v1 DB クラスターでログのアップロードを有効または無効にするには、DB クラスターのパラメータグループでログタイプ別にオンとオフを切り替えます。AWS マネジメントコンソール、AWS CLI、または RDS API でクラスター自体の設定は変更しません。Aurora Serverless v1 クラスターの MySQL ログのオンとオフの詳細については、「[Aurora Serverless v1 のパラメータグループ](aurora-serverless-v1.how-it-works.md#aurora-serverless.parameter-groups)」を参照してください。

## コンソール
<a name="AuroraMySQL.Integrating.CloudWatch.Console"></a>

コンソールを使用して、プロビジョンドクラスターの Aurora MySQL ログを CloudWatch Logs に発行できます。

**コンソールから Aurora MySQL ログを発行するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. ログデータを公開する Aurora MySQL DB クラスターを選択します。

1. **Modify** を選択します。

1. [**ログのエクスポート**] セクションで、CloudWatch Logs に公開するログを選択します。

1. [**続行**] を選択し、概要ページで [**Modify DB Cluster (DB クラスターの変更)**] を選択します。

## AWS CLI
<a name="AuroraMySQL.Integrating.CloudWatch.CLI"></a>

AWS CLI を使用して、プロビジョンドクラスターの Aurora MySQL ログを公開できます。これを行うには、以下のオプションを指定して [modify-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-cluster.html) AWS CLI コマンドを実行します。
+ `--db-cluster-identifier`— DB クラスター識別子。
+ `--cloudwatch-logs-export-configuration` — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

以下の AWS CLI コマンドのいずれかを実行することで、Aurora MySQL ログを公開することもできます。
+ [create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-cluster.html)
+ [restore-db-cluster-from-s3](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-s3.html)
+ [restore-db-cluster-from-snapshot](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-from-snapshot.html)
+ [restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html)

以下のオプションを使用して、この AWS CLI コマンドの 1 つを実行します。
+ `--db-cluster-identifier`— DB クラスター識別子。
+ `--engine` — データベースエンジン。
+ `--enable-cloudwatch-logs-exports` — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

実行する AWS CLI コマンドに応じて、他のオプションが必要となる場合があります。

**Example**  
次のコマンドでは、ログファイルが CloudWatch Logs に発行されるよう既存の Aurora MySQL DB クラスターを変更します。  
Linux、macOS、Unix の場合:  

```
1. aws rds modify-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","general","slowquery","audit","instance"]}'
```
Windows の場合:  

```
1. aws rds modify-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --cloudwatch-logs-export-configuration '{"EnableLogTypes":["error","general","slowquery","audit","instance"]}'
```

**Example**  
次のコマンドでは、ログファイルが CloudWatch Logs に発行されるよう Aurora MySQL DB クラスターを作成します。  
Linux、macOS、Unix の場合:  

```
1. aws rds create-db-cluster \
2.     --db-cluster-identifier mydbcluster \
3.     --engine aurora \
4.     --enable-cloudwatch-logs-exports '["error","general","slowquery","audit","instance"]'
```
Windows の場合:  

```
1. aws rds create-db-cluster ^
2.     --db-cluster-identifier mydbcluster ^
3.     --engine aurora ^
4.     --enable-cloudwatch-logs-exports '["error","general","slowquery","audit","instance"]'
```

## RDS API
<a name="AuroraMySQL.Integrating.CloudWatch.API"></a>

RDS API を使用して、プロビジョンドクラスターの Aurora MySQL ログを発行できます。これを行うには、以下のオプションを指定して [ModifyDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBCluster.html) オペレーションを実行します。
+ `DBClusterIdentifier`— DB クラスター識別子。
+ `CloudwatchLogsExportConfiguration` — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

以下の RDS API オペレーションのいずれかを実行することで、RDS API を使用して Aurora MySQL ログを発行することもできます。
+ [CreateDBCluster](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html)
+ [RestoreDBClusterFromS3](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromS3.html)
+ [RestoreDBClusterFromSnapshot](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterFromSnapshot.html)
+ [RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html)

次のパラメータを指定して、RDS API オペレーションを実行します。
+ `DBClusterIdentifier`— DB クラスター識別子。
+ `Engine` — データベースエンジン。
+ `EnableCloudwatchLogsExports` — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

実行する AWS CLI コマンドに応じて、他のパラメータが必要となる場合があります。

## Amazon CloudWatch でログイベントをモニタリングする
<a name="AuroraMySQL.Integrating.CloudWatch.Monitor"></a>

Aurora MySQL ログイベントを有効にすると、Amazon CloudWatch Logs でイベントをモニタリングできます。新しいクラスターロググループは、`cluster-name` が DB クラスター名となり、`log_type` がログタイプとなる次のプレフィックスの Aurora DB クラスターに自動的に作成されます。

```
/aws/rds/cluster/cluster-name/log_type
```

例えば、エクスポート関数を設定して、`mydbcluster` という名前の DB クラスターのスロークエリログを作成すると、スロークエリデータは、`/aws/rds/cluster/mydbcluster/slowquery` ロググループのスロークエリログストリーミングに保存されます。

クラスターのすべてのインスタンスにおけるイベントは、異なるログストリーミングを使用して、ロググループにプッシュされます。この動作は、次の条件のうちのどちらが true であるかによって異なります。
+ 指定された名前のロググループが存在する。

  Aurora は既存のロググループを使用して、クラスターにログデータをエクスポートします。事前定義されたログ保持期間、メトリクスフィルター、カスタムアクセスを持つロググループを作成するために、AWS CloudFormationのような自動設定を使用できます。
+ 指定された名前のロググループが存在しない。

  一致するログエントリがインスタンスのログファイルで検出されると、Aurora MySQL は CloudWatch Logs に新しいロググループを自動的に作成します。ロググループは、**失効しない**デフォルトのログ保持期間を使用します。

  ログの保持期間を変更するには、CloudWatch Logs コンソール、AWS CLI、または CloudWatch Logs API を使用します。CloudWatch Logs でログの保持期間を変更する方法の詳細については、「[CloudWatch Logs でのログデータ保管期間の変更](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SettingLogRetention.html)」を参照してください。

DB クラスターのログイベント内の情報を検索するには、CloudWatch Logs コンソール、AWS CLI、または CloudWatch Logs API を使用します。検索およびログデータのフィルタ処理の詳細については、「[ログデータの検索およびフィルタ処理](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html)」を参照してください。