Amazon DevOps Guru for Amazon RDS でパフォーマンスの異常を分析する - Amazon Aurora

Amazon DevOps Guru for Amazon RDS でパフォーマンスの異常を分析する

Amazon DevOps Guru は、開発者およびオペレーターがアプリケーションのパフォーマンスと可用性を向上させるためのフルマネージド型オペレーションサービスです。DevOps Guru は、運用上の問題の特定に関連するタスクをオフロードし、アプリケーションを改善するための推奨事項を迅速に実装できるようにします。詳細については、「Amazon DevOps Guru ユーザーガイド」の「Amazon DevOps Guru とは」を参照してください。

DevOps Guru は、すべての Amazon RDS DB エンジンの既存の運用上の問題を検出し、分析し、推奨を行います。DevOps Guru for RDS は、Amazon Aurora データベースの Performance Insights メトリクスに機械学習を適用することで、この機能を拡張します。これらのモニタリング機能により、DevOps Guru for RDS はパフォーマンスのボトルネックを検出して診断し、具体的な修正措置を推奨できます。DevOps Guru for RDS は、Aurora データベース で問題が発生する前に問題条件を検出することもできます。

これらの推奨事項を RDS コンソールで表示できるようになりました。詳細については、「Amazon Aurora の推奨事項の表示とこれらに対する対応」を参照してください。

次の動画は DevOps Guru for RDS の概要です。

この主題の詳細については、Amazon DevOps Guru for RDS の内部を参照してください。

DevOps Guru for RDS の利点

Amazon Aurora データベースを担当していて、そのデータベースに影響を与えるイベントやリグレッションの発生を知らないことがあります。問題を知っても、なぜそれが発生しているのか、どう対処すべきかわからないこともあります。データベース管理者 (DBA) に問い合わせたり、サードパーティーツールに頼ったりするのではなく、DevOps Guru for RDS のレコメンデーションに従ってください。

DevOps Guru for RDS の詳細な分析により、次の利点が得られます。

高速診断

DevOps Guru for RDS は、データベースのテレメトリを継続的にモニタリングおよび分析します。Performance Insights、拡張モニタリング、および Amazon CloudWatch は、データベースクラスターのテレメトリーデータを収集します。DevOps Guru for RDS は、統計的な機械学習の技術を使用してこのデータをマイニングし、異常を検出します。テレメトリーデータの詳細については、Amazon Aurora ユーザーガイドの「Amazon Aurora での Performance Insights を使用した DB 負荷のモニタリング」および「拡張モニタリングを使用した OS メトリクスのモニタリング、を参照してください。

高速解像度

各異常はパフォーマンスの問題を特定し、調査または修正措置の方法を提案します。例えば、DevOps Guru for RDS では、特定の待機イベントの調査をお勧めすることがあります。または、データベース接続数を制限するよう、アプリケーションプールの設定のチューニングをお勧めすることもあります。これらのレコメンデーションに基づいて、マニュアルでトラブルシューティングを実行するよりも迅速にパフォーマンスの問題を解決できます。

事前対応型インサイト

DevOps Guru for RDS は、リソースからのメトリクスを使用して、問題となる可能性のある動作を大きな問題になる前に検出します。例えば、データベースが使用するディスク上の一時テーブルの数が増え、パフォーマンスに影響を与え始めたことを検出できます。その場合、DevOps Guru は問題が大きくなる前に対処するのに役立つ推奨事項を提供します。

Amazon エンジニアの深い知識と機械学習

パフォーマンス問題を検出し、ボトルネックの解決を支援するために、DevOps Guru for RDS は機械学習 (ML) と高度な数式に依存しています。Amazon データベースエンジニアは、数十万のデータベース管理の長年の経験をカプセル化した DevOps Guru for RDS の知見の開発に貢献しました。この集合的な知識を活かすことで、DevOps Guru for RDS はベストプラクティスを伝えることができます。

DevOps Guru for RDSはどのように機能しますか

DevOps Guru for RDS は、Amazon RDS Performance Insights から Aurora データベースに関するデータを収集します。最も重要なメトリクスはDBLoadです。DevOps Guru for RDS は、Performance Insights メトリクスを消費し、機械学習を使用して分析し、ダッシュボードにインサイトを公開します。

インサイトは、DevOps Guru によって検出された関連する異常のコレクションです。

DevOps Guru for RDS では、異常とは、Amazon Aurora データベースの通常のパフォーマンスから逸脱したパターンのことです。

事前対応型インサイト

プロアクティブインサイトでは、問題のある動作を発生前に知ることができます。異常と共に推奨事項と関連メトリクスも含まれるため、Amazon Aurora データベースの問題が大きな問題になる前に対処できます。これらのインサイトは、DevOps Guru ダッシュボードに発行されます。

