aboutsummaryrefslogtreecommitdiff
path: root/kamon-system-metrics/src/main/scala/kamon/system/sigar/ULimitMetrics.scala
blob: 314c84507cefd9953eab31d378b685b241d6f4aa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package kamon.system.sigar

import akka.event.LoggingAdapter
import kamon.metric.GenericEntityRecorder
import kamon.metric.instrument.InstrumentFactory
import org.hyperic.sigar.Sigar

class ULimitMetrics(sigar: Sigar, instrumentFactory: InstrumentFactory, logger: LoggingAdapter) extends GenericEntityRecorder(instrumentFactory) with SigarMetric {
  val pid = sigar.getPid
  val openFiles = histogram("open-files")

  def update(): Unit = {
    openFiles.record(sigar.getProcFd(pid).getTotal)
  }
}

object ULimitMetrics extends SigarMetricRecorderCompanion("ulimit") {
  def apply(sigar: Sigar, instrumentFactory: InstrumentFactory, logger: LoggingAdapter): ULimitMetrics =
    new ULimitMetrics(sigar, instrumentFactory, logger)
}