Search in sources :

Example 1 with Avg

use of org.apache.kafka.common.metrics.stats.Avg in project kafka by apache.

the class StreamsMetricsImpl method addLatencyMetrics.

private void addLatencyMetrics(String scopeName, Sensor sensor, String entityName, String opName, Map<String, String> tags) {
    maybeAddMetric(sensor, metrics.metricName(entityName + "-" + opName + "-latency-avg", groupNameFromScope(scopeName), "The average latency of " + entityName + " " + opName + " operation.", tags), new Avg());
    maybeAddMetric(sensor, metrics.metricName(entityName + "-" + opName + "-latency-max", groupNameFromScope(scopeName), "The max latency of " + entityName + " " + opName + " operation.", tags), new Max());
    addThroughputMetrics(scopeName, sensor, entityName, opName, tags);
}
Also used : Avg(org.apache.kafka.common.metrics.stats.Avg) Max(org.apache.kafka.common.metrics.stats.Max)

Example 2 with Avg

use of org.apache.kafka.common.metrics.stats.Avg in project kafka by apache.

the class MetricsTest method testSampledStatInitialValue.

@Test
public void testSampledStatInitialValue() {
    // initialValue from each SampledStat is set as the initialValue on its Sample.
    // The only way to test the initialValue is to infer it by having a SampledStat
    // with expired Stats, because their values are reset to the initial values.
    // Most implementations of combine on SampledStat end up returning the default
    // value, so we can use this. This doesn't work for Percentiles though.
    // This test looks a lot like testOldDataHasNoEffect because it's the same
    // flow that leads to this state.
    Max max = new Max();
    Min min = new Min();
    Avg avg = new Avg();
    Count count = new Count();
    Rate.SampledTotal sampledTotal = new Rate.SampledTotal();
    long windowMs = 100;
    int samples = 2;
    MetricConfig config = new MetricConfig().timeWindow(windowMs, TimeUnit.MILLISECONDS).samples(samples);
    max.record(config, 50, time.milliseconds());
    min.record(config, 50, time.milliseconds());
    avg.record(config, 50, time.milliseconds());
    count.record(config, 50, time.milliseconds());
    sampledTotal.record(config, 50, time.milliseconds());
    time.sleep(samples * windowMs);
    assertEquals(Double.NEGATIVE_INFINITY, max.measure(config, time.milliseconds()), EPS);
    assertEquals(Double.MAX_VALUE, min.measure(config, time.milliseconds()), EPS);
    assertEquals(0.0, avg.measure(config, time.milliseconds()), EPS);
    assertEquals(0, count.measure(config, time.milliseconds()), EPS);
    assertEquals(0.0, sampledTotal.measure(config, time.milliseconds()), EPS);
}
Also used : Min(org.apache.kafka.common.metrics.stats.Min) Avg(org.apache.kafka.common.metrics.stats.Avg) Max(org.apache.kafka.common.metrics.stats.Max) Rate(org.apache.kafka.common.metrics.stats.Rate) SimpleRate(org.apache.kafka.common.metrics.stats.SimpleRate) Count(org.apache.kafka.common.metrics.stats.Count) Test(org.junit.Test)

Example 3 with Avg

use of org.apache.kafka.common.metrics.stats.Avg in project kafka by apache.

the class MetricsTest method testSimpleStats.