例えば、DevOps Guru は、Aurora PostgreSQL データベースがディスク上に多数のテンポラリテーブルを作成していることを検出する場合があります。対処しなければ、この傾向はパフォーマンス問題につながる可能性があります。各プロアクティブインサイトには、是正措置に関する推奨事項と、Amazon DevOps Guru のプロアクティブインサイトによる Aurora MySQL のチューニング または Amazon DevOps Guru のプロアクティブインサイトによる Aurora PostgreSQL のチューニング 内の関連トピックへのリンクが含まれています。詳細については、「Amazon DevOps Guru ユーザーガイド」の「Working with insights in DevOps Guru」を参照してください。

事後対応型インサイト

リアクティブインサイトは、異常な動作を発生時に識別します。DevOps Guru for RDS が Amazon Aurora DB インスタンスでパフォーマンス問題を発見すると、DevOps Guru ダッシュボードにリアクティブインサイトが発行されます。詳細については、「Amazon DevOps Guru ユーザーガイド」の「Working with insights in DevOps Guru」を参照してください。

因果異常

因果異常は、リアクティブインサイト内のトップレベルの異常です。データベースロード (DB ロード)DevOps Guru for RDS の因果異常です。

異常は、深刻度レベルをのいずれかに割り当てて、パフォーマンスへの影響を測定します。詳細については、「Amazon DevOps Guru ユーザーガイド」の「DevOps Guru for RDS の主要な概念」を参照してください。

DevOps Guru が DB インスタンスで現在の異常を検出すると、RDS コンソールの[Databases] (データベース) ページにアラートが表示されます。コンソールは、過去 24 時間に発生した異常についても警告します。RDS コンソールから異常ページに移動するには、アラートメッセージ内のリンクを選択します。RDS コンソールでは、Amazon Aurora DB クラスター のページでもアラートが表示されます。

コンテキスト異常

コンテキスト異常は、事後対応型インサイトに関連するデータベースロード (DB ロード)での所見です。各コンテキスト異常は、調査が必要な特定の Amazon Aurora のパフォーマンス問題を記述します。例えば、DevOps Guru for RDS は、CPU 容量の増加を検討したり、DB ロードに寄与している待機イベントを調査するよう推奨することがあります。

重要

本稼働インスタンスの修正前に、各変更の影響を完全に把握できるように、テストインスタンスでの変更のテストをお勧めします。このようにして、変更の影響を理解します。

詳細については、Amazon DevOps Guru ユーザーガイドの「Analyzing anomalies in Amazon RDS」(Amazon RDS の異常を分析する) を参照してください。

RDS 用の DevOps Guru のセットアップ

DevOps Guru for Amazon RDS が Amazon Aurora データベースのインサイトを発行できるようにするには、以下のタスクを実行します。

DevOps Guru for RDS の IAM アクセスポリシーの設定

DevOps Guru からのアラートを RDS コンソールに表示するには、AWS Identity and Access Management (IAM) ユーザーまたはロールに次のいずれかのポリシーが必要です。

  • AWS マネージドポリシー AmazonDevOpsGuruConsoleFullAccess

  • AWS 管理ポリシー AmazonDevOpsGuruConsoleReadOnlyAccess および次のいずれかのポリシーが必要です。

    • AWS マネージドポリシー AmazonRDSFullAccess

    • pi:GetResourceMetricspi:DescribeDimensionKeys を含むカスタマー管理ポリシー

詳細については、「Performance Insights 用のアクセスポリシーの設定」を参照してください。

Aurora DB インスタンスの Performance Insights をオンにする

DevOps Guru for RDS は、データの Performance Insights に依存しています。Performance Insights がなければ、DevOps Guru は異常を公開しますが、詳細な分析と推奨事項は含まれません。

Aurora DB クラスターを作成またはクラスターインスタンスを変更するときに、Performance Insights をオンにすることができます。詳細については、「Performance Insights の有効化と無効化」を参照してください。

DevOps Guru をオンにしてリソースカバレッジを指定する

DevOps Guru をオンにして、次のいずれかの方法で Amazon Aurora データベースをモニタリングできます。

RDS コンソールで DevOps Guru をオンにする

Amazon RDS コンソールで複数のパスを取得して DevOps Guru をオンにすることができます。

Aurora データベースを作成するときに DevOps Guru をオンにする

作成ワークフローには、データベースの DevOps Guru カバレッジを有効にする設定が含まれています。本番稼働用テンプレートを選択した場合、この設定はデフォルトでオンになっています。

