SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Database Watcher for Azure SQL が Public Preview で提供開始されました

leave a comment

本日、アナウンスがありましたが Database Watcher for Azure SQL が Public Preview で提供開始されました。

ドキュメントも公開されています。

従来までの Azure SQL のメトリクス取得

Azure SQL のメトリクス取得については従来から実施することができ、次のような方法が提供されていました。

 

標準で取得されているプラットフォームメトリクスの他に、SQL Insights / Azure SQL Analytics というような追加の情報取得 / 可視化のソリューションも提供されていました。

新しいソリューションとして今回発表された Database Watcher が提供され、今後はこちらがメインのソリューションとなるかと思います。

 

Database Watcher for Azure SQL

Database Watcher の特徴

今回、新しく提供された Database Watcher は現状、SQL Database / Managed Instance の各種情報を取得することができ、複数の環境を統合的に管理することができるソリューションとなっています。

従来の SQL Insights + Query Performance Insight が統合されたようなデータが取得されています。

データストアとして Azure Data Explorer (ADX) が使用されることで、標準で提供されているダッシュボード以外でもデータの活用ができるようになっています。

価格については、Database watcher price に記載されていますが、コストの大部分は ADX となっており、Database Watcher のワーカーや標準的な可視化の部分ではコストは発生しません。SLA は無しになりますが Data Explorer の Free Cluster を使用することもできますので、情報取得のためのコストはかなり抑えることができます。

私も SQL Database の状態の可視化の仕組みを構築することがあるのですが、幅広いメトリクスの取得と安定した情報収集を実現することは毎回悩ましいため、標準機能としてこのようなデータ取得ができるのはかなり嬉しいですね。

 

情報の取得方法

ロードマップには拡張イベントによるデータ取得も触れられていましたが、現状は定期的に DMV の情報を Watcher から参照することでデータの取得が行われています。

取得される情報については Database watcher data collection and datasets (preview) に記載されており、どのような情報が取得されているのかはこちらから確認できます。

実際にどのようなクエリで取得されているかを確認したい場合にはクエリ実行情報の取得の拡張イベントを設定し、アプリケーション名のフィルターで「SQLExternalMonitoring」「x_ms_reserved_sql_external_monitoring」の情報を取得することで確認ができます。

同様の情報取得の仕組みとしては、telegraf の SQL Server プラグイン がありますが、基本メトリクスとしてはこの情報相当の内容は取得されていると思います。

 

ダッシュボードの内容

ダッシュボードの内容は実際に設定してみるとわかるのですが、かなり細かな観点で情報の可視化が行われています。

image

一般的に必要となる項目は網羅されており、取得を行っておけば何か問題が発生した場合に必要となるメトリックに関しての情報は大体確認できるかと思います。

どのようなクエリでグラフを可視化しているかについても、ADX のクエリが確認できますので、ADX の学習としても役に立つかと思います。

 

ロードマップ

今後のロードマップについては Introducing database watcher for Azure SQL に記載されており、SQL Server on Azure VM のサポートと、構成可能なデータ収集が期待している内容ですね。

 

取得されているメトリクスの活用例

以下のグラフは、SQL Database をバックエンドで使用している App Service の稼働状況のグラフとなります。

image

アプリケーションの正常性が低下しているタイミングがあり、そのタイミングでは SQL Database の DTU 使用率が上昇していることが確認できます。

標準で取得されているプラットフォームメトリクスではここまでしか取得ができないのですが、Database Watcher を使用した場合は、SQL Database の詳細をさらに分析することができます。

上述のアプリケーションの稼働状況 / DTU の使用状況は標準メトリクスで取得できていますが、Database Watcher では SQL Database に特化してさらに詳細な情報が取得されています。

今回の事象であれば、データベースが不安定になるタイミングでメモリクラークの「MEMORYCLERK_SQLTRACE」が上昇し、上昇がある程度続くと、SQL Database のリソース正常性が不安定になっているという因果関係が確認できました。

image

MEMORYCLERK_SQL_TRACE はトレース関連で使用されるメモリとなりますが、監査系の設定や拡張イベントの設定を調整しても事象は解消していませんでした。

これらの情報を基に SR で事象の報告をし、問題が解決するまでは、「Invoke-AzSqlDatabaseFailover」を実行して、手動フェールオーバーをすることでメモリが解放されることが確認できていましたので、Database Watcher でメモリの使用状況を確認しながら、MEMORYCLERK_SQL_TRACE の使用状況が肥大化してきたら再度手動フェールオーバーを実行するということで、暫定的な対応を実施していました

この挙動は、メモリリークによる不具合で現状は解消されたのですが、Database Watcher で取得されている項目を分析することで、該当の環境でどのような事象が発生しているかを分析することができました。

Share

Written by Masayuki.Ozawa

3月 21st, 2024 at 10:20 am

Posted in SQL Database

Tagged with

Leave a Reply