SE の雑記

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

Perflog スクリプトによるパフォーマンスモニターのグラフ作成

leave a comment

オンプレミスや、IaaS のような OS の機能を使用できる環境で、SQL Server やその他のパフォーマンス情報を時系列で取得したい場合、Windows OS 標準の機能であるパフォーマンスモニターを使用することがあります。
SQL Serer に関してのパフォーマンスモニターのカウンターについては、SQL Server オブジェクトの使用 で解説がされており、SQL Server の状態を時系列で分析したい際には、これらの情報を組み合わせて使用することになります。
項目を分析する際には、いくつかの情報を組み合わせて確認を行い、基本的な分析パターンであれば、汎用的な組み合わせがあります。

例としては次のようなものです。

  1. ハードウェアのリソース使用状況を確認するのであれば、単純に CPU 使用率だけを確認するのではなく、CPU キューの発生状況と組み合わせて確認を行う。
    image
  2. CPU の使用状況についても「どのプロセスの CPU 使用状況がサーバー内で多いかを」確認するため、プロセス単位の CPU 使用状況と組み合わせる。
    image
  3. SQL の実行数を確認する際には、「接続数」と組み合わせて確認を行い、SQL Server の接続数とバッチ (クエリ) 実行数の推移をみる。
    image

パフォーマンスモニターのログの分析を行う都度、グラフを作成するもの大変であり、いつかスクリプト化をしようと思いながら、なかなか実現できていなかったのですが、ようやくスクリプト化を行いました。

使い方については、簡単ではありますが README に記載しています。
パフォーマンスモニターのログファイル (blg 形式) を整形しながら、COM 経由で Excel と連携しながらグラフの作成を行うツールとなっています。
(Excel は COM 経由で操作しているため、スクリプト実行端末では Excel のインストールが必須となります)
GitHub のリポジトリには、SQL Server のパフォーマンス情報を分析するときに一般的に使用する 30 種類程度のグラフを作成するための構成ファイルを含めていますので、リポジトリ内の設定で生成されたグラフを元に詳細を追っていくという方法ができるのではないでしょうか。
スクリプト内ではオートフィルやクリップボードにデータをコピーして、データを加工する処理も行っているため、ツールを実行する PC のスペックによっては、エラーになるかもしれません。
メモリ : 32 GB (4 かずあき) / 16 GB (2 かずあき) の環境で、数時間の期間で取得したパフォーマンスモニターのログに関しては、想定通りグラフ化はできていますが、エラーとなってしまう場合は、TSV への出力のみに変更したり、PowerShell のスクリプトですので、適宜カスタマイズをしながら動作せていただければと思います。
(※1かずあき = 8 GB)

Share

Written by Masayuki.Ozawa

11月 24th, 2019 at 4:37 pm

Posted in SQL Server

Tagged with

Leave a Reply