Perfmon データを SQL に

Perfmon データを SQL に

以下に長文を書いて申し訳ありません。

私の職場には、多数の Exchange サーバーとそれをサポートするドメイン コントローラーがあり、現在はすべて SCOM によって監視されています。SQL DB を基盤として、ASP.net Web サイトで SCOM が実行できる機能に加えて、特定の監視要素を設定しました。

私はサーバーをより綿密に監視し、次のことを行えるようにしたいと考えています。

Baseline the servers better for historical comparison
If a problem occurs we can pull out more raw data.

このため、Perfmon カウンターからより多くのデータを取得したいと考えています。SCOM が Perfmon データを取得できることはわかっていますし、実際に取得していますが、SCOM の実装はかなり大きく、それを管理する人たちは、カウンターの頻度を、時々役立つほど頻繁に増やすことを望んでいません。

また、SCOM DB にデータを照会すると、インデックスを変更したり、必要なデータのカットオフ時間を制御したり、実際に必要なものを制御したりすることができません。

ここでの私の質問は、実際にデータを取得して挿入する方法ではなく、これにどうアプローチすればよいかという点です。データを取得して SQL に挿入できるスクリプトはすでにあるからです。

大まかに言うと、サーバー分割は次のようになります。

Exchange 2007 in Domain1.com
Exchange 2010 in Domain2.com

Exchange 2007/2010 の両方で、サーバーは次のように論理的に分割されます。

Mailbox Servers
Client Access Servers
Hub Transport Servers
Domain Controllers

上記のすべてのサーバーから基本的なカウンターを取得し、特定のサーバー タイプについてさらに詳しく調べたいと思います。たとえば、メールボックス サーバーからの RPC 平均待ち時間、CAS サーバーからの接続数、HT サーバーの 1 秒あたりの送信メッセージ数などを取得します。

そこで私がやりたいのは、サーバーのクラスごとに 1 つずつ、合計 4 つのスクリプト タイプを作成し、スケジュールに従って各サーバーからスクリプトを実行してデータを記録し、SQL DB に接続して、レコードをテーブルに挿入することです。

SQL テーブルの場合、サーバー クラスごとに 1 つ作成する必要がありますか、それともすべてのレコードを 1 つのテーブルにまとめる必要がありますか?

すべてのデータを SQL テーブルに投げ込むローカル スクリプトを各サーバーで実行するのは、あまり良い考えではないでしょうか。リモートでデータを収集することも検討しましたが、数分ごとに少しずつデータを取得するだけの場合、ネットワークの遅延やタイミングを狂わせるその他の要因によって時間が大きく変動することがわかりました。

また、最近の日付についてはより頻繁に記録を保持する方法 (たとえば、5 日間のすべてのカウンターについて 5 分ごとに)、過去の日付についてはより頻度の低い記録を保持する方法など、潜在的なアーカイブ ソリューションについてもぜひお聞きしたいです。

答え1

結局、私はリモート コレクションを実行しましたが、データのセットは限定されており、間隔は 5 分ごとに 1 回程度に設定されており、今のところは問題ないようです。データの保持、クエリの効率などについて考える必要がありますが、今のところは自分の質問に答えただけで、誰も何も提案していません。

関連情報