aboutsummaryrefslogtreecommitdiff
path: root/kamon-system-metrics
diff options
context:
space:
mode:
authorDiego <diegolparra@gmail.com>2014-11-21 14:54:50 -0300
committerDiego <diegolparra@gmail.com>2014-11-21 14:54:50 -0300
commitbbd49fd9e94a20d38b3ef95bef4dba15c74ea3be (patch)
tree3404c0a9c0a8ca42c489dc480efb3852da405ae0 /kamon-system-metrics
parent985f26cbb28f117a9a3ada795005121d6149f5f3 (diff)
downloadKamon-bbd49fd9e94a20d38b3ef95bef4dba15c74ea3be.tar.gz
Kamon-bbd49fd9e94a20d38b3ef95bef4dba15c74ea3be.tar.bz2
Kamon-bbd49fd9e94a20d38b3ef95bef4dba15c74ea3be.zip
+ system-metrics: introduce stolen metric
Diffstat (limited to 'kamon-system-metrics')
-rw-r--r--kamon-system-metrics/src/main/resources/reference.conf4
-rw-r--r--kamon-system-metrics/src/main/scala/kamon/metrics/CPUMetrics.scala16
-rw-r--r--kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala1
-rw-r--r--kamon-system-metrics/src/test/scala/kamon/metrics/SystemMetricsSpec.scala7
4 files changed, 21 insertions, 7 deletions
diff --git a/kamon-system-metrics/src/main/resources/reference.conf b/kamon-system-metrics/src/main/resources/reference.conf
index fbdb3b89..0fab129f 100644
--- a/kamon-system-metrics/src/main/resources/reference.conf
+++ b/kamon-system-metrics/src/main/resources/reference.conf
@@ -34,6 +34,10 @@ kamon {
highest-trackable-value = 999
significant-value-digits = 2
}
+ stolen ={
+ highest-trackable-value = 999
+ significant-value-digits = 2
+ }
}
network {
diff --git a/kamon-system-metrics/src/main/scala/kamon/metrics/CPUMetrics.scala b/kamon-system-metrics/src/main/scala/kamon/metrics/CPUMetrics.scala
index ef7f225c..20789039 100644
--- a/kamon-system-metrics/src/main/scala/kamon/metrics/CPUMetrics.scala
+++ b/kamon-system-metrics/src/main/scala/kamon/metrics/CPUMetrics.scala
@@ -31,31 +31,33 @@ object CPUMetrics extends MetricGroupCategory {
case object System extends MetricIdentity { val name = "system" }
case object Wait extends MetricIdentity { val name = "wait" }
case object Idle extends MetricIdentity { val name = "idle" }
+ case object Stolen extends MetricIdentity { val name = "stolen" }
- case class CPUMetricRecorder(user: Histogram, system: Histogram, cpuWait: Histogram, idle: Histogram)
+ case class CPUMetricRecorder(user: Histogram, system: Histogram, cpuWait: Histogram, idle: Histogram, stolen: Histogram)
extends MetricGroupRecorder {
def collect(context: CollectionContext): MetricGroupSnapshot = {
- CPUMetricSnapshot(user.collect(context), system.collect(context), cpuWait.collect(context), idle.collect(context))
+ CPUMetricSnapshot(user.collect(context), system.collect(context), cpuWait.collect(context), idle.collect(context), stolen.collect(context))
}
def cleanup: Unit = {}
}
- case class CPUMetricSnapshot(user: Histogram.Snapshot, system: Histogram.Snapshot, cpuWait: Histogram.Snapshot, idle: Histogram.Snapshot)
+ case class CPUMetricSnapshot(user: Histogram.Snapshot, system: Histogram.Snapshot, cpuWait: Histogram.Snapshot, idle: Histogram.Snapshot, stolen: Histogram.Snapshot)
extends MetricGroupSnapshot {
type GroupSnapshotType = CPUMetricSnapshot
def merge(that: CPUMetricSnapshot, context: CollectionContext): GroupSnapshotType = {
- CPUMetricSnapshot(user.merge(that.user, context), system.merge(that.system, context), cpuWait.merge(that.cpuWait, context), idle.merge(that.idle, context))
+ CPUMetricSnapshot(user.merge(that.user, context), system.merge(that.system, context), cpuWait.merge(that.cpuWait, context), idle.merge(that.idle, context), stolen.merge(that.stolen, context))
}
lazy val metrics: Map[MetricIdentity, MetricSnapshot] = Map(
User -> user,
System -> system,
Wait -> cpuWait,
- Idle -> idle)
+ Idle -> idle,
+ Stolen -> stolen)
}
val Factory = CPUMetricGroupFactory
@@ -74,11 +76,13 @@ case object CPUMetricGroupFactory extends MetricGroupFactory {
val systemConfig = settings.getConfig("system")
val cpuWaitConfig = settings.getConfig("wait")
val idleConfig = settings.getConfig("idle")
+ val stolenConfig = settings.getConfig("stolen")
new CPUMetricRecorder(
Histogram.fromConfig(userConfig),
Histogram.fromConfig(systemConfig),
Histogram.fromConfig(cpuWaitConfig),
- Histogram.fromConfig(idleConfig))
+ Histogram.fromConfig(idleConfig),
+ Histogram.fromConfig(stolenConfig))
}
}
diff --git a/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala b/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala
index 2fe66a43..b1ebf402 100644
--- a/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala
+++ b/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala
@@ -68,6 +68,7 @@ class SystemMetricsCollector(collectInterval: FiniteDuration) extends Actor with
cpur.system.record(toLong(cpuPerc.getSys))
cpur.cpuWait.record(toLong(cpuPerc.getWait))
cpur.idle.record(toLong(cpuPerc.getIdle))
+ cpur.stolen.record(toLong(cpuPerc.getStolen))
}
private def recordProcessCpu(pcpur: ProcessCPUMetricsRecorder) = {
diff --git a/kamon-system-metrics/src/test/scala/kamon/metrics/SystemMetricsSpec.scala b/kamon-system-metrics/src/test/scala/kamon/metrics/SystemMetricsSpec.scala
index 4f7867ed..2d140a28 100644
--- a/kamon-system-metrics/src/test/scala/kamon/metrics/SystemMetricsSpec.scala
+++ b/kamon-system-metrics/src/test/scala/kamon/metrics/SystemMetricsSpec.scala
@@ -64,6 +64,10 @@ class SystemMetricsSpec extends TestKitBase with WordSpecLike with Matchers {
| highest-trackable-value = 999999999
| significant-value-digits = 2
| }
+ | stolen {
+ | highest-trackable-value = 999999999
+ | significant-value-digits = 2
+ | }
| }
| process-cpu {
| user {
@@ -162,7 +166,7 @@ class SystemMetricsSpec extends TestKitBase with WordSpecLike with Matchers {
""".stripMargin))
"the Kamon CPU Metrics" should {
- "record user, system, wait, idle metrics" in new CPUMetricsListenerFixture {
+ "record user, system, wait, idle, stolen metrics" in new CPUMetricsListenerFixture {
val metricsListener = subscribeToMetrics()
val CPUMetrics = expectCPUMetrics(metricsListener, 3 seconds)
@@ -170,6 +174,7 @@ class SystemMetricsSpec extends TestKitBase with WordSpecLike with Matchers {
CPUMetrics.system.max should be >= 0L
CPUMetrics.cpuWait.max should be >= 0L
CPUMetrics.idle.max should be >= 0L
+ CPUMetrics.stolen.max should be >= 0L
}
}
"the Kamon GC Metrics" should {