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 CloudWatchAmazon OpenSearch ServiceAmazon AthenaAmazon 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 データベースの健全性と潜在的なパフォーマンスの問題を簡単に可視化および追跡できるようになります。

次の図は、ソリューションのアーキテクチャを示しています。
Figure 1. Architecture of our solution to monitor Amazon RDS and Amazon Aurora using Amazon Managed Grafana.
図 1 . Amazon Managed Grafana を使用し、 Amazon RDS と Amazon Aurora をモニタリングするソリューションのアーキテクチャ

ソリューションのウォークスルー

前提条件

この記事のステップを完了するには、以下が必要です。

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 ディメンションを参照してください。

Figure 2. Display showing the Amazon RDS dimensions
図 2 . Amazon RDS ディメンションの表示

  • DBClusterIdentifier などのメトリクスディメンションを選択します。次にクラスターの名前を検索し、そのメトリクスが表示できることを確認します。

Figure 2. Choosing a metric dimension
図 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 データソースを介してこれらのメトリクスを表示やクエリすることができます。
Figure 4. Dashboards through CloudWatch data source
図 4 . CloudWatch をデータソースとしたダッシュボード

Amazon RDS ダッシュボード

aws > Data Sources > Dashboards からAmazon RDS のキュレーションされた Grafana ダッシュボードをインポートすることができます。
Figure 5. Grafana dashboard for Amazon RDS
図 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 スクリプトを実行します。

$ git clone https://github.com/aws-observability/observability-best-practices.git
$ cd observability-best-practices/sandbox/monitor-aurora-with-grafana

$ chmod +x install.sh
$ ./install.sh
Bash

このスクリプトでは、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 のカスタム名前空間の名前をカスタマイズすることができます。
Figure 5. Dashboards through CloudWatch data source
図 6 . CloudWatch をデータソースとしたダッシュボード

RDS Performance Insights のメトリクスを可視化するに、上記 GitHub リポジトリから dashboard.json を使って Performance Insights 用の Grafana ダッシュボードをインポートします。左のナビゲーションバーにあるプラス記号をクリックし、「Import」 を選択して 「Upload JSON file」 を選択します。以下のようなダッシュボードが表示されます。

データベースロード

データベースロード(DBLoad)は、アプリケーションがデータベースでどのように時間を費やしているのかを特徴付けるもので、平均アクティブセッション(AAS)という単位で測定されます。アクティブなセッションとは、データベースエンジンに処理を送信し、エンジンからの応答を待っている接続(セッション)のことです。DBLoad チャートは、データベース負荷の最近の履歴を平均アクティブセッション(AAS)単位で表示します。
Figure 6. Grafana dashboard with Database load (DBLoad)
図 7 . データベースロード(DBLoad)を表示した Grafana ダッシュボード

トップ ロード イベント

トップロード アクティビティチャートは、ロードチャート上の時間間隔において、何がデータベース負荷に影響を与えているのかを示しています。
Figure 8. Grafana dashboard with top load activity chart
図 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.aws.amazon.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 のオブザーバビリティサービスをハンズオンで体験できます。

このブログの翻訳はソリューションアーキテクトの 辻林 侑 が担当しました。原文はこちらです。

筆者について

Elamaran Shanmugam

Elamaran (Ela) Shanmugam は、Amazon Web Services の シニア コンテナ スペシャリスト ソリューション アーキテクトです。コンテナ、オブザーバビリティ、マルチアカウントアーキテクチャの SME であり、 AWS のお客様がAWS上でスケーラブルで安全かつ最適なコンテナワークロードを設計、構築するのを支援します。インフラストラクチャの構築と自動化により、顧客がよりビジネスに集中できるようにすることに彼は情熱を持っています。フロリダ州タンパを拠点とし、 Twitter で連絡を取ることができます。

Shankar Rajagopalan

Shankar Rajagopalan は、テキサス州オースティンを拠点とする Amazon Web Services のソリューション アーキテクトです。ソフトウェア技術者であり、テレコムやエンジニアリングなどの業界を中心に、20年にわたる技術コンサルティングの経験を持ちます。現在の関心分野は、セキュリティとコンプライアンス、およびプライバシーです。

Ravi Mathur

Ravi Mathur は、Amazon Web Services のシニア ソリューション アーキテクトです。様々な AWS サービスに関する技術的な支援やアーキテクチャのガイダンスをお客様に提供しています。様々な大企業でのソフトウェアエンジニアとアーキテクトの経験があります。

Munish Dabra

Munish Dabra は、Amazon Web Services のシニア ソリューション アーキテクトです。スケーラブルな分散ソフトウェアシステムの構築において 20 年以上の経験を持つソフトウェアテクノロジーリーダーです。現在の専門分野は、コンテナ、オブザーバビリティ、 AI/ML 。学歴はコンピュータ工学で、テキサス大学で MBA を取得しています。ヒューストンを拠点に活動し、余暇には2人の子供と遊ぶのが好きで、テニスやサッカーをしています。