9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データベースの正常性やパフォーマンスを可視化するDatadog Database Monitoring

Posted at

この記事は Datadog Advent Calendar 2023 カレンダーの 24日目の記事です。

本記事では業務で使用していて、非常に有用に感じたDatadogの Database Monitoring機能について、どのような情報が取得できるかをキャプチャと共に紹介します。

Datadog Database Monitoring (DBM)について

公式ドキュメントはこちらとなります。
https://docs.datadoghq.com/ja/database_monitoring/

Datadog Database Monitoringは、すべてのホストにわたるデータベースの詳細な可視性を提供してくれる機能です。
何か問題が発生した時のトラブルシューティングや過去のクエリパフォーマンスメトリクスを掘り下げることが可能です。

執筆時点で対応しているDBは次の通りです。

  • Postgres
  • MySQL
  • Oracle
  • SQL Server

今回はSQL Server環境で有効化しています。

リアルタイム監視やトラブルシューディングでの活用

DBで滞留しているクエリの量・詳細の確認

DBMのView Related画面からクエリのWait状況を確認することができます。
image.png
各クエリをクリックすることでそれぞれのクエリの詳細を確認できるので、よく滞留しているクエリの分析をこちらから進めることが可能です。
過去に記録された情報と比べて異常(Anomaly)な状態が発生していると判断されるような場合には、その旨が表示されます。
CPUAnomaly.png

また、収集されるクエリは正規化されてパラメータ部分は ?に置き換えられるため、機密情報を閲覧できない開発者にも安心して共有することが可能です。
データベースモニタリングの収集データ - 機密情報
image.png

現在実行中のクエリの確認

View Related画面の Active Connections のタブから現在実行中のクエリを見ることができます。(数秒間隔で収集しているので少しラグはあり)
これによって長時間実行されているクエリの詳細や今どのくらいのクエリが実行されているかなどを確認できます。
image.png

ブロッキングが発生しているクエリの確認

Blocking Queries タブからはブロッキングによる影響や原因となったRoot Blockerの詳細を確認できます。
image.png

ブロッキングのサンプルからは、Root Blockerからブロッキングが連なっている様子なども確認可能です。
image.png

過去のクエリパフォーマンスの掘り下げ

リソース使用率の高いクエリの調査

Query Metrics画面からは指定した期間のクエリの統計を見ることができます。
image.png

表示する情報は増やすことができ、以下の情報を表示することができます。
image.png
メモリ使用量が大きいクエリを改善したい場合などには、GrantMemory系にチェックを入れて表示した上でソートを行うことで、修正すべきクエリを探すことが可能となります。

各クエリの実行統計・実行計画の確認

各クエリの詳細な履歴として実行時間や実行計画を閲覧することができます。
image.png

実行計画は画面上でグラフィカルに見ることもできるし、リスト形式で見ることもできます。
ダウンロードしてSQLServer Management Studioなどを通して手元で確認することも可能です。
image.png

image.png

クエリのパフォーマンスの統計を見ていると一時的にパフォーマンスが悪化/改善しているような状況が見られることがあります。
それぞれで記録された実行計画が異なっていた場合には、特定の実行計画が原因であると推察でき、改善への検討に繋げることができます。
image.png

Monitor(アラート通知)との連携

Database Monitoringによって取得されるメトリクスはMonitor側にも活用できます。
waitしているクエリの数は sqlserver.activity.waits に記録されるため、「CPU待ちが10セッション以上になったらアラートを飛ばしたい」などのような場合には次のようなアラートが設定できます。
image.png

クエリの実行回数など、周期的に安定しているメトリクスに関しては異常検知モニター などを設定すると通常値と異なる動きを検知できるようになります。

カスタムクエリによるメトリクス化

カスタムクエリを設定することでDBのデータを元にメトリクスを作成できます。 (カスタムメトリクスの収集(SQL Serverの場合))

こちらを活用することで

  • 毎分レコードが登録されるはずのテーブルが未登録であったらアラート通知
  • エラーログテーブルに大量にレコードが登録されたらアラート通知

のように登録されたデータを元にしたMonitorの作成も可能となります。

終わりに

Datadog Database Monitoringを活用することで、上記のような可視化による各種分析の効率化や、正常性に問題が生じたときにいち早く検出することができ、信頼性向上へと繋げることができます。

また、複数のデータベースを運用している場合にも、統一してモニタリングができるようになるため非常に有用です。

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?