Sto creando dei contatori di prestazioni personalizzati per un'applicazione. Ho scritto un semplice strumento C# per creare categorie e contatori. Ad esempio, lo snippet di codice riportato di seguito è fondamentalmente quello che sto eseguendo. Quindi, eseguo un'applicazione separata che aggiorna all'infinito il valore grezzo del contatore. Durante l'esecuzione, il contatore e l'istanza fittizia sono visualizzati localmente in perfmon.Perché non è possibile vedere le istanze del mio contatore delle prestazioni personalizzato?
Il problema che sto avendo è che il sistema di monitoraggio che usiamo non può vedere le istanze nel contatore multi-istanza Ho creato durante la visualizzazione in remoto da un altro server. Quando utilizzo perfmon per sfogliare i contatori, posso vedere la categoria e i contatori, ma la casella delle istanze è disattivata e non riesco nemmeno a selezionare "Tutte le istanze", né posso fare clic su "Aggiungi". L'utilizzo di altri metodi di accesso, come [typeperf][1]
, presenta problemi simili.
Non sono sicuro se si tratta di un problema di server o di codice. Questo è riproducibile solo nell'ambiente di produzione in cui ne ho bisogno. Sul mio desktop e server di sviluppo, funziona alla grande. Sono un amministratore locale su tutti i server.
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);
Poi, in un'applicazione separata, corro questo per generare manichino dati di istanza:
var pc = new PerformanceCounter(category_name, counter_name, instance_name, false);
while (true) {
pc.RawValue = 0;
Thread.Sleep(1000);
}
Quale versione di .Net è questo? –
È passato un po 'di tempo, ma sono sicuro che stavo usando .NET 2.0 o 3.5 al momento. – spoulson
Hai mai avuto questa risposta? Mi chiedo se hai creato una classe Performance Counter personalizzata e non è stata serializzabile? –