2

私の問題は、パフォーマンス カウンター カテゴリの一部が時々失われるように見えることです。その理由がわかりません。

以下のコードは、次のように例外をスローします。

パフォーマンス カテゴリの検索に失敗しました

エラー メッセージ: カテゴリが存在しません。CategoryName: HP EVA 物理ディスク
グループ ターゲットのカテゴリ リスト:
ServiceModelService 4.0。
ブラブラ

印刷物にはパフォーマンス カウンターの長いリストが含まれていますが、私が求めているものではありません。perfmon.exe を見ると、欠落しているカテゴリが 1 回見つかります。

次のコードを使用して、カテゴリ内のさまざまなカウンターを見つけています。

public static string[] GetPerformanceCategory(string CategoryName)
{
    //Console.WriteLine("CategoryName to Search for: " + CategoryName);
    if (string.IsNullOrEmpty(CategoryName))
        throw new NullReferenceException("CategoryName is empty");

    try
    {
        PerformanceCounterCategory perfCat = new PerformanceCounterCategory(CategoryName);

        string[] catInstances = perfCat.GetInstanceNames();
        return catInstances;
    }
    catch(Exception Ex)
    {
        StringBuilder ErrorMsg = new StringBuilder();
        ErrorMsg.AppendLine("Failed to lookup Preformance Category");
        ErrorMsg.AppendLine("Error Msg: " + Ex.Message);
        ErrorMsg.AppendLine("CategoryName: " + CategoryName);
        ErrorMsg.AppendLine("Category list on target:");

        StringBuilder CatList = new StringBuilder();
        var categories = PerformanceCounterCategory.GetCategories();
        foreach (var Cat in categories)
            CatList.AppendLine(Cat.CategoryName);                

        ErrorMsg.AppendLine(CatList.ToString());

        Logger.WriteToLog(ErrorMsg.ToString(), EventLogEntryType.Error);
        return null;
    }      
}

要するに、パフォーマンス カウンターを非表示にする「魔法」はあるのでしょうか。それとも、何か特定のことをする必要がありますか?

4

2 に答える 2