@Test
public void testSimpleStats() throws Exception {
    ConstantMeasurable measurable = new ConstantMeasurable();
    metrics.addMetric(metrics.metricName("direct.measurable", "grp1", "The fraction of time an appender waits for space allocation."), measurable);
    Sensor s = metrics.sensor("test.sensor");
    s.add(metrics.metricName("test.avg", "grp1"), new Avg());
    s.add(metrics.metricName("test.max", "grp1"), new Max());
    s.add(metrics.metricName("test.min", "grp1"), new Min());
    s.add(metrics.metricName("test.rate", "grp1"), new Rate(TimeUnit.SECONDS));
    s.add(metrics.metricName("test.occurences", "grp1"), new Rate(TimeUnit.SECONDS, new Count()));
    s.add(metrics.metricName("test.count", "grp1"), new Count());
    s.add(new Percentiles(100, -100, 100, BucketSizing.CONSTANT, new Percentile(metrics.metricName("test.median", "grp1"), 50.0), new Percentile(metrics.metricName("test.perc99_9", "grp1"), 99.9)));
    Sensor s2 = metrics.sensor("test.sensor2");
    s2.add(metrics.metricName("s2.total", "grp1"), new Total());
    s2.record(5.0);
    int sum = 0;
    int count = 10;
    for (int i = 0; i < count; i++) {
        s.record(i);
        sum += i;
    }
    // prior to any time passing
    double elapsedSecs = (config.timeWindowMs() * (config.samples() - 1)) / 1000.0;
    assertEquals(String.format("Occurrences(0...%d) = %f", count, count / elapsedSecs), count / elapsedSecs, metrics.metrics().get(metrics.metricName("test.occurences", "grp1")).value(), EPS);
    // pretend 2 seconds passed...
    long sleepTimeMs = 2;
    time.sleep(sleepTimeMs * 1000);
    elapsedSecs += sleepTimeMs;
    assertEquals("s2 reflects the constant value", 5.0, metrics.metrics().get(metrics.metricName("s2.total", "grp1")).value(), EPS);
    assertEquals("Avg(0...9) = 4.5", 4.5, metrics.metrics().get(metrics.metricName("test.avg", "grp1")).value(), EPS);
    assertEquals("Max(0...9) = 9", count - 1, metrics.metrics().get(metrics.metricName("test.max", "grp1")).value(), EPS);
    assertEquals("Min(0...9) = 0", 0.0, metrics.metrics().get(metrics.metricName("test.min", "grp1")).value(), EPS);
    assertEquals("Rate(0...9) = 1.40625", sum / elapsedSecs, metrics.metrics().get(metrics.metricName("test.rate", "grp1")).value(), EPS);
    assertEquals(String.format("Occurrences(0...%d) = %f", count, count / elapsedSecs), count / elapsedSecs, metrics.metrics().get(metrics.metricName("test.occurences", "grp1")).value(), EPS);
    assertEquals("Count(0...9) = 10", (double) count, metrics.metrics().get(metrics.metricName("test.count", "grp1")).value(), EPS);
}
Also used : Percentile(org.apache.kafka.common.metrics.stats.Percentile) Max(org.apache.kafka.common.metrics.stats.Max) Rate(org.apache.kafka.common.metrics.stats.Rate) SimpleRate(org.apache.kafka.common.metrics.stats.SimpleRate) Count(org.apache.kafka.common.metrics.stats.Count) Percentiles(org.apache.kafka.common.metrics.stats.Percentiles) Avg(org.apache.kafka.common.metrics.stats.Avg) Min(org.apache.kafka.common.metrics.stats.Min) Total(org.apache.kafka.common.metrics.stats.Total) Test(org.junit.Test)

Example 4 with Avg

use of org.apache.kafka.common.metrics.stats.Avg in project kafka by apache.

the class MetricsTest method testDuplicateMetricName.

@Test(expected = IllegalArgumentException.class)
public void testDuplicateMetricName() {
    metrics.sensor("test").add(metrics.metricName("test", "grp1"), new Avg());
    metrics.sensor("test2").add(metrics.metricName("test", "grp1"), new Total());
}
Also used : Avg(org.apache.kafka.common.metrics.stats.Avg) Total(org.apache.kafka.common.metrics.stats.Total) Test(org.junit.Test)

Example 5 with Avg

use of org.apache.kafka.common.metrics.stats.Avg in project kafka by apache.

the class MetricsBench method main.

public static void main(String[] args) {
    long iters = Long.parseLong(args[0]);
    Metrics metrics = new Metrics();
    try {
        Sensor parent = metrics.sensor("parent");
        Sensor child = metrics.sensor("child", parent);
        for (Sensor sensor : Arrays.asList(parent, child)) {
            sensor.add(metrics.metricName(sensor.name() + ".avg", "grp1"), new Avg());
            sensor.add(metrics.metricName(sensor.name() + ".count", "grp1"), new Count());
            sensor.add(metrics.metricName(sensor.name() + ".max", "grp1"), new Max());
            sensor.add(new Percentiles(1024, 0.0, iters, BucketSizing.CONSTANT, new Percentile(metrics.metricName(sensor.name() + ".median", "grp1"), 50.0), new Percentile(metrics.metricName(sensor.name() + ".p_99", "grp1"), 99.0)));
        }
        long start = System.nanoTime();
        for (int i = 0; i < iters; i++) parent.record(i);
        double ellapsed = (System.nanoTime() - start) / (double) iters;
        System.out.println(String.format("%.2f ns per metric recording.", ellapsed));
    } finally {
        metrics.close();
    }
}
Also used : Metrics(org.apache.kafka.common.metrics.Metrics) Percentile(org.apache.kafka.common.metrics.stats.Percentile) Avg(org.apache.kafka.common.metrics.stats.Avg) Max(org.apache.kafka.common.metrics.stats.Max) Count(org.apache.kafka.common.metrics.stats.Count) Percentiles(org.apache.kafka.common.metrics.stats.Percentiles) Sensor(org.apache.kafka.common.metrics.Sensor)

Aggregations

Avg (org.apache.kafka.common.metrics.stats.Avg)6 Max (org.apache.kafka.common.metrics.stats.Max)4 Test (org.junit.Test)4 Count (org.apache.kafka.common.metrics.stats.Count)3 Total (org.apache.kafka.common.metrics.stats.Total)3 Min (org.apache.kafka.common.metrics.stats.Min)2 Percentile (org.apache.kafka.common.metrics.stats.Percentile)2 Percentiles (org.apache.kafka.common.metrics.stats.Percentiles)2 Rate (org.apache.kafka.common.metrics.stats.Rate)2 SimpleRate (org.apache.kafka.common.metrics.stats.SimpleRate)2 Metrics (org.apache.kafka.common.metrics.Metrics)1 Sensor (org.apache.kafka.common.metrics.Sensor)1