1 /***********************************************************************
2  * Copyright (c) 2013-2024 Commonwealth Computer Research, Inc.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Apache License, Version 2.0
5  * which accompanies this distribution and is available at
6  * http://www.opensource.org/licenses/apache2.0.php.
7  ***********************************************************************/
8 
9 package org.locationtech.geomesa.metrics.prometheus
10 
11 import com.codahale.metrics._
12 import com.typesafe.config.{Config, ConfigFactory}
13 import io.prometheus.client.Collector.MetricFamilySamples
14 import io.prometheus.client.CollectorRegistry
15 import io.prometheus.client.dropwizard.DropwizardExports
16 import io.prometheus.client.dropwizard.samplebuilder.{DefaultSampleBuilder, SampleBuilder}
17 import io.prometheus.client.exporter.{HTTPServer, PushGateway}
18 import org.locationtech.geomesa.metrics.core.ReporterFactory
19 import org.locationtech.geomesa.utils.io.CloseWithLogging
20 import pureconfig.{ConfigReader, ConfigSource}
21 
22 import java.net.URL
23 import java.util.Locale
24 import java.util.concurrent.TimeUnit
25 
26 class PrometheusReporterFactory extends ReporterFactory {
27 
28   import PrometheusReporterFactory._
29 
30   override def apply(
31       conf: Config,
32       registry: MetricRegistry,
33       rates: TimeUnit,
34       durations: TimeUnit): Option[ScheduledReporter] = {
35     val typ = if (conf.hasPath("type")) { Option(conf.getString("type")).map(_.toLowerCase(Locale.US)) } else { None }
36     typ match {
37       case Some("prometheus") =>
38         val config = ConfigSource.fromConfig(conf.withFallback(Defaults)).loadOrThrow[PrometheusConfig]
39         Some(new PrometheusReporter(registry, config.suffix, config.port))
40 
41       case Some("prometheus-pushgateway") =>
42         val config = ConfigSource.fromConfig(conf.withFallback(Defaults)).loadOrThrow[PrometheusPushgatewayConfig]
43         Some(new PushgatewayReporter(registry, config.suffix, config.gateway, config.jobName))
44 
45       case _ =>
46         None
47     }
48   }
49 }
50 
51 object PrometheusReporterFactory {
52 
53   import pureconfig.generic.semiauto._
54 
55   private val Defaults = ConfigFactory.parseResourcesAnySyntax("prometheus-defaults").resolve()
56 
57   case class PrometheusConfig(port: Int, suffix: Option[String])
58   case class PrometheusPushgatewayConfig(gateway: URL, jobName: String, suffix: Option[String])
59 
60   implicit val PrometheusConfigReader: ConfigReader[PrometheusConfig] = deriveReader[PrometheusConfig]
61   implicit val PrometheusPushgatewayConfigReader: ConfigReader[PrometheusPushgatewayConfig] =
62     deriveReader[PrometheusPushgatewayConfig]
63 
64   /**
65    * Prometheus reporter
66    *
67    * @param registry registry
68    * @param suffix metrics suffix
69    * @param port http server port, or zero to use an ephemeral open port
70    */
71   class PrometheusReporter(registry: MetricRegistry, suffix: Option[String], port: Int)
72       extends BasePrometheusReporter(registry, CollectorRegistry.defaultRegistry, suffix) {
73 
74     private val server = new HTTPServer.Builder().withPort(port).build()
75 
76     def getPort: Int = server.getPort
77 
78     override def close(): Unit = {
79       CloseWithLogging(server)
80       super.close()
81     }
82   }
83 
84   /**
85    * Pushgateway reporter
86    *
87    * Note: we use a new collector registry, as generally with pushgateway you don't want to expose things
88    * from the default registry like memory, etc
89    *
90    * @param registry registry
91    * @param suffix metrics suffix
92    * @param gateway pushgateway url
93    * @param jobName pushgateway job name
94    */
95   class PushgatewayReporter(registry: MetricRegistry, suffix: Option[String], gateway: URL, jobName: String)
96       extends BasePrometheusReporter(registry, new CollectorRegistry(), suffix) {
97     override def close(): Unit = {
98       try { new PushGateway(gateway).pushAdd(collectorRegistry, jobName) } finally {
99         super.close()
100       }
101     }
102   }
103 
104   /**
105    * Placeholder reporter that doesn't report any metrics, but handles the lifecycle of the prometheus
106    * pusher or server
107    *
108    * @param registry registry
109    * @param collectorRegistry prometheus registry
110    * @param suffix metrics suffix
111    */
112   class BasePrometheusReporter(
113       registry: MetricRegistry,
114       protected val collectorRegistry: CollectorRegistry,
115       suffix: Option[String]
116     ) extends ScheduledReporter(registry, "prometheus", MetricFilter.ALL, TimeUnit.MILLISECONDS, TimeUnit.MILLISECONDS) {
117 
118     private val sampler = suffix match {
119       case None => new DefaultSampleBuilder()
120       case Some(s) => new SuffixSampleBuilder(s)
121     }
122     new DropwizardExports(registry, sampler).register(collectorRegistry)
123 
124     // since prometheus scrapes metrics, we don't have to report them here
125 
126     override def start(initialDelay: Long, period: Long, unit: TimeUnit): Unit = {}
127 
128     override def report(
129         gauges: java.util.SortedMap[String, Gauge[_]],
130         counters: java.util.SortedMap[String, Counter],
131         histograms: java.util.SortedMap[String, Histogram],
132         meters: java.util.SortedMap[String, Meter],
133         timers: java.util.SortedMap[String, Timer]): Unit = {}
134   }
135 
136   /**
137    * Adds a suffix to each metric
138    *
139    * @param suffix suffix
140    */
141   class SuffixSampleBuilder(suffix: String) extends SampleBuilder {
142 
143     private val builder = new DefaultSampleBuilder()
144 
145     override def createSample(
146         dropwizardName: String,
147         nameSuffix: String,
148         additionalLabelNames: java.util.List[String],
149         additionalLabelValues: java.util.List[String],
150         value: Double): MetricFamilySamples.Sample = {
151       builder.createSample(dropwizardName, suffix, additionalLabelNames, additionalLabelValues, value)
152     }
153   }
154 }
Line Stmt Id Pos Tree Symbol Tests Code
35 1 1433 - 1453 Apply com.typesafe.config.Config.hasPath conf.hasPath("type")
35 2 1464 - 1486 Apply com.typesafe.config.Config.getString conf.getString("type")
35 3 1506 - 1515 Select java.util.Locale.US java.util.Locale.US
35 4 1492 - 1516 Apply java.lang.String.toLowerCase x$1.toLowerCase(java.util.Locale.US)
35 5 1457 - 1517 Apply scala.Option.map scala.Option.apply[String](conf.getString("type")).map[String](((x$1: String) => x$1.toLowerCase(java.util.Locale.US)))
35 6 1457 - 1517 Block scala.Option.map scala.Option.apply[String](conf.getString("type")).map[String](((x$1: String) => x$1.toLowerCase(java.util.Locale.US)))
35 7 1527 - 1531 Select scala.None scala.None
35 8 1527 - 1531 Block scala.None scala.None
37 17 1580 - 1761 Block <nosymbol> { val config: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig = pureconfig.ConfigSource.fromConfig(conf.withFallback(PrometheusReporterFactory.Defaults)).loadOrThrow[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]((ClassTag.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig](classOf[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory$$PrometheusConfig]): scala.reflect.ClassTag[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]), PrometheusReporterFactory.PrometheusConfigReader); scala.Some.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusReporter](new PrometheusReporterFactory.PrometheusReporter(registry, config.suffix, config.port)) }
38 9 1646 - 1654 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.Defaults PrometheusReporterFactory.Defaults
38 10 1628 - 1655 Apply com.typesafe.config.Config.withFallback conf.withFallback(PrometheusReporterFactory.Defaults)
38 11 1668 - 1668 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfigReader PrometheusReporterFactory.PrometheusConfigReader
38 12 1604 - 1686 ApplyToImplicitArgs pureconfig.ConfigSource.loadOrThrow pureconfig.ConfigSource.fromConfig(conf.withFallback(PrometheusReporterFactory.Defaults)).loadOrThrow[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]((ClassTag.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig](classOf[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory$$PrometheusConfig]): scala.reflect.ClassTag[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]), PrometheusReporterFactory.PrometheusConfigReader)
39 13 1733 - 1746 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig.suffix config.suffix
39 14 1748 - 1759 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig.port config.port
39 15 1700 - 1760 Apply org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusReporter.<init> new PrometheusReporterFactory.PrometheusReporter(registry, config.suffix, config.port)
39 16 1695 - 1761 Apply scala.Some.apply scala.Some.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusReporter](new PrometheusReporterFactory.PrometheusReporter(registry, config.suffix, config.port))
41 27 1805 - 2017 Block <nosymbol> { val config: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig = pureconfig.ConfigSource.fromConfig(conf.withFallback(PrometheusReporterFactory.Defaults)).loadOrThrow[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]((ClassTag.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig](classOf[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory$$PrometheusPushgatewayConfig]): scala.reflect.ClassTag[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]), PrometheusReporterFactory.PrometheusPushgatewayConfigReader); scala.Some.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PushgatewayReporter](new PrometheusReporterFactory.PushgatewayReporter(registry, config.suffix, config.gateway, config.jobName)) }
42 18 1871 - 1879 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.Defaults PrometheusReporterFactory.Defaults
42 19 1853 - 1880 Apply com.typesafe.config.Config.withFallback conf.withFallback(PrometheusReporterFactory.Defaults)
42 20 1893 - 1893 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfigReader PrometheusReporterFactory.PrometheusPushgatewayConfigReader
42 21 1829 - 1922 ApplyToImplicitArgs pureconfig.ConfigSource.loadOrThrow pureconfig.ConfigSource.fromConfig(conf.withFallback(PrometheusReporterFactory.Defaults)).loadOrThrow[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]((ClassTag.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig](classOf[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory$$PrometheusPushgatewayConfig]): scala.reflect.ClassTag[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]), PrometheusReporterFactory.PrometheusPushgatewayConfigReader)
43 22 1970 - 1983 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig.suffix config.suffix
43 23 1985 - 1999 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig.gateway config.gateway
43 24 2001 - 2015 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig.jobName config.jobName
43 25 1936 - 2016 Apply org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PushgatewayReporter.<init> new PrometheusReporterFactory.PushgatewayReporter(registry, config.suffix, config.gateway, config.jobName)
43 26 1931 - 2017 Apply scala.Some.apply scala.Some.apply[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PushgatewayReporter](new PrometheusReporterFactory.PushgatewayReporter(registry, config.suffix, config.gateway, config.jobName))
46 28 2043 - 2047 Select scala.None scala.None
46 29 2043 - 2047 Block scala.None scala.None
55 30 2162 - 2232 Apply com.typesafe.config.Config.resolve com.typesafe.config.ConfigFactory.parseResourcesAnySyntax("prometheus-defaults").resolve()
60 31 2468 - 2498 ApplyToImplicitArgs pureconfig.generic.semiauto.deriveReader pureconfig.generic.semiauto.deriveReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]({ val inst$macro$28: pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig] = { final class anon$lazy$macro$27 extends AnyRef with Serializable { def <init>(): anon$lazy$macro$27 = { anon$lazy$macro$27.super.<init>(); () }; <stable> <accessor> lazy val inst$macro$23: pureconfig.ConfigReader[Int] = pureconfig.this.ConfigReader.intConfigReader.asInstanceOf[pureconfig.ConfigReader[Int]]; <stable> <accessor> lazy val inst$macro$25: pureconfig.ConfigReader[Option[String]] = pureconfig.this.ConfigReader.optionReader[String](pureconfig.this.ConfigReader.stringConfigReader).asInstanceOf[pureconfig.ConfigReader[Option[String]]]; <stable> <accessor> lazy val inst$macro$26: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.HNil,shapeless.HNil] = generic.this.MapShapedReader.labelledHNilReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig](generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.HNil,shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$24: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil] = generic.this.MapShapedReader.labelledHConsReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, Symbol @@ String("suffix"), Option[String], shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, shapeless.HNil](Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("suffix")]](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("suffix")]]), shapeless.Lazy.apply[pureconfig.ConfigReader[Option[String]]](anon$lazy$macro$27.this.inst$macro$25), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.HNil,shapeless.HNil]](anon$lazy$macro$27.this.inst$macro$26), generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$22: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Int] :: Option[Option[String]] :: shapeless.HNil] = generic.this.MapShapedReader.labelledHConsReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, Symbol @@ String("port"), Int, shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, Option[Option[String]] :: shapeless.HNil](Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("port")]](scala.Symbol.apply("port").asInstanceOf[Symbol @@ String("port")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("port")]]), shapeless.Lazy.apply[pureconfig.ConfigReader[Int]](anon$lazy$macro$27.this.inst$macro$23), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil]](anon$lazy$macro$27.this.inst$macro$24), generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Int] :: Option[Option[String]] :: shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$1: pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig] = generic.this.DerivedConfigReader.productReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, Option[Int] :: Option[Option[String]] :: shapeless.HNil](shapeless.this.LabelledGeneric.materializeProduct[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, (Symbol @@ String("port")) :: (Symbol @@ String("suffix")) :: shapeless.HNil, Int :: Option[String] :: shapeless.HNil, shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](DefaultSymbolicLabelling.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, (Symbol @@ String("port")) :: (Symbol @@ String("suffix")) :: shapeless.HNil](::.apply[Symbol @@ String("port"), (Symbol @@ String("suffix")) :: shapeless.HNil.type](scala.Symbol.apply("port").asInstanceOf[Symbol @@ String("port")], ::.apply[Symbol @@ String("suffix"), shapeless.HNil.type](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")], HNil))), Generic.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, Int :: Option[String] :: shapeless.HNil](((x0$7: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig) => x0$7 match { case (port: Int, suffix: Option[String])org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig((port$macro$16 @ _), (suffix$macro$17 @ _)) => ::.apply[Int, Option[String] :: shapeless.HNil.type](port$macro$16, ::.apply[Option[String], shapeless.HNil.type](suffix$macro$17, HNil)).asInstanceOf[Int :: Option[String] :: shapeless.HNil] }), ((x0$8: Int :: Option[String] :: shapeless.HNil) => x0$8 match { case (head: Int, tail: Option[String] :: shapeless.HNil)Int :: Option[String] :: shapeless.HNil((port$macro$14 @ _), (head: Option[String], tail: shapeless.HNil)Option[String] :: shapeless.HNil((suffix$macro$15 @ _), HNil)) => PrometheusReporterFactory.this.PrometheusConfig.apply(port$macro$14, suffix$macro$15) })), hlist.this.ZipWithKeys.hconsZipWithKeys[Symbol @@ String("port"), Int, (Symbol @@ String("suffix")) :: shapeless.HNil, Option[String] :: shapeless.HNil, shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](hlist.this.ZipWithKeys.hconsZipWithKeys[Symbol @@ String("suffix"), Option[String], shapeless.HNil, shapeless.HNil, shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](hlist.this.ZipWithKeys.hnilZipWithKeys, Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("suffix")]](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("suffix")]])), Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("port")]](scala.Symbol.apply("port").asInstanceOf[Symbol @@ String("port")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("port")]])), scala.Predef.$conforms[shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out]), Default.this.AsOptions.asOption[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, Int :: Option[String] :: shapeless.HNil, None.type :: None.type :: shapeless.HNil, Option[Int] :: Option[Option[String]] :: shapeless.HNil](shapeless.Default.mkDefault[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, None.type :: None.type :: shapeless.HNil](::.apply[None.type, None.type :: shapeless.HNil.type](scala.None, ::.apply[None.type, shapeless.HNil.type](scala.None, HNil))), Generic.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig, Int :: Option[String] :: shapeless.HNil](((x0$9: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig) => x0$9 match { case (port: Int, suffix: Option[String])org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig((port$macro$20 @ _), (suffix$macro$21 @ _)) => ::.apply[Int, Option[String] :: shapeless.HNil.type](port$macro$20, ::.apply[Option[String], shapeless.HNil.type](suffix$macro$21, HNil)).asInstanceOf[Int :: Option[String] :: shapeless.HNil] }), ((x0$10: Int :: Option[String] :: shapeless.HNil) => x0$10 match { case (head: Int, tail: Option[String] :: shapeless.HNil)Int :: Option[String] :: shapeless.HNil((port$macro$18 @ _), (head: Option[String], tail: shapeless.HNil)Option[String] :: shapeless.HNil((suffix$macro$19 @ _), HNil)) => PrometheusReporterFactory.this.PrometheusConfig.apply(port$macro$18, suffix$macro$19) })), AsOptions.this.Helper.hconsNoneHelper[Int, None.type :: shapeless.HNil, Option[String] :: shapeless.HNil, Option[Option[String]] :: shapeless.HNil](AsOptions.this.Helper.hconsNoneHelper[Option[String], shapeless.HNil, shapeless.HNil, shapeless.HNil](AsOptions.this.Helper.hnilHelper))), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig,shapeless.labelled.FieldType[Symbol @@ String("port"),Int] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Int] :: Option[Option[String]] :: shapeless.HNil]](anon$lazy$macro$27.this.inst$macro$22)).asInstanceOf[pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]] }; new anon$lazy$macro$27().inst$macro$1 }; shapeless.Lazy.apply[pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusConfig]](inst$macro$28) })
62 32 2597 - 2638 ApplyToImplicitArgs pureconfig.generic.semiauto.deriveReader pureconfig.generic.semiauto.deriveReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]({ val inst$macro$68: pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig] = { final class anon$lazy$macro$67 extends AnyRef with Serializable { def <init>(): anon$lazy$macro$67 = { anon$lazy$macro$67.super.<init>(); () }; <stable> <accessor> lazy val inst$macro$61: pureconfig.ConfigReader[java.net.URL] = pureconfig.this.ConfigReader.urlConfigReader.asInstanceOf[pureconfig.ConfigReader[java.net.URL]]; <stable> <accessor> lazy val inst$macro$63: pureconfig.ConfigReader[String] = pureconfig.this.ConfigReader.stringConfigReader.asInstanceOf[pureconfig.ConfigReader[String]]; <stable> <accessor> lazy val inst$macro$65: pureconfig.ConfigReader[Option[String]] = pureconfig.this.ConfigReader.optionReader[String](pureconfig.this.ConfigReader.stringConfigReader).asInstanceOf[pureconfig.ConfigReader[Option[String]]]; <stable> <accessor> lazy val inst$macro$66: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.HNil,shapeless.HNil] = generic.this.MapShapedReader.labelledHNilReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig](generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.HNil,shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$64: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil] = generic.this.MapShapedReader.labelledHConsReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, Symbol @@ String("suffix"), Option[String], shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, shapeless.HNil](Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("suffix")]](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("suffix")]]), shapeless.Lazy.apply[pureconfig.ConfigReader[Option[String]]](anon$lazy$macro$67.this.inst$macro$65), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.HNil,shapeless.HNil]](anon$lazy$macro$67.this.inst$macro$66), generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$62: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[String] :: Option[Option[String]] :: shapeless.HNil] = generic.this.MapShapedReader.labelledHConsReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, Symbol @@ String("jobName"), String, shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, Option[Option[String]] :: shapeless.HNil](Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("jobName")]](scala.Symbol.apply("jobName").asInstanceOf[Symbol @@ String("jobName")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("jobName")]]), shapeless.Lazy.apply[pureconfig.ConfigReader[String]](anon$lazy$macro$67.this.inst$macro$63), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[Option[String]] :: shapeless.HNil]](anon$lazy$macro$67.this.inst$macro$64), generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[String] :: Option[Option[String]] :: shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$60: pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[java.net.URL] :: Option[String] :: Option[Option[String]] :: shapeless.HNil] = generic.this.MapShapedReader.labelledHConsReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, Symbol @@ String("gateway"), java.net.URL, shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, Option[String] :: Option[Option[String]] :: shapeless.HNil](Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("gateway")]](scala.Symbol.apply("gateway").asInstanceOf[Symbol @@ String("gateway")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("gateway")]]), shapeless.Lazy.apply[pureconfig.ConfigReader[java.net.URL]](anon$lazy$macro$67.this.inst$macro$61), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[String] :: Option[Option[String]] :: shapeless.HNil]](anon$lazy$macro$67.this.inst$macro$62), generic.this.ProductHint.default[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]).asInstanceOf[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[java.net.URL] :: Option[String] :: Option[Option[String]] :: shapeless.HNil]]; <stable> <accessor> lazy val inst$macro$29: pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig] = generic.this.DerivedConfigReader.productReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out, Option[java.net.URL] :: Option[String] :: Option[Option[String]] :: shapeless.HNil](shapeless.this.LabelledGeneric.materializeProduct[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, (Symbol @@ String("gateway")) :: (Symbol @@ String("jobName")) :: (Symbol @@ String("suffix")) :: shapeless.HNil, java.net.URL :: String :: Option[String] :: shapeless.HNil, shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](DefaultSymbolicLabelling.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, (Symbol @@ String("gateway")) :: (Symbol @@ String("jobName")) :: (Symbol @@ String("suffix")) :: shapeless.HNil](::.apply[Symbol @@ String("gateway"), (Symbol @@ String("jobName")) :: (Symbol @@ String("suffix")) :: shapeless.HNil.type](scala.Symbol.apply("gateway").asInstanceOf[Symbol @@ String("gateway")], ::.apply[Symbol @@ String("jobName"), (Symbol @@ String("suffix")) :: shapeless.HNil.type](scala.Symbol.apply("jobName").asInstanceOf[Symbol @@ String("jobName")], ::.apply[Symbol @@ String("suffix"), shapeless.HNil.type](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")], HNil)))), Generic.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, java.net.URL :: String :: Option[String] :: shapeless.HNil](((x0$17: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig) => x0$17 match { case (gateway: java.net.URL, jobName: String, suffix: Option[String])org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig((gateway$macro$51 @ _), (jobName$macro$52 @ _), (suffix$macro$53 @ _)) => ::.apply[java.net.URL, String :: Option[String] :: shapeless.HNil.type](gateway$macro$51, ::.apply[String, Option[String] :: shapeless.HNil.type](jobName$macro$52, ::.apply[Option[String], shapeless.HNil.type](suffix$macro$53, HNil))).asInstanceOf[java.net.URL :: String :: Option[String] :: shapeless.HNil] }), ((x0$18: java.net.URL :: String :: Option[String] :: shapeless.HNil) => x0$18 match { case (head: java.net.URL, tail: String :: Option[String] :: shapeless.HNil)java.net.URL :: String :: Option[String] :: shapeless.HNil((gateway$macro$48 @ _), (head: String, tail: Option[String] :: shapeless.HNil)String :: Option[String] :: shapeless.HNil((jobName$macro$49 @ _), (head: Option[String], tail: shapeless.HNil)Option[String] :: shapeless.HNil((suffix$macro$50 @ _), HNil))) => PrometheusReporterFactory.this.PrometheusPushgatewayConfig.apply(gateway$macro$48, jobName$macro$49, suffix$macro$50) })), hlist.this.ZipWithKeys.hconsZipWithKeys[Symbol @@ String("gateway"), java.net.URL, (Symbol @@ String("jobName")) :: (Symbol @@ String("suffix")) :: shapeless.HNil, String :: Option[String] :: shapeless.HNil, shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](hlist.this.ZipWithKeys.hconsZipWithKeys[Symbol @@ String("jobName"), String, (Symbol @@ String("suffix")) :: shapeless.HNil, Option[String] :: shapeless.HNil, shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](hlist.this.ZipWithKeys.hconsZipWithKeys[Symbol @@ String("suffix"), Option[String], shapeless.HNil, shapeless.HNil, shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out](hlist.this.ZipWithKeys.hnilZipWithKeys, Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("suffix")]](scala.Symbol.apply("suffix").asInstanceOf[Symbol @@ String("suffix")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("suffix")]])), Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("jobName")]](scala.Symbol.apply("jobName").asInstanceOf[Symbol @@ String("jobName")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("jobName")]])), Witness.mkWitness[Symbol with shapeless.tag.Tagged[String("gateway")]](scala.Symbol.apply("gateway").asInstanceOf[Symbol @@ String("gateway")].asInstanceOf[Symbol with shapeless.tag.Tagged[String("gateway")]])), scala.Predef.$conforms[shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out]), Default.this.AsOptions.asOption[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, java.net.URL :: String :: Option[String] :: shapeless.HNil, None.type :: None.type :: None.type :: shapeless.HNil, Option[java.net.URL] :: Option[String] :: Option[Option[String]] :: shapeless.HNil](shapeless.Default.mkDefault[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, None.type :: None.type :: None.type :: shapeless.HNil](::.apply[None.type, None.type :: None.type :: shapeless.HNil.type](scala.None, ::.apply[None.type, None.type :: shapeless.HNil.type](scala.None, ::.apply[None.type, shapeless.HNil.type](scala.None, HNil)))), Generic.instance[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig, java.net.URL :: String :: Option[String] :: shapeless.HNil](((x0$19: org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig) => x0$19 match { case (gateway: java.net.URL, jobName: String, suffix: Option[String])org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig((gateway$macro$57 @ _), (jobName$macro$58 @ _), (suffix$macro$59 @ _)) => ::.apply[java.net.URL, String :: Option[String] :: shapeless.HNil.type](gateway$macro$57, ::.apply[String, Option[String] :: shapeless.HNil.type](jobName$macro$58, ::.apply[Option[String], shapeless.HNil.type](suffix$macro$59, HNil))).asInstanceOf[java.net.URL :: String :: Option[String] :: shapeless.HNil] }), ((x0$20: java.net.URL :: String :: Option[String] :: shapeless.HNil) => x0$20 match { case (head: java.net.URL, tail: String :: Option[String] :: shapeless.HNil)java.net.URL :: String :: Option[String] :: shapeless.HNil((gateway$macro$54 @ _), (head: String, tail: Option[String] :: shapeless.HNil)String :: Option[String] :: shapeless.HNil((jobName$macro$55 @ _), (head: Option[String], tail: shapeless.HNil)Option[String] :: shapeless.HNil((suffix$macro$56 @ _), HNil))) => PrometheusReporterFactory.this.PrometheusPushgatewayConfig.apply(gateway$macro$54, jobName$macro$55, suffix$macro$56) })), AsOptions.this.Helper.hconsNoneHelper[java.net.URL, None.type :: None.type :: shapeless.HNil, String :: Option[String] :: shapeless.HNil, Option[String] :: Option[Option[String]] :: shapeless.HNil](AsOptions.this.Helper.hconsNoneHelper[String, None.type :: shapeless.HNil, Option[String] :: shapeless.HNil, Option[Option[String]] :: shapeless.HNil](AsOptions.this.Helper.hconsNoneHelper[Option[String], shapeless.HNil, shapeless.HNil, shapeless.HNil](AsOptions.this.Helper.hnilHelper)))), shapeless.Lazy.apply[pureconfig.generic.MapShapedReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig,shapeless.labelled.FieldType[Symbol @@ String("gateway"),java.net.URL] :: shapeless.labelled.FieldType[Symbol @@ String("jobName"),String] :: shapeless.labelled.FieldType[Symbol @@ String("suffix"),Option[String]] :: shapeless.ops.hlist.ZipWithKeys.hnilZipWithKeys.Out,Option[java.net.URL] :: Option[String] :: Option[Option[String]] :: shapeless.HNil]](anon$lazy$macro$67.this.inst$macro$60)).asInstanceOf[pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]] }; new anon$lazy$macro$67().inst$macro$29 }; shapeless.Lazy.apply[pureconfig.generic.DerivedConfigReader[org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusPushgatewayConfig]](inst$macro$68) })
74 33 3025 - 3072 Apply io.prometheus.client.exporter.HTTPServer.Builder.build new io.prometheus.client.exporter.HTTPServer.Builder().withPort(PrometheusReporter.this.port).build()
76 34 3097 - 3111 Apply io.prometheus.client.exporter.HTTPServer.getPort PrometheusReporter.this.server.getPort()
79 35 3171 - 3177 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PrometheusReporter.server PrometheusReporter.this.server
79 36 3170 - 3170 Select org.locationtech.geomesa.utils.io.IsCloseableImplicits.closeableIsCloseable io.this.IsCloseable.closeableIsCloseable
79 37 3154 - 3178 ApplyToImplicitArgs org.locationtech.geomesa.utils.io.CloseWithLogging.apply org.locationtech.geomesa.utils.io.`package`.CloseWithLogging.apply[io.prometheus.client.exporter.HTTPServer](PrometheusReporter.this.server)(io.this.IsCloseable.closeableIsCloseable)
80 38 3185 - 3198 Apply com.codahale.metrics.ScheduledReporter.close PrometheusReporter.super.close()
98 39 3807 - 3814 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PushgatewayReporter.gateway PushgatewayReporter.this.gateway
98 40 3824 - 3841 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.BasePrometheusReporter.collectorRegistry PushgatewayReporter.this.collectorRegistry
98 41 3843 - 3850 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.PushgatewayReporter.jobName PushgatewayReporter.this.jobName
98 42 3791 - 3851 Apply io.prometheus.client.exporter.PushGateway.pushAdd new io.prometheus.client.exporter.PushGateway(PushgatewayReporter.this.gateway).pushAdd(PushgatewayReporter.this.collectorRegistry, PushgatewayReporter.this.jobName)
98 43 3791 - 3851 Block io.prometheus.client.exporter.PushGateway.pushAdd new io.prometheus.client.exporter.PushGateway(PushgatewayReporter.this.gateway).pushAdd(PushgatewayReporter.this.collectorRegistry, PushgatewayReporter.this.jobName)
99 44 3872 - 3885 Apply com.codahale.metrics.ScheduledReporter.close PushgatewayReporter.super.close()
99 45 3872 - 3885 Block com.codahale.metrics.ScheduledReporter.close PushgatewayReporter.super.close()
118 46 4461 - 4467 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.BasePrometheusReporter.suffix BasePrometheusReporter.this.suffix
119 47 4495 - 4521 Apply io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder.<init> new io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder()
119 48 4495 - 4521 Block io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder.<init> new io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder()
120 49 4544 - 4570 Apply org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.SuffixSampleBuilder.<init> new PrometheusReporterFactory.this.SuffixSampleBuilder(s)
120 50 4544 - 4570 Block org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.SuffixSampleBuilder.<init> new PrometheusReporterFactory.this.SuffixSampleBuilder(s)
122 51 4603 - 4611 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.BasePrometheusReporter.registry BasePrometheusReporter.this.registry
122 52 4613 - 4620 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.BasePrometheusReporter.sampler BasePrometheusReporter.this.sampler
122 53 4631 - 4648 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.BasePrometheusReporter.collectorRegistry BasePrometheusReporter.this.collectorRegistry
122 54 4581 - 4649 Apply io.prometheus.client.Collector.register new io.prometheus.client.dropwizard.DropwizardExports(BasePrometheusReporter.this.registry, BasePrometheusReporter.this.sampler).register[Nothing](BasePrometheusReporter.this.collectorRegistry)
126 55 4808 - 4810 Literal <nosymbol> ()
133 56 5120 - 5122 Literal <nosymbol> ()
143 57 5300 - 5326 Apply io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder.<init> new io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder()
151 58 5626 - 5632 Select org.locationtech.geomesa.metrics.prometheus.PrometheusReporterFactory.SuffixSampleBuilder.suffix SuffixSampleBuilder.this.suffix
151 59 5589 - 5685 Apply io.prometheus.client.dropwizard.samplebuilder.DefaultSampleBuilder.createSample SuffixSampleBuilder.this.builder.createSample(dropwizardName, SuffixSampleBuilder.this.suffix, additionalLabelNames, additionalLabelValues, value)