SE の雑記

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

Log Analytics の HTTP データ コレクター API を使用した SQL Database の情報収集

one comment

SQL Database の Intelligent Insights を使用することで、Log Analytics に情報を収集することができますが、Log Analytics には、HTTP データコレクター API があり、カスタムデータをアップロードすることもできるようになっています。
詳細については、 HTTP データ コレクター API を使用した Log Analytics へのデータの送信 (パブリック プレビュー) に記載されていますが、この仕組みを使用して、SQL Database の任意の性能情報を Log Analytics に格納する仕組みを作ってみました。
性能情報については、SQL Database に対してクエリを実行して取得しているだけですので、SQL Server からも情報を取得可能です。

取得については PowerShell で実装しており、コードについては https://github.com/MasayukiOzawa/MonitorDB/tree/master/04.Log%20Analytics に置いてあります。
冒頭で紹介した技術文書では、PowerShell を使用したサンプルがついていますので、それをベースに SQL Database の情報を取得しています。
Azure Functions の Timer Trigger で定期的に PowerShell を実行しているので、Azure Functions のアプリケーション設定で次の 3 種類の設定を追加してください。

  • アプリケーション設定
    • SharedKey : Log Analytics の Primary Key または、Secondary Key
    • WorkspaceID : Log Analytics のワークスペース ID
  • 接続文字列
    • CollectTarget : 情報取得対象の SQL Database の DB の接続文字列

あとは、Github の「Data Collect.ps1」を Azure Functions の関数に貼り付けて、定期的に実行すれば Log Analytics に情報の取得が行われます。
Log Analytics 上にスキーマの生成はすぐに行われるのですが、実際の情報が集計されるのにはタイムラグがあるため、初回実行後は 10 分程度待ってから Log Analytics を確認した方がよいかと。
テスト用のデータをいくつか入れてしまっているので、下の画像では不要なものも表示されてしまっていますが、情報の取得が行われると、

  • SQLPerformance_FileIO_CL
  • SQLPerformance_Perf_CL
  • SQLPerformance_Scheduler_CL
  • SQLPerformance_Session_CL
  • SQLPerformance_WaitStats_CL

という、5 種類のカスタムログが取得されます。
image
データについては、1DB の 24 時間分で 560 MB ぐらいのデータになりますので、Free だと少し足りないかと思います。
Log Analytics のデータの検索には、Azure Log Analytics Query Language を利用するのですが、取り掛かりとしては、次の情報を確認していくとよいかと思います。

最初に紹介した私の Github の中に、SQL Database Log.omsview というファイルも含まれているのですが、このファイルは Log Analytics のビューの定義をエクスポートしたものとなります。
ポータルで Log Analytics を開くと、ビューデザイナーをクリックすることができます。
image
ここにインポートのメニューがありますので、そこから omsview ファイルをインポートすることができるようになっています。
image
リポジトリのファイルをインポートすると、Log Analytics の情報を元に、次のようなビューが表示できる定義をインポートすることができるかと。
image
image
これらの情報は、SQL Database のパフォーマンスの情報を可視化したものになるのですが、DTU とは異なる観点での情報を取得したものになります。
SQL Server でよく利用される、sys.dm_os_performance_counters の情報をベースにしたものですね。
待ち事象の情報等については、まだ、可視化の対象にはできていないのですが、時間があるときに追加しようと思います。
いくつかの項目については、Intelligent Insight で取得しているものと重複していると思うのですが、自分で取得情報の意味を理解して、取得した情報を使いこなせるようになろうとすると、私の場合、似たような情報を自分でも取得してみないと理解できないのですよね…。
とりあえず、2 GB (4 日分) ぐらいのデータを格納しているのですが、Log Analytics の検索、かなり早くて、ダッシュボードの情報を表示するのにもストレスないですね。
ダッシュボードの可視化で使用できる表現形式が、下の画像の内容のようにまだ少ないのですが、表現方法が増えると、結構面白いダッシュボードが作れそうですね。
image

Share

Written by Masayuki.Ozawa

2月 25th, 2018 at 10:51 pm

One Response to 'Log Analytics の HTTP データ コレクター API を使用した SQL Database の情報収集'

Subscribe to comments with RSS or TrackBack to 'Log Analytics の HTTP データ コレクター API を使用した SQL Database の情報収集'.

  1. […] Log Analytics の HTTP データ コレクター API を使用した SQL Database の情報収集 […]

Leave a Reply