From 2cc7eeee6fe31a4dfd479f3c0abf1085c7bbf879 Mon Sep 17 00:00:00 2001 From: Diego Date: Sat, 7 Feb 2015 14:26:26 -0300 Subject: ! kamon-annotation: defined instruments @Trace @Segment @Gauge @Timed @Counted @Histogram and full implemetation --- .../src/main/scala/kamon/metric/MetricKey.scala | 8 +++--- kamon-core/src/main/scala/kamon/util/Latency.scala | 29 ++++++++++++++++++++++ 2 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 kamon-core/src/main/scala/kamon/util/Latency.scala (limited to 'kamon-core/src/main/scala') diff --git a/kamon-core/src/main/scala/kamon/metric/MetricKey.scala b/kamon-core/src/main/scala/kamon/metric/MetricKey.scala index a5d30c81..c655665b 100644 --- a/kamon-core/src/main/scala/kamon/metric/MetricKey.scala +++ b/kamon-core/src/main/scala/kamon/metric/MetricKey.scala @@ -47,7 +47,7 @@ object HistogramKey { apply(name, unitOfMeasurement, Map.empty) def apply(name: String, metadata: Map[String, String]): HistogramKey = - apply(name, UnitOfMeasurement.Unknown, Map.empty) + apply(name, UnitOfMeasurement.Unknown, metadata) /** * Java friendly versions: @@ -81,7 +81,7 @@ object MinMaxCounterKey { apply(name, unitOfMeasurement, Map.empty) def apply(name: String, metadata: Map[String, String]): MinMaxCounterKey = - apply(name, UnitOfMeasurement.Unknown, Map.empty) + apply(name, UnitOfMeasurement.Unknown, metadata) /** * Java friendly versions: @@ -115,7 +115,7 @@ object GaugeKey { apply(name, unitOfMeasurement, Map.empty) def apply(name: String, metadata: Map[String, String]): GaugeKey = - apply(name, UnitOfMeasurement.Unknown, Map.empty) + apply(name, UnitOfMeasurement.Unknown, metadata) /** * Java friendly versions: @@ -149,7 +149,7 @@ object CounterKey { apply(name, unitOfMeasurement, Map.empty) def apply(name: String, metadata: Map[String, String]): CounterKey = - apply(name, UnitOfMeasurement.Unknown, Map.empty) + apply(name, UnitOfMeasurement.Unknown, metadata) /** * Java friendly versions: diff --git a/kamon-core/src/main/scala/kamon/util/Latency.scala b/kamon-core/src/main/scala/kamon/util/Latency.scala new file mode 100644 index 00000000..52e044f8 --- /dev/null +++ b/kamon-core/src/main/scala/kamon/util/Latency.scala @@ -0,0 +1,29 @@ +/* + * ========================================================================================= + * Copyright © 2013-2015 the kamon project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the + * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + * ========================================================================================= + */ + +package kamon.util + +import kamon.metric.instrument.Histogram + +object Latency { + def measure[A](histogram: Histogram)(thunk: ⇒ A): A = { + val start = RelativeNanoTimestamp.now + try thunk finally { + val latency = NanoInterval.since(start).nanos + histogram.record(latency) + } + } +} -- cgit v1.2.3