Amazon Web Services ブログ
Amazon Managed Grafanaを使用したAmazon RDSとAmazon Auroraのモニタリング
このブログは「Monitoring Amazon RDS and Amazon Aurora using Amazon Managed Grafana」を翻訳したものです。
Amazon Relational Database Service (Amazon RDS) や Amazon Aurora などのフルマネージドデータベースサービスを使用して AWS 上で重要なアプリケーションを実行している組織には、データベースのパフォーマンスを確保し、お客様にサービスの中断を引き起こさないようにするために強固なモニタリングが必要です。
Amazon Managed Grafana は、複数のソースからの運用メトリクス、ログ、トレースを即座にクエリ、関連付け、可視化するために使用できるフルマネージドでセキュアなデータ可視化サービスです。 Amazon Managed Grafana は、運用データを収集するために Amazon CloudWatch、Amazon OpenSearch Service 、Amazon Athena、Amazon Managed Service for Prometheus(AMP)などの AWS のデータソースと統合されています。また、Amazon Managed Grafana は、よく利用されるオープンソースデータベース、サードパーティの監視ツール、およびその他のクラウドサービスへのプラグインを提供します。Amazon Managed Grafana を使用して、複数の AWS サービス、 AWS アカウント、オンプレミスからの情報を1つの Grafanaダッシュボード で簡単に視覚化することができます。Amazon Managed Grafana では、 AWS IAM Identity Center や他の SAML ベースのIdentity Provider(IdP) を通じて、ユーザアクセスを設定することができます。
このブログでは、Amazon Managed Grafana を使用して、Performance Insights メトリクスを含む Amazon RDS および Amazon Aurora データベースクラスターをモニタリングする方法を説明します。
ソリューションの概要
RDS と Aurora から CPU 使用率、メモリ使用量、データベース接続などの重要なメトリクスを収集し、Amazon CloudWatch に保存します。さらに RDS Performance Insight のメトリクスを収集し、CloudWatch に送信するカスタム Lambda 関数をデプロイします。最後に Amazon Managed Grafana ワークスペースを作成し、データソースとして CloudWatch に接続し、RDS / Aurora データベースの健全性と潜在的なパフォーマンスの問題を簡単に可視化および追跡できるようになります。
次の図は、ソリューションのアーキテクチャを示しています。
図 1 . Amazon Managed Grafana を使用し、 Amazon RDS と Amazon Aurora をモニタリングするソリューションのアーキテクチャ
ソリューションのウォークスルー
前提条件
この記事のステップを完了するには、以下が必要です。
- Amazon RDS for PostgreSQL または Amazon Aurora PostgreSQL 互換エディションのクラスター。まだAWS上でクラスターが稼働していない場合は、Amazon RDS for PostgreSQL on AWS または Amazon Aurora PostgreSQL 用のモジュラーアーキテクチャのクイックスタートテンプレートのいずれかを使用できます。新しい VPC にデプロイするか、既存の VPC にデプロイするかを選択できます。
Amazon CloudWatch で Amazon RDS または Aurora のメトリクスの表示
Amazon CloudWatch のメトリクスは、サービスの名前空間によってグループ化され、次に各名前空間内の様々なディメンションの組み合わせによってグループ化されてます。AWS / RDS
名前空間は、Amazon RDS と Amazon Aurora 上で実行されているデータベースエンティティに適用されるメトリクスを含んでいます。Amazon CloudWatch で利用できるすべての RDS と Aurora のメトリクスを見るには、Amazon CloudWatch を使用した Amazon RDS メトリクスのモニタリング、および Amazon Aurora の Amazon CloudWatch メトリクスを参照してください。
Amazon CloudWatch で Aurora PostgreSQL 互換のクラスターとデータベースインスタンスで利用できるメトリクスを見てみましょう。
- Amazon Aurora のメトリクスを表示するために、Amazon CloudWatch コンソールに移動します。リンクはオレゴン (us-west-2) リージョンで開かれます。リージョンを切り替えるには、上部のナビゲーションバーから好きなリージョンを選択してください。
- RDS メトリクスの名前空間を選択します。ページには、Amazon RDS ディメンションが表示されます。これらのディメンションの説明については、Amazon RDS の Amazon CloudWatch ディメンションを参照してください。
図 2 . Amazon RDS ディメンションの表示
DBClusterIdentifier
などのメトリクスディメンションを選択します。次にクラスターの名前を検索し、そのメトリクスが表示できることを確認します。
図 3 . メトリクスディメンションの選択
CloudWatch をデータソースとした Amazon Managed Grafana ワークスペースの作成
このセクションでは、RDS データベースインスタンスと Aurora データベースクラスターをモニタリングするために、Amazon Managed Grafana をセットアップします。Create a workspace の説明に従って、Amazon Managed Grafana ワークスペースを作成します。そしてデータソースとして CloudWatch を設定します。「settings」に移動し、「Save & test」 を選択して、問題なくデータソースと接続できることを確認します。
データベースメトリクスのクエリと Amazon Managed Grafana ダッシュボードの作成
Amazon RDS は、CloudWatch メトリクス、拡張モニタリング、Performance Insights など、モニタリングのための様々なメトリクスやインサイトを提供しています。これらのメトリクスを Grafana ダッシュボードに統合することで、すべての RDS インスタンスのこれらのメトリクスを一箇所で可視化することができます。「Explore」 を使用するか、デフォルトのAmazon RDS ダッシュボードをインポートすることで、CloudWatch データソースを介してこれらのメトリクスを表示やクエリすることができます。
図 4 . CloudWatch をデータソースとしたダッシュボード
Amazon RDS ダッシュボード
aws > Data Sources > Dashboards からAmazon RDS のキュレーションされた Grafana ダッシュボードをインポートすることができます。
図 5 . Amazon RDS 用の Grafana ダッシュボード
Performance Insights メトリクス
Performance Insights ( PI ) は、既存の Amazon RDS モニタリング機能を拡張し、データベースのパフォーマンスを分析するのに役立ちます。Performance Insights ダッシュボードを使用すると、Amazon RDSまたはAurora クラスターのデータベース負荷を可視化し、待ち時間、 SQL ステートメント、ホスト、またはユーザに関連した負荷をフィルタリングすることができます。RDS または Aurora クラスターの Performance Insights を有効化または無効化にするには、Performance Insights の有効化と無効化を参照してください。
Amazon Managed Grafana でPerformance Insights のメトリクスを表示し、データベース管理者や DevOps チームのための単一画面を持ちたいとお客様からご意見をいただいてます。現時点では CloudWatch では基本的な RDS Performance Insights のメトリクスしか利用できません。しかしこれはデータベースのパフォーマンスを分析し、データベースのボトルネックを特定するには十分ではありません。
カスタム Lambda 関数を使用して、すべての RDS Performance insights メトリクスを収集し、カスタム CloudWatch メトリクス名前空間に発行できます。 Amazon CloudWatch でこれらのメトリクスが利用できるようになると、Amazon Managed Grafana で可視化できます。
RDS Performance Insights メトリクスを収集するカスタム Lambda 関数をデプロイするには、以下の GitHub リポジトリをクローンして、install.sh スクリプトを実行します。
このスクリプトでは、AWS CloudFormation を使用して、カスタム Lambda 関数と IAM ロールをデプロイします。Lambda 関数は 10 分ごとに自動トリガーされ、 RDS Performance Insights API を呼び出し、Amazon CloudWatch の /AuroraMonitoringGrafana/PerformanceInsightMetrics カスタム名前空間にカスタムメトリクスを発行します。
これらのメトリクスを Amazon Managed Grafana で可視化するには、Use AWS data source configuration to add CloudWatch as a data source の説明をもとに新しい CloudWatch データソースを作成します。CloudWatch データソース内のカスタムメトリックの名前空間を /AuroraMonitoringGrafana/PerformanceInsightMetrics に更新し、「Save & test」を選択します。またオプションで AWS Lambda 環境変数を使用して CloudWatch のカスタム名前空間の名前をカスタマイズすることができます。
図 6 . CloudWatch をデータソースとしたダッシュボード
RDS Performance Insights のメトリクスを可視化するに、上記 GitHub リポジトリから dashboard.json を使って Performance Insights 用の Grafana ダッシュボードをインポートします。左のナビゲーションバーにあるプラス記号をクリックし、「Import」 を選択して 「Upload JSON file」 を選択します。以下のようなダッシュボードが表示されます。
データベースロード
データベースロード(DBLoad)は、アプリケーションがデータベースでどのように時間を費やしているのかを特徴付けるもので、平均アクティブセッション(AAS)という単位で測定されます。アクティブなセッションとは、データベースエンジンに処理を送信し、エンジンからの応答を待っている接続(セッション)のことです。DBLoad チャートは、データベース負荷の最近の履歴を平均アクティブセッション(AAS)単位で表示します。
図 7 . データベースロード(DBLoad)を表示した Grafana ダッシュボード
トップ ロード イベント
トップロード アクティビティチャートは、ロードチャート上の時間間隔において、何がデータベース負荷に影響を与えているのかを示しています。
図 8 . トップロード アクティビティチャートを表示した Grafana ダッシュボード
Amazon Managed Grafana のアラート設定
アラートを設定することで、システムやデータベースに発生した問題をすぐに特定し、通知することができます。システムの意図しない変更を素早く特定し、アラートを使用して通知することで、サービスの中断を最小限に抑えるためのアクションを取ることができます。Amazon Managed Grafana は、SNS 、 Slack 、PagerDuty などのアラート通知を送信できる複数の通知チャネルをサポートしています。 Grafana アラートのページでAmazon Managed Grafana でアラートの詳細な設定方法を確認できます。また Amazon Managed PrometheusとAmazon Managed Grafana を使用した EKS 上の Istio をモニタリングでは、Amazon Managed Grafana アラートをPagerDuty にトリガーする方法を紹介しているので、こちらもブログもご覧ください。
クリーンアップ
この記事のために作成した AWS リソースを削除するまで、コストが発生し続けます。以下の手順で、作成した AWS リソースをクリーンアップしてください。
Grafana ワークスペースの削除
- Amazon Managed Grafana コンソール(https://console.thinkwithwp.com/grafana/)を開きます。ナビゲーションペインで「すべてのワークスペース」を選択します。
- 削除するワークスペース名を選択し、「削除」を選択します。
- 削除を確認するために、ワークスペース名を入力し、「削除」を選択します。
Amazon Aurora クラスターの削除
- AWS CloudFormation コンソールに移動し、AWSのクイックスタートを使用し、Amazon Aurora PostgreSQL構築のために作成されたCloudFormationスタックを削除します。または、Aurora DB クラスターの削除の説明に従って、Amazon Aurora DB クラスターを手動で削除してください。
結論
この記事では、Amazon Managed Grafana を使用して Amazon Aurora / RDS 上のすべてのデータベースメトリクスを、モニタリングおよび可視化する方法を説明しました。さらに、データベース管理者や DevOps チームが、Performance Insights を取得して可視化を行い、データベースワークロードに対するより良い洞察を得て、パフォーマンスのボトルネックを特定する方法について検討しました。 Monitor Amazon RDS and Aurora Databases on Amazon Managed Grafana でデモ動画を見ることができます。また Amazon DevOps Guru for RDS も検討することをお勧めします。Amazon DevOps Guru for RDS は Performance Insights のメトリクスを利用し、機械学習(ML)を使って分析を行います。そしてパフォーマンス問題に関するデータベース固有の分析結果と推奨事項を提供してくれるサービスです。 One Observability Workshop で AWS のオブザーバビリティサービスをハンズオンで体験できます。
このブログの翻訳はソリューションアーキテクトの 辻林 侑 が担当しました。原文はこちらです。