SE の雑記

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

データコレクションの情報の一元管理

leave a comment

SQL Server 2008 以降はデータコレクションの機能が追加され、サーバーの各種情報をレポートとして表示することができます。

データコレクション用データベースサイズやキャッシュされるデータ分のメモリが意外と無視できないので、運用環境に設定する場合には、データコレクション用のインスタンスを用意して使用した方がよかったりします。

データコレクションを他のインスタンスで一元管理するときに接続のユーザーで少し考慮点がありますのでメモとして。
詳細については、以下の技術文書が参考になります。
データ コレクタのアーキテクチャと処理
データ コレクタの使用

データコレクションのレポートはマルチインスタンスに対応していますので、以下のように複数のインスタンスを管理することができます。
# SQL Server 2014 のインスタンスと、SQL Server 2008 のインスタンスの情報を収集しています。
image

作業としては以下の 2 ステップを行います。

  1. 管理データウェアハウスを作成するインスタンス (データコレクションのデータベースを作成するインスタンス) では、[管理データウェアハウスの構成] を行う。
    # これによりデータコレクション用のデータベースが作成されます。
    image
  2. 管理対象としたいインスタンス (各種情報を取得したいインスタンス) では、[データコレクションの構成] を行う。
    image

これで設定は完了なのですが気を付けるポイントとしては、デフォルトの設定ではシステムデータコレクション (クエリ統計 / サーバーの利用状況 / ディスク使用量) の収集とアップロードは [SQL Server エージェント サービスのアカウント] で実行されている点になります。
# 各コレクションを実行するユーザーの確認はシステムデータコレクションセットのプロパティから確認できます。
image

管理データウェアハウスのインスタンスのサーバーへの接続についてもここで指定しているアカウントが使われるため、デフォルトの設定では SQL Server エージェントサービスのサービスアカウントが管理データウェアハウスのインスタンスに接続ができないとアップロード系のジョブが失敗してしまいます。
# 管理データウェアハウスにアップロードするための情報の取得とアップロードは SQL Server エージェントのジョブで実行されており、この設定が対象のジョブのステップの実行アカウントとなります。

SQL Server エージェントサービスのサービスアカウントとデータコレクションの情報収集とアップロードに使用するアカウントを異なるものにしたい場合にはプロキシを使用します。

プロキシの作成手順は以下のようになります。

  1. セキュリティの資格情報で管理データウェアハウスに接続するための Windows 認証用の資格情報を作成
    # ドメイン環境でない場合はローカルと管理データウェアハウスに同一のユーザー名 / パスワードのユーザーを作成し、ミラーアカウントを使用した接続にします。
  2. SQL Server エージェントの [プロキシ] から [オペレーティングシステム (CmdExec)] のプロキシとして、上記で作成した資格情報を指定したプロキシを作成
  3. 上記のプロキシのプリンシパルとして、[dc_admin] を付与

これで作成したプロキシをシステムデータコレクションセットの実行するアカウントとして指定できるようになりますので、各データコレクションの実行するアカウントを変更します。

正常に動作しているかの確認は、

  1. SQL Server エージェントのジョブの実行履歴を確認
    collection_set_1_noncached_collect_and_upload : ディスク使用量の取得とアップロード
    collection_set_2_collection : サーバーの利用状況の取得 (ジョブは実行中のままとなり各種情報を取得)
    collection_set_2_upload : サーバーの利用状況のデータをアップロード
    collection_set_3_collection : クエリ統計の取得 (ジョブは実行中のままとなり各種情報を取得)
    collection_set_3_upload : クエリ統計のデータをアップロード
  2. データコレクション用の TEMP ディレクトリにキャッシュファイルが生成されているかを確認
    # デフォルトの設定だと [C:UsersAdministratorAppDataLocalTemp] あたりに作成されていたかと
  3. 管理データウェアハウスのサーバーで SQL Server Profiler 等で [SQL:BatchCompleted] のイベントをキャプチャし、INSERT BULK ステートメントが実行されていることを確認

等で確認ができるかと思います。

2 / 3 の Collection については常時起動したままとなりますので、データコレクションの実行アカウントを変更した場合には、これらのジョブを再起動しておいてもよいかもしれないですね。

トラブルについては データ コレクタのトラブルシューティング を確認するとよさそうですね。
ログの見方が データ コレクターのログ記録 に記載されていますので、この辺が役立ちそうです。

Written by masayuki.ozawa

9月 18th, 2014 at 11:01 pm

Posted in SQL Server

Tagged with

Leave a Reply

*