Amazon CloudWatch Logs への Aurora PostgreSQL ログの発行 - Amazon Aurora

Amazon CloudWatch Logs への Aurora PostgreSQL ログの発行

Aurora PostgreSQL DB クラスターでは、Amazon CloudWatch Logs にログデータを定期的にエクスポートするように設定できます。そうすると、Aurora PostgreSQL DB クラスターの PostgreSQL ログからのイベントが自動的に Amazon CloudWatch Logs として Amazon CloudWatch に発行されます。CloudWatch では、Aurora PostgreSQL DB クラスターのロググループでエクスポートされたログデータを検索できます。このロググループには、クラスター内の各インスタンスからの PostgreSQL ログのイベントを含む 1 つまたは複数のログストリームがあります。

CloudWatch Logs にログを発行することで、クラスターの PostgreSQL ログレコードを耐久性の高いストレージに保存できます。CloudWatch Logs で利用可能なログデータを使用して、クラスターの運用を評価し、改善できます。また、CloudWatch を使用すると、アラームの作成やメトリクスの表示が可能です。詳細については、Amazon CloudWatch でログイベントをモニタリングする を参照してください。

注記

PostgreSQL ログを CloudWatch Logs に発行するとストレージが消費され、その分の料金が発生します。不要になった CloudWatch Logs は削除してください。

既存の Aurora PostgreSQL DB クラスターのログエクスポートオプションをオフにしても、CloudWatch Logs で既に保存されているデータには影響しません。既存のログは、ログ保存設定に基づいて CloudWatch Logs で引き続き使用できます。CloudWatch Logs の詳細については、「Amazon CloudWatch Logs とは」を参照してください。

Aurora PostgreSQL では、次のバージョンで CloudWatch Logs へのログの発行をサポートしています。

  • バージョン 14 の中の 14.3 以降

  • 13.3 以上の 13 バージョン

  • 12.8 以上の 12 バージョン

  • 11.12 以上の 11 バージョン

Amazon CloudWatch にログを発行するオプションをオンにする

Aurora PostgreSQL DB クラスターの PostgreSQL ログを CloudWatch Logs に発行するには、クラスターの [Log export] (ログのエクスポート) オプションを選択します。Aurora PostgreSQL DB クラスターを作成する場合、ログのエクスポート設定を選択できます。または、後でクラスターを変更することもできます。既存のクラスターを変更すると、その時点で各インスタンスの PostgreSQL ログが CloudWatch クラスターに発行されます。Aurora PostgreSQL の場合、Amazon CloudWatch に公開されるログは、PostgreSQL ログ (postgresql.log) のみです。

AWS Management Console、AWS CLI、RDS API を使用して Aurora PostgreSQL DB クラスターのログエクスポート機能をオンにできます。

[Log export] (ログのエクスポート) オプションを選択すると、Aurora PostgreSQL DB クラスターから CloudWatch Logs に PostgreSQL ログの発行が開始されます。

コンソールからログエクスポート機能をオンにするには
  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

  3. CloudWatch Logs にログデータを発行する Aurora PostgreSQL DB クラスターを選択します。

  4. [Modify] を選択します。

  5. [Log exports] (ログのエクスポート) セクションで、[PostgreSQL] を選択します。

  6. [続行] を選択し、概要ページで [クラスターの変更] を選択します。

ログのエクスポートオプションをオンにすると、AWS CLI で Amazon CloudWatch Logs に Aurora PostgreSQL ログの発行が開始されます。これを行うには、以下のオプションを指定して modify-db-cluster AWS CLI コマンドを実行します。

  • --db-cluster-identifier— DB クラスター識別子。

  • --cloudwatch-logs-export-configuration―DB クラスターで、CloudWatch Logs へエクスポートするログタイプを設定するための環境設定。

また、以下の AWS CLI コマンドのいずれかを実行して、Aurora PostgreSQL ログを発行することもできます。

