Tworzę niestandardowe liczniki wydajności dla aplikacji. Napisałem proste narzędzie C# do tworzenia kategorii i liczników. Na przykład poniższy fragment kodu to w zasadzie to, co używam. Następnie uruchamiam oddzielną aplikację, która bez końca odświeża surową wartość licznika. Podczas gdy to działa, licznik i sztuczna instancja są widoczne lokalnie w perfmon.Dlaczego perfmon nie może zobaczyć wystąpień mojego niestandardowego licznika wydajności?
Problem polega na tym, że system monitorowania, którego używamy, nie widzi wystąpień w liczniku wielu instancji, który utworzyłem podczas zdalnego przeglądania z innego serwera. Używając narzędzia perfmon do przeglądania liczników, widzę kategorię i liczniki, ale pole instancji jest wyszarzone i nie mogę nawet wybrać "Wszystkie wystąpienia" ani kliknąć "Dodaj". Korzystanie z innych metod dostępu, takich jak [typeperf][1]
, powoduje podobne problemy.
Nie jestem pewien, czy jest to problem z serwerem czy kodem. Jest to powtarzalne tylko w środowisku produkcyjnym, gdzie jest to potrzebne. Na moim komputerze i serwerach programistycznych działa świetnie. Jestem administratorem lokalnym na wszystkich serwerach.
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);
Następnie, w oddzielnej aplikacji, biegnę to wygenerować manekina instancji dane:
var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
pc.RawValue = 0;
Thread.Sleep(1000);
}
Która wersja .Net to jest? –
Minęło trochę czasu, ale jestem pewien, że korzystałem z .NET 2.0 lub 3.5 w tym czasie. – spoulson
Czy kiedykolwiek otrzymałeś odpowiedź? Zastanawiam się, czy utworzyłeś niestandardową klasę licznika wydajności i nie można jej przekształcać do postaci szeregowej? –