Class PrintMetrics

java.lang.Object
io.perl.logger.impl.Metrics
io.perl.logger.impl.PrintMetrics
All Implemented Interfaces:
Print
Direct Known Subclasses:
PrometheusMetricsServer

public sealed class PrintMetrics extends Metrics implements Print permits PrometheusMetricsServer
Metric-backed results reporter that publishes values to a Micrometer CompositeMeterRegistry.

This class registers counters and gauges for common result fields (bytes, records, rates and latencies) and provides a print(double, long, long, double, double, double, long, long, long, long, long, long, long, long[], long[]) implementation that updates the registered instruments. It is primarily used as the backing implementation for Prometheus exposition.

  • Field Details

    • registry

      public final io.micrometer.core.instrument.MeterRegistry registry
      MeterRegistry registry.
  • Constructor Details

    • PrintMetrics

      public PrintMetrics(@NotNull @NotNull String header, @NotNull @org.jetbrains.annotations.NotNull double[] percentiles, Time time, @NotNull @NotNull TimeUnit latencyTimeUnit, io.micrometer.core.instrument.composite.CompositeMeterRegistry compositeRegistry)
      Constructor PrintMetrics initializing all values.
      Parameters:
      header - NotNull String
      percentiles - NotNull double[]
      time - Time
      latencyTimeUnit - NotNull TimeUnit
      compositeRegistry - CompositeMeterRegistry
  • Method Details

    • close

      public void close()
      This method Closes this registry, releasing any resources in the process. Once closed, this registry will no longer accept new meters and any publishing activity will cease.
    • print

      public final void print(double seconds, long bytes, long records, double recsPerSec, double mbPerSec, double avgLatency, long minLatency, long maxLatency, long invalid, long lowerDiscard, long higherDiscard, long slc1, long slc2, long[] percentileLatencies, long[] percentileLatencyCounts)
      Description copied from interface: Print
      Print the periodic performance results.

      Implementations should interpret the latency values according to the PerformanceLogger.getTimeUnit() provided by the configured logger. The arrays percentileLatencies and percentileLatencyCounts (if non-null) are parallel: the element at index i in percentileLatencyCounts corresponds to the latency value at index i in percentileLatencies.

      Specified by:
      print in interface Print
      Parameters:
      seconds - Reporting duration in seconds
      bytes - Number of bytes read/write in the interval
      records - Number of records processed in the interval
      recsPerSec - Records per second measured over the interval
      mbPerSec - Throughput measured in MB per second
      avgLatency - Average latency (in PerformanceLogger time unit)
      minLatency - Minimum latency (in PerformanceLogger time unit)
      maxLatency - Maximum latency (in PerformanceLogger time unit)
      invalid - Number of invalid/negative latency measurements
      lowerDiscard - Number of latencies discarded because they were below the min threshold
      higherDiscard - Number of latencies discarded because they were above the max threshold
      slc1 - Sliding Latency Coverage metric 1 (implementation-defined)
      slc2 - Sliding Latency Coverage metric 2 (implementation-defined)
      percentileLatencies - Array of percentile latency values (parallel to percentileLatencyCounts)
      percentileLatencyCounts - Array of counts for each percentile bucket; may be null