private IEnumerable<IPerformanceCounterInfo> GetPerformanceCounterInfos(ICounterGroup group) { var performanceCounterInfos = new List<IPerformanceCounterInfo>(); foreach (var counter in group.Counters) { var performanceCounters = GetPerformanceCounters(counter.CategoryName, counter.CounterName, counter.InstanceName).ToArray(); if (performanceCounters.Any()) { foreach (var performanceCounter in performanceCounters) { var name = counter.Name; if (name == "*") { name = performanceCounter.InstanceName; } performanceCounterInfos.Add(new PerformanceCounterInfo(name, performanceCounter, counter.Alias, counter.Tags)); } } else { performanceCounterInfos.Add(new PerformanceCounterInfo(counter.Name, null, counter.Alias, counter.Tags)); } } return performanceCounterInfos; }
private IEnumerable <IPerformanceCounterInfo> GetPerformanceCounterInfos(ICounterGroup group) { var performanceCounterInfos = new List <IPerformanceCounterInfo>(); foreach (var counter in group.Counters) { var performanceCounters = GetPerformanceCounters(counter.CategoryName, counter.CounterName, counter.InstanceName, counter.MachineName).ToArray(); if (performanceCounters.Any()) { foreach (var performanceCounter in performanceCounters) { var name = counter.Name; if (name == "*") { name = performanceCounter.InstanceName; } performanceCounterInfos.Add(new PerformanceCounterInfo(name, performanceCounter, counter)); } } else { performanceCounterInfos.Add(new PerformanceCounterInfo(counter.Name, null, counter)); } } return(performanceCounterInfos); }
public IPerformanceCounterGroup GetGroup(ICounterGroup @group) { return null; }
private IEnumerable <IPerformanceCounterInfo> GetPerformanceCounterInfos(ICounterGroup group) { var performanceCounterInfos = new List <IPerformanceCounterInfo>(); foreach (var counter in group.Counters) { // retrieve all system performance counters var performanceCounters = this._getPerformanceCountersMethod(counter).ToList(); if (performanceCounters.Count != 0) { if (group.Filters != null) { // 1) apply filtering for (var i = performanceCounters.Count - 1; i >= 0; i--) { var instanceName = performanceCounters[i].InstanceName; var filteredInstanceName = group.Filters.Aggregate(instanceName, (current, filter) => filter.Execute(current)); if (filteredInstanceName == null) { performanceCounters.RemoveAt(i); } else { performanceCounters[i].InstanceName = filteredInstanceName; } } // 2) we handle uniqueness of instance names : // because of the filtering, multiples instances can have the same instance name, // so we increment a counter for each instance after the first one // eg: w3wp, w3wp#2, w3wp#3, etc. if (!group.AllowDuplicateInstanceNames) { var filteredNames = new Dictionary <string, int>(StringComparer.Ordinal); for (var i = 0; i < performanceCounters.Count; i++) { int count; var instanceName = performanceCounters[i].InstanceName; if (filteredNames.TryGetValue(instanceName, out count)) { performanceCounters[i].InstanceName = instanceName + "#" + (count + 1); } filteredNames[instanceName] = count + 1; } } } // 3) retrieve values foreach (var performanceCounter in performanceCounters) { try { performanceCounter.NextValue(); } catch (Exception ex) { OnGetPerformanceCounters(ex, counter.CategoryName, counter.CounterName, counter.InstanceName, counter.MachineName); } } // 4) create infos performanceCounterInfos.AddRange(performanceCounters); } else { performanceCounterInfos.Add(new PerformanceCounterInfo(null, counter)); } } return(performanceCounterInfos); }
public IPerformanceCounterGroup GetGroup(ICounterGroup group) { return(new PerformanceCounterGroup(group, GetPerformanceCounterInfos)); }
private IEnumerable<IPerformanceCounterInfo> GetPerformanceCounterInfos(ICounterGroup group) { var performanceCounterInfos = new List<IPerformanceCounterInfo>(); foreach (var counter in group.Counters) { // retrieve all system performance counters var performanceCounters = this._getPerformanceCountersMethod(counter).ToList(); if (performanceCounters.Count != 0) { if (group.Filters != null) { // 1) apply filtering for (var i = performanceCounters.Count - 1; i >= 0; i--) { var instanceName = performanceCounters[i].InstanceName; var filteredInstanceName = group.Filters.Aggregate(instanceName, (current, filter) => filter.Execute(current)); if (filteredInstanceName == null) { performanceCounters.RemoveAt(i); } else { performanceCounters[i].InstanceName = filteredInstanceName; } } // 2) we handle uniqueness of instance names : // because of the filtering, multiples instances can have the same instance name, // so we increment a counter for each instance after the first one // eg: w3wp, w3wp#2, w3wp#3, etc. if (!group.AllowDuplicateInstanceNames) { var filteredNames = new Dictionary<string, int>(StringComparer.Ordinal); for (var i = 0; i < performanceCounters.Count; i++) { int count; var instanceName = performanceCounters[i].InstanceName; if (filteredNames.TryGetValue(instanceName, out count)) { performanceCounters[i].InstanceName = instanceName + "#" + (count + 1); } filteredNames[instanceName] = count + 1; } } } // 3) retrieve values foreach (var performanceCounter in performanceCounters) { try { performanceCounter.NextValue(); } catch (Exception ex) { OnGetPerformanceCounters(ex, counter.CategoryName, counter.CounterName, counter.InstanceName, counter.MachineName); } } // 4) create infos performanceCounterInfos.AddRange(performanceCounters); } else { performanceCounterInfos.Add(new PerformanceCounterInfo(null, counter)); } } return performanceCounterInfos; }
public IPerformanceCounterGroup GetGroup(ICounterGroup group) { return new PerformanceCounterGroup(group, GetPerformanceCounterInfos); }
public PerformanceCounterGroup(ICounterGroup counterGroup, Func<ICounterGroup, IEnumerable<IPerformanceCounterInfo>> counterLoader) { _counterGroup = counterGroup; _counterLoader = counterLoader; }
public IPerformanceCounterGroup GetGroup(ICounterGroup @group) { return(null); }
public PerformanceCounterGroup(ICounterGroup counterGroup, Func <ICounterGroup, IEnumerable <IPerformanceCounterInfo> > counterLoader) { _counterGroup = counterGroup; _counterLoader = counterLoader; }