App.Metrics.Core The default IApdexProvider implementation which uses the specified reservoir to sample values in order to caclulate an apdex score App.Metrics.Apdex.Interfaces.IApdexProvider Initializes a new instance of the class. The reservoir used to sample values in order to caclulate an apdex score. The apdex t seconds used to calculate satisfied, tolerating and frustrating counts. Initializes a new instance of the class. The apdex builder. The registry storing all metric data. The clock. Apdex Metric allows us to measure an apdex score which is a ratio of the number of satisfied and tolerating requests to the total requests made. Each satisfied request counts as one request, while each tolerating request counts as half a satisfied request. App.Metrics.Facts.Metrics.IApdexMetric Initializes a new instance of the class. The reservoir to user for sampling. The apdex t seconds value between 0 and 1. The clock to use to measure processing duration. if set to true allows the service to warmup before starting to calculate the apdex, the score will intitially be 1 until enough samples have been recorded. Initializes a new instance of the class. The reservoir to user for sampling. The clock to use to measure processing duration. if set to true allows the service to warmup before starting to calculate the apdex, the score will intitially be 1 until enough samples have been recorded. Initializes a new instance of the class. The apdexProvider implementation to use for sampling values to generate the apdex score. The clock to use to measure processing duration. if set to true allows the service to warmup before starting to calculate the apdex, the score will intitially be 1 until enough samples have been recorded. clock and apdexProvider are required. Simple interface that represent a logger. Log a message the specified log level. The log level. The message function. An optional exception. Optional format parameters for the message generated by the messagefunc. true if the message was logged. Otherwise false. Note to implementers: the message func should not be called if the loglevel is not enabled so as not to incur performance penalties. To check IsEnabled call Log with only LogLevel and check the return value, no event will be written. The log level. Represents a way to get a Gets the specified named logger. Name of the logger. The logger reference. Opens a nested diagnostics context. Not supported in EntLib logging. The message to add to the diagnostics context. A disposable that when disposed removes the message from the context. Opens a mapped diagnostics context. Not supported in EntLib logging. A key. A value. A disposable that when disposed removes the map from the context. Provides a mechanism to create instances of objects. Sets the current log provider. The log provider. Gets or sets a value indicating whether this is logging is disabled. true if logging is disabled; otherwise, false. Sets an action that is invoked when a consumer of your library has called SetCurrentLogProvider. It is important that hook into this if you are using child libraries (especially ilmerged ones) that are using LibLog (or other logging abstraction) so you adapt and delegate to them. Gets a logger for the specified type. The type whose name will be used for the logger. An instance of Gets a logger for the specified type. The type whose name will be used for the logger. If the type is null then this name will be used as the log name instead An instance of Gets a logger with the specified name. The name. An instance of Opens a nested diagnostics context. A message. An that closes context when disposed. Opens a mapped diagnostics context. A key. A value. An that closes context when disposed. The form of the Loupe Log.Write method we're using Gets or sets a value indicating whether [provider is available override]. Used in tests. true if [provider is available override]; otherwise, false. Some logging frameworks support structured logging, such as serilog. This will allow you to add names to structured data in a format string: For example: Log("Log message to {user}", user). This only works with serilog, but as the user of LibLog, you don't know if serilog is actually used. So, this class simulates that. it will replace any text in {curly braces} with an index number. "Log {message} to {user}" would turn into => "Log {0} to {1}". Then the format parameters are handled using regular .net string.Format. The message builder. The format parameters. Initializes a new instance of the class. The registry storing all metric data. The histogram builder. Initializes a new instance of the class. Initializes a new instance of the class. The histogram builder. The registry. Initializes a new instance of the class. The registry storing all metric data. The histogram builder. Initializes a new instance of the class. The reservoir to use for sampling. Initializes a new instance of the class. The histogram builder. The registry. Initializes a new instance of the class. The registry storing all metric data. The timer builder. The clock. Initializes a new instance of the class. The histogram implementation to use. The clock to use to measure processing duration. The time unit for this timer. Initializes a new instance of the class. The histogram implementation to use. The meter implementation to use to genreate the rate of events over time. The clock to use to measure processing duration. The time unit for this timer. Initializes a new instance of the class. The timer builder. The metrics registry. The clock. Initializes a new instance of the class. The registry storing all metric data. The timer builder. The clock. Initializes a new instance of the class. The histogram implementation to use. The clock to use to measure processing duration. Initializes a new instance of the class. The reservoir implementation to use for sampling values to generate the histogram. The clock to use to measure processing duration. Initializes a new instance of the class. The reservoir to use for sampling within the histogram. The meter implementation to use to genreate the rate of events over time. The clock to use to measure processing duration. Initializes a new instance of the class. The histogram implementation to use. The meter implementation to use to genreate the rate of events over time. The clock to use to measure processing duration. Initializes a new instance of the class. The reservoir implementation to use for sampling values to generate the histogram. The clock to use to measure processing duration. The scheduler used to tick the associated meter. Initializes a new instance of the class. The timer builder. The metrics registry. The clock. Builder for configuring environment information output formatting using an . Builder for configuring the used for timing when recording specific metrics types e.g. . Builder for configuring the . Builder for configuring the used for filtering metrics when their values are fetched. Builder for configuring s used for formatting s when they are reported. Builder for configuring s used for reporting s. If the user as explictity set a formatter us this as the default formatter to output metrics. The reporter to set the user configured formatter Builder for configuring sampling using an . Initializes a new instance of the class. The counter builder. The registry storing all metric data. Initializes a new instance of the class. The counter builder. The registry. Provides the ability to filter metrics by Context, Type, Name etc. Initializes a new instance of the class. The gauge builder. The registry storing all metric data. A Gauge metric using a function to provide the instantaneous value to record Initializes a new instance of the class. The hit meter. The total meter. Creates a new HitPercentageGauge with externally tracked Meters, and uses the OneMinuteRate from the MeterValue of the meters. Initializes a new instance of the class. The numerator meter to use. The denominator meter to use. The function to extract a value from the MeterValue. Will be applied to both the numerator and denominator meters. Creates a new HitPercentageGauge with externally tracked Meters, and uses the provided meter rate function to extract the value for the percentage. Initializes a new instance of the class. The numerator meter to use. The denominator meter to use. Creates a new HitPercentageGauge with externally tracked Meter and Timer, and uses the OneMinuteRate from the MeterValue of the meters. Initializes a new instance of the class. The numerator meter to use. The denominator timer to use. The function to extract a value from the MeterValue. Will be applied to both the numerator and denominator meters. Creates a new HitPercentageGauge with externally tracked Meter and Timer, and uses the provided meter rate function to extract the value for the percentage. Initializes a new instance of the class. The hit meter. The total meter. Creates a new HitRatioGauge with externally tracked Meters, and uses the OneMinuteRate from the MeterValue of the meters. Initializes a new instance of the class. The numerator meter to use for the ratio. The denominator meter to use for the ratio. The function to extract a value from the MeterValue. Will be applied to both the numerator and denominator meters. Creates a new HitRatioGauge with externally tracked Meters, and uses the provided meter rate function to extract the value for the ratio. Initializes a new instance of the class. The numerator meter to use for the ratio. The denominator meter to use for the ratio. Creates a new HitRatioGauge with externally tracked Meter and Timer, and uses the OneMinuteRate from the MeterValue of the meters. Initializes a new instance of the class. The numerator meter to use for the ratio. The denominator timer to use for the ratio. The function to extract a value from the MeterValue. Will be applied to both the numerator and denominator meters. Creates a new HitRatioGauge with externally tracked Meter and Timer, and uses the provided meter rate function to extract the value for the ratio. A Gauge metric using two functions to calculate a percentage Initializes a new instance of the class. The numerator. The denominator. A Gauge metric using two functions to calculate a ratio to record Initializes a new instance of the class. The numerator. The denominator. Initializes a new instance of the class. The metrics registry. The buide factory. The clock. Initializes a new instance of the class. The clock. The metrics filter. The factory used to provide access to metric managers. The factory used to provide access to metric builders. The metrics advanced manager factory. The data manager. The metrics manager. Initializes a new instance of the class. The registry. Initializes a new instance of the class. The metrics registry. The buide factory. The clock. Initializes a new instance of the class. The global filter. The registry. This is a Marker class which is used to determine if all the services were added to when App.Metrics is loaded. Initializes a new instance of the class. The clock. The registry storing all metric data. The meter builder. Initializes a new instance of the class. The clock. Initializes a new instance of the class. The meter builder. The metrics registry. The clock. Marks the specified count. The count. Resets all the meters values. Gets the meters current value. The elapsed time for calculating the mean rate. The meters current value A histogram with an exponentially decaying reservoir produces quantiles which are representative of (roughly) the last five minutes of data.