以下のオプションを使用して、この AWS CLI コマンドの 1 つを実行します。

  • --db-cluster-identifier— DB クラスター識別子。

  • --engine — データベースエンジン。

  • --enable-cloudwatch-logs-exports — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

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

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

Linux、macOS、Unix の場合:

aws rds create-db-cluster \ --db-cluster-identifier my-db-cluster \ --engine aurora-postgresql \ --enable-cloudwatch-logs-exports postgresql

Windows の場合:

aws rds create-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --engine aurora-postgresql ^ --enable-cloudwatch-logs-exports postgresql

次のコマンドでは、ログファイルが CloudWatch Logs に発行されるよう既存の Aurora PostgreSQL DB クラスターを変更します。--cloudwatch-logs-export-configuration 値は JSON オブジェクトです。このオブジェクトのキーは EnableLogTypes で、その値は postgresql です。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster \ --db-cluster-identifier my-db-cluster \ --cloudwatch-logs-export-configuration '{"EnableLogTypes":["postgresql"]}'

Windows の場合:

aws rds modify-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --cloudwatch-logs-export-configuration '{\"EnableLogTypes\":[\"postgresql\"]}'
注記

Windows コマンドプロンプトを使用する場合、バックラッシュ (\)でプレフィックスして JSON コードの二重引用符 (")をエスケープする必要があります。

次の例では、既存の Aurora PostgreSQL DB クラスターを変更して、CloudWatch Logs へのログファイルの発行を無効にします。--cloudwatch-logs-export-configuration 値は JSON オブジェクトです。このオブジェクトのキーは DisableLogTypes で、その値は postgresql です。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster \ --db-cluster-identifier mydbinstance \ --cloudwatch-logs-export-configuration '{"DisableLogTypes":["postgresql"]}'

Windows の場合:

aws rds modify-db-cluster ^ --db-cluster-identifier mydbinstance ^ --cloudwatch-logs-export-configuration "{\"DisableLogTypes\":[\"postgresql\"]}"
注記

Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\) を付けてエスケープする必要があります。

ログのエクスポートオプションをオンにすると、RDS API で Aurora PostgreSQL ログの発行が開始されます。これを行うには、以下のオプションを指定して [ModifyDBCluster] オペレーションを実行します。

  • DBClusterIdentifier - DB クラスター識別子。

  • CloudwatchLogsExportConfiguration - DB クラスターの CloudWatch Logs にエクスポートするログタイプを有効化するための環境設定。

以下の RDS API オペレーションのいずれかを実行することで、RDS API を使用して Aurora PostgreSQL ログを発行することもできます。

次のパラメータを指定して RDS API アクションを実行します。

  • DBClusterIdentifier— DB クラスター識別子。

  • Engine — データベースエンジン。

  • EnableCloudwatchLogsExports — DB クラスターの CloudWatch Logs へのエクスポートに使用できるログタイプの構成設定。

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

Amazon CloudWatch でログイベントをモニタリングする

Aurora PostgreSQL ログイベントを Amazon CloudWatch Logs として発行して利用可能にすることで、Amazon CloudWatch を使用してイベントを表示およびモニタリングできます。モニタリングの詳細については、「CloudWatch Logs に送信されたログデータを表示する」を参照してください。

[Log exports] (ログのエクスポート) をオンにすると、プレフィックス /aws/rds/cluster/ を使用して、次のパターンのように、Aurora PostgreSQL の名前とログタイプで新規のロググループが自動的に作成されます。

/aws/rds/cluster/your-cluster-name/postgresql

例として、docs-lab-apg-small という名前の Aurora PostgreSQL DB クラスターが Amazon CloudWatch Logs にログをエクスポートするとします。Amazon CloudWatch のロググループ名を以下に示します。

/aws/rds/cluster/docs-lab-apg-small/postgresql

