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 は、 RDS for PostgreSQL データベースの Performance Insights メトリクスに機械学習を適用することで、この機能を拡張します。これらのモニタリング機能により、DevOps Guru for RDS はパフォーマンスのボトルネックを検出して診断し、具体的な修正措置を推奨できます。DevOps Guru for RDS は、 RDS for PostgreSQL データベースで問題が発生する前に問題条件を検出することもできます。
これらの推奨事項を RDS コンソールで表示できるようになりました。詳細については、「Amazon RDS からの推奨事項」を参照してください。
次の動画は DevOps Guru for RDS の概要です。
この主題の詳細については、Amazon DevOps Guru for RDS の内部
DevOps Guru for RDS の利点
RDS for PostgreSQL データベースを担当していて、そのデータベースに影響を与えるイベントやリグレッションの発生を知らないことがあります。問題を知っても、なぜそれが発生しているのか、どう対処すべきかわからないこともあります。データベース管理者 (DBA) に問い合わせたり、サードパーティーツールに頼ったりするのではなく、DevOps Guru for RDS のレコメンデーションに従ってください。
DevOps Guru for RDS の詳細な分析により、次の利点が得られます。
- 高速診断
-
DevOps Guru for RDS は、データベースのテレメトリを継続的にモニタリングおよび分析します。Performance Insights、拡張モニタリング、および Amazon CloudWatch は、データベースインスタンスのテレメトリーデータを収集します。DevOps Guru for RDS は、統計的な機械学習の技術を使用してこのデータをマイニングし、異常を検出します。テレメトリーデータの詳細については、、Amazon RDS ユーザーガイドの「Amazon RDS での 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 から RDS for PostgreSQL データベースに関するデータを収集します。最も重要なメトリクスはDBLoad
です。DevOps Guru for RDS は、Performance Insights メトリクスを消費し、機械学習を使用して分析し、ダッシュボードにインサイトを公開します。
インサイトは、DevOps Guru によって検出された関連する異常のコレクションです。
DevOps Guru for RDS では、異常とは、 RDS for PostgreSQL データベースの通常のパフォーマンスから逸脱したパターンのことです。
事前対応型インサイト
プロアクティブインサイトでは、問題のある動作を発生前に知ることができます。異常と共に推奨事項と関連メトリクスも含まれるため、 RDS for PostgreSQL データベースの問題が大きな問題になる前に対処できます。これらのインサイトは、DevOps Guru ダッシュボードに発行されます。
例えば、DevOps Guru は、RDS for PostgreSQL データベースがディスク上に多数の一時テーブルを作成していることを検出する場合があります。対処しなければ、この傾向はパフォーマンス問題につながる可能性があります。各プロアクティブインサイトには、是正措置に関する推奨事項と、Amazon DevOps Guru のプロアクティブインサイトによる RDS for PostgreSQL のチューニング 内の関連トピックへのリンクが含まれています。詳細については、「Amazon DevOps Guru ユーザーガイド」の「Working with insights in DevOps Guru」を参照してください。
事後対応型インサイト
リアクティブインサイトは、異常な動作を発生時に識別します。DevOps Guru for RDS が RDS for PostgreSQL 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 コンソールでは、 RDS for PostgreSQL DB インスタンスのページでもアラートが表示されます。
コンテキスト異常
コンテキスト異常は、事後対応型インサイトに関連するデータベースロード (DB ロード)での所見です。各コンテキスト異常は、調査が必要な特定の RDS for PostgreSQL のパフォーマンス問題を記述します。例えば、DevOps Guru for RDS は、CPU 容量の増加を検討したり、DB ロードに寄与している待機イベントを調査するよう推奨することがあります。
重要
本稼働インスタンスの修正前に、各変更の影響を完全に把握できるように、テストインスタンスでの変更のテストをお勧めします。このようにして、変更の影響を理解します。
詳細については、Amazon DevOps Guru ユーザーガイドの「Analyzing anomalies in Amazon RDS」(Amazon RDS の異常を分析する) を参照してください。
RDS 用の DevOps Guru のセットアップ
DevOps Guru for Amazon RDS が RDS for PostgreSQL データベースのインサイトを発行できるようにするには、以下のタスクを実行します。
トピック
DevOps Guru for RDS の IAM アクセスポリシーの設定
DevOps Guru からのアラートを RDS コンソールに表示するには、AWS Identity and Access Management (IAM) ユーザーまたはロールに次のいずれかのポリシーが必要です。
-
AWS マネージドポリシー
AmazonDevOpsGuruConsoleFullAccess
-
AWS 管理ポリシー
AmazonDevOpsGuruConsoleReadOnlyAccess
および次のいずれかのポリシーが必要です。-
AWS マネージドポリシー
AmazonRDSFullAccess
-
pi:GetResourceMetrics
とpi:DescribeDimensionKeys
を含むカスタマー管理ポリシー
-
詳細については、「Performance Insights 用のアクセスポリシーの設定」を参照してください。
RDS for PostgreSQL DB インスタンスの Performance Insights をオンにする
DevOps Guru for RDS は、データの Performance Insights に依存しています。Performance Insights がなければ、DevOps Guru は異常を公開しますが、詳細な分析と推奨事項は含まれません。
RDS for PostgreSQL DB インスタンスを作成または変更するときに、Performance Insights をオンにすることができます。詳細については、「Amazon RDS の Performance Insights の有効化と無効化」を参照してください。
DevOps Guru をオンにしてリソースカバレッジを指定する
DevOps Guru をオンにして、次のいずれかの方法で RDS for PostgreSQL データベースをモニタリングできます。
トピック
RDS コンソールで DevOps Guru をオンにする
Amazon RDS コンソールで複数のパスを取得して DevOps Guru をオンにすることができます。
トピック
RDS for PostgreSQL データベースを作成するときに DevOps Guru をオンにする
作成ワークフローには、データベースの DevOps Guru カバレッジを有効にする設定が含まれています。本番稼働用テンプレートを選択した場合、この設定はデフォルトでオンになっています。
RDS for PostgreSQL データベースを作成するときに DevOps Guru をオンにするには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
「DB インスタンスの作成」で、モニタリング設定を選択する手順まで (ただしその手順は含まない) の手順を行います。
-
[Monitoring] (モニタリング) で、[Turn on Performance Insights] (Performance Insights をオンにする) を選択します。DevOps Guru for RDS で、パフォーマンスの異常の詳細な分析を提供するには、[Performance Insights] (パフォーマンスインサイト) をオンにする必要があります。
-
[Turn on DevOps Guru] (DevOps Guru をオンにする) を選択します。
-
DevOps Guru がそれをモニタリングできるように、データベースのタグを作成します。以下の操作を実行します。
-
[Tag key] (タグキー) のテキストフィールドで、
Devops-Guru-
で始まる名前を入力します。 -
[Tag value] (タグ値) のテキストフィールドで、任意の値を入力します。例えば、 RDS for PostgreSQL データベースの名前として
rds-database-1
と入力した場合、タグ値としてrds-database-1
も入力することができます。
タグの詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。
-
-
「DB インスタンスの作成」の残りのステップを行います。
通知バナーから DevOps Guru をオンにする
リソースが DevOps Guru の対象外である場合、Amazon RDS は次の場所のバナーで通知します。
-
DB クラスターインスタンスの[Monitoring] (モニタリング) タブ
-
Performance Insights ダッシュボード
RDS for PostgreSQL データベースについて DevOps Guru をオンにするには
-
バナーで、[Turn on DevOps Guru for RDS] (DevOps Guru for RDS をオンにする) を選択します。
-
タグのキー名と値を入力します。タグの詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。
-
[DevOps Guru をオンにする] を選択します。
DevOps Guru をオンにしたときのアクセス許可エラーへの応答
データベースを作成するときに RDS コンソールから DevOps Guru をオンにすると、RDS にアクセス許可がないことについて次のバナーが表示されることがあります。
アクセス許可エラーに応答するには
-
IAM ユーザーまたはロールにユーザー管理ロール
AmazonDevOpsGuruConsoleFullAccess
を付与します。詳細については、「DevOps Guru for RDS の IAM アクセスポリシーの設定」を参照してください。 -
RDS コンソールを開きます。
-
ナビゲーションペインで、[Performance Insights] を選択します。
-
先ほど作成したクラスターで DB インスタンスを選択します。
-
スイッチを選択して、[DevOps Guru for RDS] をオンにします。
-
タグ値を選択します。詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。
-
[DevOps Guru をオンにする] を選択します。
RDS for PostgreSQL リソースを DevOps Guru コンソールに追加する
DevOps Guru コンソールで DevOps Guru リソースカバレッジを指定できます。「Amazon DevOps Guru ユーザーガイド」の「DevOps Guru リソースカバレッジを指定する」で説明されている手順に従います。分析リソースを編集する場合は、以下のオプションのいずれかを選択します。
-
RDS for PostgreSQL データベースも含め、AWS アカウント とリージョンでサポートされているすべてのリソースを分析するには、[すべてのアカウントリソース] を選択します。
-
選択したスタック内の RDS for PostgreSQL データベースを分析するには、[CloudFormation スタック] を選択します。詳細については、「Amazon DevOps Guru ユーザーガイド」の「AWS CloudFormation スタックを使用して DevOps Guru アプリケーション内のリソースを識別する」を参照してください。
-
タグ付けした RDS for PostgreSQL データベースを分析するには、[タグ] を選択します。詳細については、「Amazon DevOps Guru ユーザーガイド」の「タグを使用して DevOps Guru アプリケーションのリソースを特定する」を参照してください。
詳細については、「Amazon DevOps Guru ユーザーガイド」の 「Amazon DevOps Guru の有効化」を参照してください。
AWS CloudFormation を使用して RDS for PostgreSQL リソースを追加する
タグを使用して、 RDS for PostgreSQL リソースのカバレッジを CloudFormation テンプレートに追加できます。次の手順では、 RDS for PostgreSQL DB インスタンスと DevOps Guru スタックの両方についての CloudFormation テンプレートがあることを前提としています。
CloudFormation タグを使用して RDS for PostgreSQL DB インスタンスを指定するには
-
DB インスタンスの CloudFormation テンプレートで、キーと値のペアを使用してタグを定義します。
次の例では、値
my-db-instance1
を RDS for PostgreSQL DB インスタンスのDevops-guru-cfn-default
に割り当てます。MyDBInstance1: Type: "AWS::RDS::DBInstance" Properties: DBInstanceIdentifier: my-db-instance1 Tags: - Key: Devops-guru-cfn-default Value: devopsguru-my-db-instance1
-
DevOps Guru スタックの CloudFormation テンプレートで、リソースコレクションフィルターに同じタグを指定します。
次の例では、タグ値
my-db-instance1
を持つリソースをカバーするように DevOps Guru を設定します。DevOpsGuruResourceCollection: Type: AWS::DevOpsGuru::ResourceCollection Properties: ResourceCollectionFilter: Tags: - AppBoundaryKey: "Devops-guru-cfn-default" TagValues: - "devopsguru-my-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」を参照してください。