Aurora データベースを作成するときに DevOps Guru をオンにするには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. DB クラスターの作成」で、モニタリング設定を選択する手順まで (ただしその手順は含まない)の手順を行います。

  3. [Monitoring] (モニタリング) で、[Turn on Performance Insights] (Performance Insights をオンにする) を選択します。DevOps Guru for RDS で、パフォーマンスの異常の詳細な分析を提供するには、[Performance Insights] (パフォーマンスインサイト) をオンにする必要があります。

  4. [Turn on DevOps Guru] (DevOps Guru をオンにする) を選択します。

    
                    DB クラスターを作成するときに DevOps Guru をオンにします
  5. DevOps Guru がそれをモニタリングできるように、データベースのタグを作成します。以下の操作を実行します。

    • [Tag key] (タグキー) のテキストフィールドで、Devops-Guru- で始まる名前を入力します。

    • [Tag value] (タグ値) のテキストフィールドで、任意の値を入力します。例えば、Aurora データベースの名前として rds-database-1 と入力した場合、タグ値として rds-database-1 も入力することができます。

    タグの詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。

  6. DB クラスターの作成」の残りのステップを行います。

通知バナーから DevOps Guru をオンにする

リソースが DevOps Guru の対象外である場合、Amazon RDS は次の場所のバナーで通知します。

  • DB クラスターインスタンスの[Monitoring] (モニタリング) タブ

  • Performance Insights ダッシュボード


                        DevOps Guru バナー
Aurora データベースについて DevOps Guru をオンにするには
  1. バナーで、[Turn on DevOps Guru for RDS] (DevOps Guru for RDS をオンにする) を選択します。

  2. タグのキー名と値を入力します。タグの詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。

    
                                RDS コンソールで DevOps Guru をオンにします
  3. [Turn on DevOps Guru] (DevOps Guru をオンにする) を選択します。

DevOps Guru をオンにしたときのアクセス許可エラーへの応答

データベースを作成するときに RDS コンソールから DevOps Guru をオンにすると、RDS にアクセス許可がないことについて次のバナーが表示されることがあります。

アクセス許可エラーに応答するには
  1. IAM ユーザーまたはロールにユーザー管理ロール AmazonDevOpsGuruConsoleFullAccess を付与します。詳細については、「DevOps Guru for RDS の IAM アクセスポリシーの設定」を参照してください。

  2. RDS コンソールを開きます。

  3. ナビゲーションペインで、[Performance Insights] を選択します。

  4. 先ほど作成したクラスターで DB インスタンスを選択します。

  5. DevOps Guru for RDS をオンにします。

  6. タグ値を選択します。詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。

  7. [Turn on DevOps Guru] (DevOps Guru をオンにする) を選択します。

Aurora リソースを DevOps Guru コンソールに追加する

DevOps Guru コンソールで DevOps Guru リソースカバレッジを指定できます。「Amazon DevOps Guru ユーザーガイド」の「DevOps Guru リソースカバレッジを指定する」で説明されている手順に従います。分析リソースを編集する場合は、以下のオプションのいずれかを選択します。

詳細については、「Amazon DevOps Guru ユーザーガイド」の 「Amazon DevOps Guru の有効化」を参照してください。

AWS CloudFormation を使用して Aurora リソースを追加する

タグを使用して、Aurora リソースのカバレッジを CloudFormation テンプレートに追加できます。次の手順では、Aurora DB インスタンスと DevOps Guru スタックの両方についての CloudFormation テンプレートがあることを前提としています。

CloudFormation タグを使用して Aurora DB インスタンスを指定するには
  1. DB インスタンスの CloudFormation テンプレートで、キーと値のペアを使用してタグを定義します。

    次の例では、値 my-aurora-db-instance1 を Aurora DB インスタンスの Devops-guru-cfn-default に割り当てます。

    MyAuroraDBInstance1: Type: "AWS::RDS::DBInstance" Properties: DBClusterIdentifier: my-aurora-db-cluster DBInstanceIdentifier: my-aurora-db-instance1 Tags: - Key: Devops-guru-cfn-default Value: devopsguru-my-aurora-db-instance1
  2. DevOps Guru スタックの CloudFormation テンプレートで、リソースコレクションフィルターに同じタグを指定します。

    次の例では、タグ値 my-aurora-db-instance1 を持つリソースをカバーするように DevOps Guru を設定します。

    DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "devopsguru-my-aurora-db-instance1"

    次の例では、アプリケーション境界 Devops-guru-cfn-default 内のすべてのリソースを対象としています。

    DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "*"

詳細については、「AWS CloudFormation ユーザーガイド」の「AWS::DevOpsGuru::ResourceCollection」と「AWS::RDS::DBInstance」を参照してください。