public class Frequencies extends SampledStat implements CompoundStat
CompoundStat
that represents a normalized distribution with a Frequency
metric for each
bucketed value. The values of the Frequency
metrics specify the frequency of the center value appearing
relative to the total number of values recorded.
For example, consider a component that records failure or success of an operation using boolean values, with one metric to capture the percentage of operations that failed another to capture the percentage of operations that succeeded.
This can be accomplished by creating a Sensor
to record the values,
with 0.0 for false and 1.0 for true. Then, create a single Frequencies
object that has two
Frequency
metrics: one centered around 0.0 and another centered around 1.0. The Frequencies
object is a CompoundStat
, and so it can be added directly to a Sensor
so the metrics are created automatically.
CompoundStat.NamedMeasurable
Constructor and Description |
---|
Frequencies(int buckets,
double min,
double max,
Frequency... frequencies)
Create a Frequencies that captures the values in the specified range into the given number of buckets,
where the buckets are centered around the minimum, maximum, and intermediate values.
|
Modifier and Type | Method and Description |
---|---|
double |
combine(List<org.apache.kafka.common.metrics.stats.SampledStat.Sample> samples,
MetricConfig config,
long now) |
static Frequencies |
forBooleanValues(MetricName falseMetricName,
MetricName trueMetricName)
Create a Frequencies instance with metrics for the frequency of a boolean sensor that records 0.0 for
false and 1.0 for true.
|
double |
frequency(MetricConfig config,
long now,
double centerValue)
Return the computed frequency describing the number of occurrences of the values in the bucket for the given
center point, relative to the total number of occurrences in the samples.
|
List<CompoundStat.NamedMeasurable> |
stats() |
current, measure, oldest, record, toString
public Frequencies(int buckets, double min, double max, Frequency... frequencies)
buckets
- the number of buckets; must be at least 1min
- the minimum value to be capturedmax
- the maximum value to be capturedfrequencies
- the list of Frequency
metrics, which at most should be one per bucket centered
on the bucket's value, though not every bucket need to correspond to a metric if the
value is not neededIllegalArgumentException
- if any of the Frequency
objects do not have a
center value
within the specified rangepublic static Frequencies forBooleanValues(MetricName falseMetricName, MetricName trueMetricName)
falseMetricName
- the name of the metric capturing the frequency of failures; may be null if not neededtrueMetricName
- the name of the metric capturing the frequency of successes; may be null if not neededIllegalArgumentException
- if both falseMetricName
and trueMetricName
are nullpublic List<CompoundStat.NamedMeasurable> stats()
stats
in interface CompoundStat
public double frequency(MetricConfig config, long now, double centerValue)
config
- the metric configurationnow
- the current time in millisecondscenterValue
- the value corresponding to the center point of the bucketpublic double combine(List<org.apache.kafka.common.metrics.stats.SampledStat.Sample> samples, MetricConfig config, long now)
combine
in class SampledStat