/// <summary> /// Initialize performance counter for new calculations. /// Some counters returns zero on first value because they need two values in order to be calculated. /// </summary> public void Initialize() { // Take one values _performanceCounter.NextValue(); // Set performance counter as initialized _initialized = true; // Initialize samples counter to zero _samplesCount = 0; // Initialize total result to zero _result = 0; // Set counter status equal to OK (0) CounterStatus.Initialize(); // Write verbose counter has been initialized WriteVerbose($"Initialized performance counter on counter {_performanceCounterString}"); }
/// <summary> /// Change performance counter status according to Nagios / Icinga format. /// Saves error in ResultString /// </summary> /// <param name="nagiosStatusEnum"></param> private void RegisterStatusOnCounter(NagiosStatusEnum nagiosStatusEnum) { // Set status warning if (nagiosStatusEnum == NagiosStatusEnum.Warning) { CounterStatus.SetWarning(); WriteVerbose($"Performance counter on counter {_performanceCounterString} = {_result} >= {_warning} -> status warning"); } // Set status critical else { CounterStatus.SetCritical(); WriteVerbose($"Performance counter on counter {_performanceCounterString} = {_result} >= {_critical} -> status critical"); } // Store result and message in ResultString ResultString = $"{_friendlyName} = {Math.Round(_result, 4, MidpointRounding.AwayFromZero).ToString(FormatFloat)} {nagiosStatusEnum.ToString().ToLower()}."; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value != null) { CounterStatus conStatus = (CounterStatus)value; if (conStatus.Equals(CounterStatus.Free)) { return("/Images/CounterFree.png"); } else { return("/Images/CopunterBusy.png"); } } else { return("/Images/CounterFree.png");; } }