アプリケーション用のカスタム パフォーマンス カウンターをいくつか作成しています。カテゴリーとカウンターを作成するための単純な C# ツールを作成しました。たとえば、以下のコード スニペットは基本的に私が実行しているものです。次に、カウンターの生の値を際限なく更新する別のアプリを実行します。それが実行されている間、カウンターとダミー インスタンスは perfmon でローカルに表示されます。
私が抱えている問題は、私たちが使用している監視システムが、別のサーバーからリモートで表示するときに、作成したマルチインスタンス カウンターのインスタンスを表示できないことです。perfmon を使用してカウンタを参照すると、カテゴリとカウンタは表示されますが、インスタンス ボックスがグレー表示され、[すべてのインスタンス] を選択することも、[追加] をクリックすることもできません。他のアクセス方法を使用すると、[typeperf][1]
同様の問題が発生します。
これがサーバーの問題なのかコードの問題なのかわかりません。これは、必要な本番環境でのみ再現可能です。私のデスクトップおよび開発サーバーでは、うまく機能します。私はすべてのサーバーのローカル管理者です。
CounterCreationDataCollection collection = new CounterCreationDataCollection();
var category_name = "My Application";
var counter_name = "My counter name";
CounterCreationData ccd = new CounterCreationData();
ccd.CounterType = PerformanceCounterType.RateOfCountsPerSecond64;
ccd.CounterName = counter_name;
ccd.CounterHelp = counter_name;
collection.Add(ccd);
PerformanceCounterCategory.Create(category_name, category_name, PerformanceCounterCategoryType.MultiInstance, collection);
次に、別のアプリでこれを実行して、ダミーのインスタンス データを生成します。
var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
pc.RawValue = 0;
Thread.Sleep(1000);
}