lamina.stats documentation

moving-average

fn

[ch]
[{:keys [period window task-queue], :or {window (t/minutes 5), period (t/period)}, :as options} ch]

Returns a channel that will periodically emit the moving average over all messages emitted by the source channel every period milliseconds, defaulting to once every five seconds. This moving average is exponentially weighted to the last window milliseconds, defaulting to the last five minutes.

moving-quantiles

fn

[ch]
[{:keys [period window quantiles task-queue sample-size], :or {quantiles [0.5 0.75 0.95 0.99 0.999], task-queue (t/task-queue), window (t/minutes 5)}, :as options} ch]

Returns a channel that will periodically emit a map of quantile values every period millseconds, which represent the statistical distribution of values emitted by the source channel, weighted towards the last window milliseconds.

The map will be of quantile onto quantile value, so for a uniform distribution of values from 1..1000, it would emit

{0.5 500, 0.75 750, 0.95 950, 0.99 990, 0.999 999}

By default, the above quantiles will be used, these can be specified as a sequence of quantiles of the form [0.5 0.75 0.99 0.999].

moving-sample

fn

[ch]
[{:keys [window period sample-size task-queue], :as options} ch]

Accumulates a representative sample of values passing through the channel, biased towards values within the last window milliseconds.

The current sample is emitted every period milliseconds.

outliers

fn

[facet ch]
[facet {:keys [window variance-predicate task-queue], :or {window (t/minutes 5), variance-predicate (fn* [p1__19634#] (< 3 (abs (double p1__19634#)))), task-queue (t/task-queue)}} ch]

Returns a channel that will emit outliers from the source channel, as measured by the standard deviations from the mean value of (facet msg). Outlier status is determined by 'variance-predicate', which is given the standard deviations from the mean, and returns true or false. By default, it will return true for any value where the absolute value is greater than three.

For instance, to monitor function calls that take an unusually long or short time via a return probe:

(outliers :duration (probe-channel :name:return))

To only receive outliers that are longer than the mean, define a custom :predicate

(outliers :duration {:window (lamina.time/minutes 15) :variance-predicate #(< % 3)} (probe-channel :name:return))

:window describes the window of the moving average, which defaults to five minutes. This can be used to adjust the responsiveness to long-term changes to the mean.

quantiles

fn

[ch]
[{:keys [period quantiles task-queue sample-size], :or {quantiles [0.5 0.75 0.95 0.99 0.999], task-queue (t/task-queue)}, :as options} ch]

Returns a channel that will periodically emit a map of quantile values every period millseconds, which represent the statistical distribution of values emitted by the source channel.

The map will be of quantile onto quantile value, so for a uniform distribution of values from 1..1000, it would emit

{0.5 500, 0.75 750, 0.95 950, 0.99 990, 0.999 999}

By default, the above quantiles will be used, these can be specified as a sequence of quantiles of the form [0.5 0.75 0.99 0.999].

rate

fn

[ch]
[{:keys [period task-queue], :as options} ch]

Returns a channel that will periodically emit the number of messages emitted by the source channel over the last period milliseconds, with a default of 1000.

sample

fn

[ch]
[{:keys [window period sample-size task-queue], :as options} ch]

Accumulates a representative sample of values passing through the channel.

The current sample is emitted every period milliseconds.

sum

fn

[ch]
[{:keys [period task-queue], :as options} ch]

Returns a channel that will periodically emit the sum of all messages emitted by the source channel over the last period milliseconds, with a default of 1000.

It is assumed that all numbers emitted by the source channel are integral values.

variance

fn

[ch]
[{:keys [period task-queue], :as options} ch]

Returns a channel that will periodically emit the variance of all values emitted by the source channel every period milliseconds.