mirror of
https://github.com/digital-asset/daml.git
synced 2024-09-20 01:07:18 +03:00
parent
17d82bf076
commit
5c913106fc
@ -57,6 +57,7 @@ compile_deps = [
|
||||
"@maven//:io_dropwizard_metrics_metrics_core",
|
||||
"@maven//:io_dropwizard_metrics_metrics_graphite",
|
||||
"@maven//:io_dropwizard_metrics_metrics_jmx",
|
||||
"@maven//:io_dropwizard_metrics_metrics_jvm",
|
||||
"@maven//:io_grpc_grpc_netty",
|
||||
"@maven//:io_grpc_grpc_services",
|
||||
"@maven//:io_netty_netty_common",
|
||||
|
@ -9,6 +9,13 @@ import java.util.concurrent.TimeUnit
|
||||
import com.codahale.metrics.Slf4jReporter.LoggingLevel
|
||||
import com.codahale.metrics.graphite.{Graphite, GraphiteReporter}
|
||||
import com.codahale.metrics.jmx.JmxReporter
|
||||
import com.codahale.metrics.jvm.{
|
||||
ClassLoadingGaugeSet,
|
||||
GarbageCollectorMetricSet,
|
||||
JvmAttributeGaugeSet,
|
||||
MemoryUsageGaugeSet,
|
||||
ThreadStatesGaugeSet
|
||||
}
|
||||
import com.codahale.metrics.{
|
||||
ConsoleReporter,
|
||||
CsvReporter,
|
||||
@ -22,11 +29,15 @@ import com.digitalasset.resources.{Resource, ResourceOwner}
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
/** Manages metrics and reporters.
|
||||
*
|
||||
* Creates the [[MetricRegistry]].
|
||||
*
|
||||
* All out-of-the-box JVM metrics are added to the registry.
|
||||
*
|
||||
* Creates at least two reporters:
|
||||
*
|
||||
* - A JmxReporter, which exposes metrics over JMX
|
||||
* - An Slf4jReporter, which logs metrics on shutdown at DEBUG level
|
||||
* - a [[JmxReporter]], which exposes metrics over JMX, and
|
||||
* - an [[Slf4jReporter]], which logs metrics on shutdown at DEBUG level.
|
||||
*
|
||||
* Also optionally creates the reporter specified in the constructor.
|
||||
*
|
||||
@ -40,6 +51,11 @@ final class MetricsReporting(
|
||||
) extends ResourceOwner[MetricRegistry] {
|
||||
def acquire()(implicit executionContext: ExecutionContext): Resource[MetricRegistry] = {
|
||||
val registry = new MetricRegistry
|
||||
registry.registerAll("jvm.class_loader", new ClassLoadingGaugeSet)
|
||||
registry.registerAll("jvm.garbage_collector", new GarbageCollectorMetricSet)
|
||||
registry.registerAll("jvm.attributes", new JvmAttributeGaugeSet)
|
||||
registry.registerAll("jvm.memory_usage", new MemoryUsageGaugeSet)
|
||||
registry.registerAll("jvm.thread_states", new ThreadStatesGaugeSet)
|
||||
for {
|
||||
slf4JReporter <- acquire(newSlf4jReporter(registry))
|
||||
_ <- acquire(newJmxReporter(registry))
|
||||
@ -51,9 +67,7 @@ final class MetricsReporting(
|
||||
// Trigger a report to the SLF4J logger on shutdown.
|
||||
_ <- Resource(Future.successful(slf4JReporter))(reporter =>
|
||||
Future.successful(reporter.report()))
|
||||
} yield {
|
||||
registry
|
||||
}
|
||||
} yield registry
|
||||
}
|
||||
|
||||
private def newReporter(reporter: MetricsReporter, registry: MetricRegistry)(
|
||||
|
Loading…
Reference in New Issue
Block a user