The reservoir is produced by using a forward-decaying reservoir with an exponential weighty towards recent data unlike a Uniform Reservoir which does not provide a sense of recency.

This sampling reservoir can be used when you are interested in recent changes to the distribution of data rather than a median on the lifetime of the histgram.

Initializes a new instance of the class. The default size and alpha values offer a 99.9% confidence level with a 5% margin of error assuming a normal distribution and heavily biases the reservoir to the past 5 minutes of measurements. Initializes a new instance of the class. The default size and alpha values offer a 99.9% confidence level with a 5% margin of error assuming a normal distribution and heavily biases the reservoir to the past 5 minutes of measurements. The number of samples to keep in the sampling reservoir. The alpha value, e.g 0.015 will heavily biases the reservoir to the past 5 mins of measurements. The higher the value the more biased the reservoir will be towards newer values. Initializes a new instance of the class. The default size and alpha values offer a 99.9% confidence level with a 5% margin of error assuming a normal distribution and heavily biases the reservoir to the past 5 minutes of measurements. The number of samples to keep in the sampling reservoir. The alpha value, e.g 0.015 will heavily biases the reservoir to the past 5 mins of measurements. The higher the value the more biased the reservoir will be towards newer values. Minimum weight required for a sample to be retained during reservoir rescaling. Samples with weights less than this value will be discarded. This behavior is useful if there are longer periods of very low or no activity. Default value is zero, which preserves all samples during rescaling. Initializes a new instance of the class. The number of samples to keep in the sampling reservoir The alpha value, e.g 0.015 will heavily biases the reservoir to the past 5 mins of measurements. The higher the value the more biased the reservoir will be towards newer values. Minimum weight required for a sample to be retained during reservoir rescaling. Samples with weights less than this value will be discarded. This behavior is useful if there are longer periods of very low or no activity. Default value is zero, which preserves all samples during rescaling. The clock type to use for calculating processing time. Initializes a new instance of the class. The number of samples to keep in the sampling reservoir The alpha value, e.g 0.015 will heavily biases the reservoir to the past 5 mins of measurements. The higher the value the more biased the reservoir will be towards newer values. Minimum weight required for a sample to be retained during reservoir rescaling. Samples with weights less than this value will be discarded. This behavior is useful if there are longer periods of very low or no activity. Default value is zero, which preserves all samples during rescaling. The clock type to use for calculating processing time. The schedular used to rescale the reservoir. Gets the size. The size. Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Releases unmanaged and - optionally - managed resources. true to release both managed and unmanaged resources; false to release only unmanaged resources. A common feature of the above techniques—indeed, the key technique that allows us to track the decayed weights efficiently—is that they maintain counts and other quantities based on g(ti − L), and only scale by g(t − L) at query time. But while g(ti −L)/g(t−L) is guaranteed to lie between zero and one, the intermediate values of g(ti − L) could become very large. For polynomial functions, these values should not grow too large, and should be effectively represented in practice by floating point values without loss of precision. For exponential functions, these values could grow quite large as new values of (ti − L) become large, and potentially exceed the capacity of common floating point types. However, since the values stored by the algorithms are linear combinations of g values (scaled sums), they can be rescaled relative to a new landmark. That is, by the analysis of exponential decay in Section III-A, the choice of L does not affect the final result. We can therefore multiply each value based on L by a factor of exp(−α(L′ − L)), and obtain the correct value as if we had instead computed relative to a new landmark L′ (and then use this new L′ at query time). This can be done with a linear pass over whatever data structure is being used." Initializes a new instance of the class. The count of all observed values. The sum of all observed values. The values within the sample set. A Reservoir implementation backed by a sliding window that stores only the measurements made in the last N seconds (or other time unit). Initializes a new instance of the class. Initializes a new instance of the class. The number of samples to keep in the sampling reservoir A histogram with a uniform reservoir produces quantiles which are valid for the entirely of the histogram’s lifetime.

