From 9b0bf679201c6831855ca54e20d92e5495789943 Mon Sep 17 00:00:00 2001 From: Diego Date: Sat, 6 Dec 2014 17:50:44 -0300 Subject: + system-metrics: include RxDropped and TxDropped in NetworkMetrics --- .../main/scala/kamon/metrics/NetworkMetrics.scala | 20 ++++++++++++++------ .../scala/kamon/system/SystemMetricsCollector.scala | 4 +++- 2 files changed, 17 insertions(+), 7 deletions(-) (limited to 'kamon-system-metrics/src/main/scala') diff --git a/kamon-system-metrics/src/main/scala/kamon/metrics/NetworkMetrics.scala b/kamon-system-metrics/src/main/scala/kamon/metrics/NetworkMetrics.scala index f348bb0c..d8a38f6d 100644 --- a/kamon-system-metrics/src/main/scala/kamon/metrics/NetworkMetrics.scala +++ b/kamon-system-metrics/src/main/scala/kamon/metrics/NetworkMetrics.scala @@ -31,31 +31,35 @@ object NetworkMetrics extends MetricGroupCategory { case object TxBytes extends MetricIdentity { val name = "tx-bytes" } case object RxErrors extends MetricIdentity { val name = "rx-errors" } case object TxErrors extends MetricIdentity { val name = "tx-errors" } + case object RxDropped extends MetricIdentity { val name = "rx-dropped" } + case object TxDropped extends MetricIdentity { val name = "tx-dropped" } - case class NetworkMetricRecorder(rxBytes: Histogram, txBytes: Histogram, rxErrors: Histogram, txErrors: Histogram) + case class NetworkMetricRecorder(rxBytes: Histogram, txBytes: Histogram, rxErrors: Histogram, txErrors: Histogram, rxDropped: Histogram, txDropped: Histogram) extends MetricGroupRecorder { def collect(context: CollectionContext): MetricGroupSnapshot = { - NetworkMetricSnapshot(rxBytes.collect(context), txBytes.collect(context), rxErrors.collect(context), txErrors.collect(context)) + NetworkMetricSnapshot(rxBytes.collect(context), txBytes.collect(context), rxErrors.collect(context), txErrors.collect(context), rxDropped.collect(context), txDropped.collect(context)) } def cleanup: Unit = {} } - case class NetworkMetricSnapshot(rxBytes: Histogram.Snapshot, txBytes: Histogram.Snapshot, rxErrors: Histogram.Snapshot, txErrors: Histogram.Snapshot) + case class NetworkMetricSnapshot(rxBytes: Histogram.Snapshot, txBytes: Histogram.Snapshot, rxErrors: Histogram.Snapshot, txErrors: Histogram.Snapshot, rxDropped: Histogram.Snapshot, txDropped: Histogram.Snapshot) extends MetricGroupSnapshot { type GroupSnapshotType = NetworkMetricSnapshot def merge(that: GroupSnapshotType, context: CollectionContext): GroupSnapshotType = { - NetworkMetricSnapshot(rxBytes.merge(that.rxBytes, context), txBytes.merge(that.txBytes, context), rxErrors.merge(that.rxErrors, context), txErrors.merge(that.txErrors, context)) + NetworkMetricSnapshot(rxBytes.merge(that.rxBytes, context), txBytes.merge(that.txBytes, context), rxErrors.merge(that.rxErrors, context), txErrors.merge(that.txErrors, context), rxDropped.merge(that.rxDropped, context), txDropped.merge(that.txDropped, context)) } val metrics: Map[MetricIdentity, MetricSnapshot] = Map( RxBytes -> rxBytes, TxBytes -> txBytes, RxErrors -> rxErrors, - TxErrors -> txErrors) + TxErrors -> txErrors, + RxDropped -> rxDropped, + TxDropped -> txDropped) } val Factory = NetworkMetricGroupFactory @@ -73,11 +77,15 @@ case object NetworkMetricGroupFactory extends MetricGroupFactory { val txBytesConfig = settings.getConfig("tx-bytes") val rxErrorsConfig = settings.getConfig("rx-errors") val txErrorsConfig = settings.getConfig("tx-errors") + val rxDroppedConfig = settings.getConfig("rx-dropped") + val txDroppedConfig = settings.getConfig("tx-dropped") new NetworkMetricRecorder( Histogram.fromConfig(rxBytesConfig, Scale.Kilo), Histogram.fromConfig(txBytesConfig, Scale.Kilo), Histogram.fromConfig(rxErrorsConfig), - Histogram.fromConfig(txErrorsConfig)) + Histogram.fromConfig(txErrorsConfig), + Histogram.fromConfig(rxDroppedConfig), + Histogram.fromConfig(txDroppedConfig)) } } \ No newline at end of file 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 8094cac4..c200091e 100644 --- a/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala +++ b/kamon-system-metrics/src/main/scala/kamon/system/SystemMetricsCollector.scala @@ -104,6 +104,8 @@ class SystemMetricsCollector(collectInterval: FiniteDuration) extends Actor with nr.txBytes.record(collect(sigar, interfaces)(net ⇒ toKB(net.getTxBytes))) nr.rxErrors.record(collect(sigar, interfaces)(net ⇒ net.getRxErrors)) nr.txErrors.record(collect(sigar, interfaces)(net ⇒ net.getTxErrors)) + nr.rxDropped.record(collect(sigar, interfaces)(net ⇒ net.getRxDropped)) + nr.txDropped.record(collect(sigar, interfaces)(net ⇒ net.getTxDropped)) def collect(sigar: SigarProxy, interfaces: Set[String])(block: NetInterfaceStat ⇒ Long): Long = { interfaces.foldLeft(0L) { (totalBytes, interface) ⇒ @@ -197,5 +199,5 @@ object SystemMetricsCollector { def isLinux: Boolean = System.getProperty("os.name").indexOf("Linux") != -1 } - def props(collectInterval: FiniteDuration): Props = Props[SystemMetricsCollector](new SystemMetricsCollector(collectInterval)) + def props(collectInterval: FiniteDuration): Props = Props(classOf[SystemMetricsCollector], collectInterval) } \ No newline at end of file -- cgit v1.2.3