Amazon Web Services ブログ
Amazon CloudWatch を使用して Performance Insights メトリックにアラームを設定する
Amazon RDS Performance Insightsは、重要ななパフォーマンスメトリックを Performance Insights から Amazon CloudWatchに送信できる機能を、先ごろリリースしました。この機能を使うと、これらのメトリックに関するアラートを設定できます。
Performance Insights が有効になっている場合、CloudWatch に次の 3 つのメトリックが自動的に送信されます。
- DBLoad
- DBLoadCPU
- DBLoadNonCPU
これら 3 つのメトリックを、次に解説します。
DBLoad
最初のメトリック、DBLoadは、Performance Insights の中核となるものです。DBLoad は、同時にアクティブとなるデータベース接続数の尺度となります。この記事の中でセッションと呼んでいるアクティブな接続とは、データベースが結果を返さなかったデータベースにクエリを送信する接続のことです。クエリが送信される間、およびクエリ結果が戻される前、クエリはいくつかある状態のいずれかの状態となります。つまり、CPU 上で実行されているか、CPU を待っているか、ロックや I/O などのリソースが終了するのを待っているか、他のデータベースリソースへのアクセスを待っているかのいずれかの状態です。
クエリの処理中、通常、クエリはこれらの状態の間で切り替わります。ただし、クエリは待機するのではなく、クエリを実際に処理している CPU 上で動く時間がすべてクエリに費やされるのが理想です。同時にアクティブとなっている接続数とその接続状態を確認することで、データベースの負荷をすばやく強力に把握できます。DBLoadは、アクティブな同時データベース接続の平均数である、平均アクティブセッション (AAS) で測定します。デフォルトでは、Performance Insights ダッシュボードにある DBLoad グラフの各ポイントが、1 分以上経過した平均時間です。
DBLoadは 2 つの種類に分かれます。
- DBLoadCPU は、接続が CPU 上で実行されていた時間、または CPU 上で実行準備が整っている時間を表します。
- DBLoadNonCPU は、接続が I/O、ロック、データベースバッファーなどのデータベースリソースを待機していた時間を表します。
以下では、DBLoadCPU を中心にお話しします。
DBLoadCPU
アラートを設定する 3 つのメトリックのうち、最も分かりやすいものは DBLoadCPU です。 DBLoadCPUは、CPU 上でアクティブかつ実行可能なデータベース接続の数を表します。ホストに十分な CPU リソースがある場合、これらの接続はすべて CPU 上で実行されています。
vCPU すべてに、その CPU 上で実行中の接続が存在する可能性があります。サーバに vCPU があるだけでなく、アクティブな接続がもっとあり実行準備が完了している状態の場合、それらの接続のいくつかは CPU リソースを待機しています。接続の数が vCPU の数よりも一貫して高い場合、CPU に対する競合があることが分かります。この場合、ホストの CPU 容量を増やす (サーバーを拡大する) か、データベースにアクセスするコードをより効率的になるようにチューニングするとよいでしょう。したがって、DBLoadCPU がホスト上の vCPU を超えた時にアラームが送信されるように設定して、ホスト上の CPU リソースが飽和したときにアラームが送信されるようにします。
Performance Insights が有効になっているインスタンスの DBLoadCPU にアラートを設定するには、CloudWatch コンソールに移動し、[アラーム] を選択します。
アラームのページで、[アラームの作成] を選択します。
次に、DBLoadCPU と入力します。
そこで、DB インスタンスを選択し、アラームをオンにします。
次に、[次へ] を選択します。
アラートに名前を付けて、閾値を設定します。 閾値を設定するのに、どの値が適切かが問題となります。
利用可能な CPU よりも CPU の需要が多い場合に、アラートが通知されるようにします。利用可能な CPU は、Performance Insights ダッシュボードの max vCPU 行に示されています。
私の場合では、ホストには 8 つの vCPU があります。ですから、アラートを 9 に設定すると、CPU の需要が容量を超えたときにアラームが送信されます。
[アクション] で、自分のメールに通知が来るよう設定します。これで、CPU の競合がある時にアラームが通知されます。アラームが発生した時、コードを最適化して CPU 使用量を減らすか、より大きなインスタンスサイズに移行することを検討します。
まとめ
これで、これらの重要なパフォーマンスメトリックを Performance Insights から CloudWatch に送信できるようになりました。Amazon RDS データベースサーバーの負荷が高くなったり障害が現れた時には、アラートが送信されるように設定する方がはるかに簡単なのがお分かりかと思います。
今回のブログ投稿者について
Kyle Hailey は、アマゾン ウェブ サービスの Performance Insights のプロダクトマネージャーです。