指定する名前のロググループがすでに存在する場合、Aurora はこのロググループを使用して Aurora DB クラスターにログデータをエクスポートします。Aurora PostgreSQL DB クラスターの各 DB インスタンスは、その PostgreSQL ログを個別のログストリームとしてロググループにアップロードします。Amazon CloudWatch で利用できるさまざまなグラフィカルツールや分析ツールを使用して、ロググループとそのログストリームを調べることができます。

例えば、Aurora PostgreSQL DB クラスターのログイベント内の情報を検索することや、CloudWatch Logs コンソール、AWS CLI、CloudWatch Logs API を使用してイベントをフィルタリングすることができます。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「ログデータの検索およびフィルタリング」を参照してください。

デフォルトでは、新しいロググループは保持時間として [Never expire] (期限なし) を使用して作成します。ログの保持期間を変更するには、CloudWatch Logs コンソール、AWS CLI、または CloudWatch Logs API を使用します。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch ログでのログデータ保持期間の変更」を参照してください。

ヒント

AWS CloudFormation などの自動設定を使用して、ログの保持期間、メトリックフィルター、アクセス権などを事前定義したロググループを作成できます。

CloudWatch Logs Insights を使用した PostgreSQL のログ分析

Aurora PostgreSQL DB クラスターの PostgreSQL ログが CloudWatch Logs として発行されると、CloudWatch Logs Insights を使用して Amazon CloudWatch Logs のログデータをインタラクティブに検索および分析できます。CloudWatch Logs Insights には、ログデータを分析するためのクエリ言語、サンプルクエリなどのツールが含まれており、潜在的な問題を特定して修正を確認できます。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。Amazon CloudWatch Logs

CloudWatch Logs Insights を使用して PostgreSQL ログを分析する方法
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインでログを開いて ログインサイト を選択します。

  3. [Select log group(s)] (ロググループの選択) で、Aurora PostgreSQL DB クラスターのロググループを選択します。

    Aurora PostgreSQL ロググループを選択します。
  4. クエリエディタで、現在表示されているクエリを削除し、以下を入力してクエリの実行を選択します。

    ##Autovacuum execution time in seconds per 5 minute fields @message | parse @message "elapsed: * s" as @duration_sec | filter @message like / automatic vacuum / | display @duration_sec | sort @timestamp | stats avg(@duration_sec) as avg_duration_sec, max(@duration_sec) as max_duration_sec by bin(5 min)
    クエリエディタでクエリを実行する。
  5. [Visualization (視覚化)] タブを選択します。

    Visualization (視覚化) タブ。
  6. [ダッシュボードに追加] を選択します。

  7. ダッシュボードを選択で、ダッシュボードを選択するか、名前を入力して新しいダッシュボードを作成します。

  8. ウィジェットのタイプで、視覚化のウィジェットタイプを選択します。

    ダッシュボード。
  9. (オプション) ログクエリの結果に基づいてウィジェットを追加します。

    1. [ウィジェットの追加] を選択します。

    2. Line などの、ウィジェットタイプを選択します。

      ウィジェットを選択します。
    3. このダッシュボードに追加するウィンドウで、ログを選択します。

      ダッシュボードにログを追加します。
    4. ロググループの選択で、DB クラスターのロググループを選択します。

    5. クエリエディタで、現在表示されているクエリを削除し、以下を入力してクエリの実行を選択します。

      ##Autovacuum tuples statistics per 5 min fields @timestamp, @message | parse @message "tuples: " as @tuples_temp | parse @tuples_temp "* removed," as @tuples_removed | parse @tuples_temp "remain, * are dead but not yet removable, " as @tuples_not_removable | filter @message like / automatic vacuum / | sort @timestamp | stats avg(@tuples_removed) as avg_tuples_removed, avg(@tuples_not_removable) as avg_tuples_not_removable by bin(5 min)
      クエリエディタでクエリを実行する。
    6. [ウィジェットの作成] を選択します。

      ダッシュボードは次のイメージのような見た目になっている必要があります。

      2 つのグラフを含むダッシュボード。