This sampling reservoir can be used when you are interested in long-term measurements, it does not offer a sence of recency.

All samples are equally likely to be evicted when the reservoir is at full capacity.

Uses Vitter's Algorithm R for reservoir sampling
Initializes a new instance of the class. Initializes a new instance of the class. The number of samples to keep in the sampling reservoir Gets the size. The size. Updates the sample set adding the specified value using Vitter's Algorithm R. Algorithm R pseudo code The value to add to the sample set. The user value to track, which records the last, min and max user values within the sample. Represents a statistical snapshot of a sample set when using Vitter's Algorithm R. This is the snapshot used a histogram with a uniform reservoir Initializes a new instance of the class. The count of all observed values. The sum of all observed values. The values within the sample set. if set to true [values are already sorted]. The minimum user value. The maximum user value. A scheduler for an that uses a fixed time period schedule for rescaling. Default rescaling period for the (one hour). Initializes a new instance of the class. is used as the rescaling period. Initializes a new instance of the class. Rescaling period. Default instance of the , using as rescaling period. Returns the rescaling period used by the . Removes given reservoir from the . to remove from the scheduler. Removing a reservoir from the scheduler means the scheduler will not initiate any rescaling operations on that reservoir anymore. Adds given reservoir to the . Reservoir to add. Adding a reservoir to the scheduler causes the scheduler to periodically initiate a rescaling operation on that reservoir.