Class Collector

java.lang.Object
io.prometheus.client.Collector
Direct Known Subclasses:
BufferPoolsExports, CacheMetricsCollector, CacheMetricsCollector, ClassLoadingExports, GarbageCollectorExports, JettyStatisticsCollector, MemoryAllocationExports, MemoryPoolsExports, QueuedThreadPoolStatisticsCollector, SimpleCollector, StandardExports, ThreadExports, VersionInfoExports

public abstract class Collector extends Object
A collector for a set of metrics.

Normal users should use Gauge, Counter, Summary and Histogram.

Subclasssing Collector is for advanced uses, such as proxying metrics from another monitoring system. It is it the responsibility of subclasses to ensure they produce valid metrics.

See Also:
  • Field Details

    • NANOSECONDS_PER_SECOND

      public static final double NANOSECONDS_PER_SECOND
      Number of nanoseconds in a second.
      See Also:
    • MILLISECONDS_PER_SECOND

      public static final double MILLISECONDS_PER_SECOND
      Number of milliseconds in a second.
      See Also:
    • METRIC_NAME_RE

      private static final Pattern METRIC_NAME_RE
    • METRIC_LABEL_NAME_RE

      private static final Pattern METRIC_LABEL_NAME_RE
    • RESERVED_METRIC_LABEL_NAME_RE

      private static final Pattern RESERVED_METRIC_LABEL_NAME_RE
  • Constructor Details

    • Collector

      public Collector()
  • Method Details

    • collect

      public abstract List<Collector.MetricFamilySamples> collect()
      Return all metrics of this Collector.
    • collect

      public List<Collector.MetricFamilySamples> collect(Predicate<String> sampleNameFilter)
      Like collect(), but the result should only contain MetricFamilySamples where sampleNameFilter.test(name) is true for at least one Sample name.

      The default implementation first collects all MetricFamilySamples and then discards the ones where sampleNameFilter.test(name) returns false for all names in Collector.MetricFamilySamples.getNames(). To improve performance, collector implementations should override this method to prevent MetricFamilySamples from being collected if they will be discarded anyways. See ThreadExports for an example.

      Note that the resulting List may contain MetricFamilySamples where some Sample names return true for sampleNameFilter.test(name) but some Sample names return false. This is ok, because before we produce the output format we will call Collector.MetricFamilySamples.filter(Predicate) to strip all Samples where sampleNameFilter.test(name) returns false.

      Parameters:
      sampleNameFilter - may be null, indicating that all metrics should be collected.
    • register

      public <T extends Collector> T register()
      Register the Collector with the default registry.
    • register

      public <T extends Collector> T register(CollectorRegistry registry)
      Register the Collector with the given registry.
    • checkMetricName

      protected static void checkMetricName(String name)
      Throw an exception if the metric name is invalid.
    • sanitizeMetricName

      public static String sanitizeMetricName(String metricName)
      Sanitize metric name
    • checkMetricLabelName

      protected static void checkMetricLabelName(String name)
      Throw an exception if the metric label name is invalid.
    • doubleToGoString

      public static String doubleToGoString(double d)
      Convert a double to its string representation in Go.