Skip to content

Commit 08898e1

Browse files
committed
dedup
1 parent 56a9bee commit 08898e1

File tree

3 files changed

+34
-54
lines changed

3 files changed

+34
-54
lines changed

reporters/kamon-opentelemetry/src/main/scala/kamon/otel/OpenTelemetryConfiguration.scala

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package kamon.otel
22

33
import com.typesafe.config.Config
4+
import io.opentelemetry.sdk.resources.Resource
5+
import kamon.Kamon
6+
import kamon.status.Status
7+
import kamon.tag.Tag
48
import org.slf4j.LoggerFactory
59

610
import java.net.URL
@@ -68,4 +72,30 @@ object OpenTelemetryConfiguration {
6872
OpenTelemetryConfiguration(protocol, url, compression, headers, timeout)
6973
}
7074

75+
private val kamonSettings: Status.Settings = Kamon.status().settings()
76+
/**
77+
* Builds the resource information added as resource labels to the exported metrics/traces
78+
*
79+
* @return
80+
*/
81+
def buildResource(attributes: Map[String, String]): Resource = {
82+
val env = Kamon.environment
83+
val builder = Resource.builder()
84+
.put("host.name", kamonSettings.environment.host)
85+
.put("service.instance.id", kamonSettings.environment.instance)
86+
.put("service.name", env.service)
87+
.put("telemetry.sdk.name", "kamon")
88+
.put("telemetry.sdk.language", "scala")
89+
.put("telemetry.sdk.version", kamonSettings.version)
90+
91+
attributes.foreach { case (k, v) => builder.put(k, v) }
92+
//add all kamon.environment.tags as KeyValues to the Resource object
93+
env.tags.iterator().foreach {
94+
case t: Tag.String => builder.put(t.key, t.value)
95+
case t: Tag.Boolean => builder.put(t.key, t.value)
96+
case t: Tag.Long => builder.put(t.key, t.value)
97+
}
98+
99+
builder.build()
100+
}
71101
}

reporters/kamon-opentelemetry/src/main/scala/kamon/otel/OpenTelemetryMetricsReporter.scala

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ class OpenTelemetryMetricsReporter(metricsServiceFactory: Config => MetricsServi
8181
decoded.failed.foreach(t => throw new IllegalArgumentException(s"value for attribute ${k.trim} is not a url-encoded string", t))
8282
k.trim -> decoded.get
8383
}.toMap
84-
val resource: Resource = buildResource(attributes)
84+
val resource: Resource = OpenTelemetryConfiguration.buildResource(attributes)
8585
this.metricsConverterFunc = MetricsConverter.convert(resource, kamonSettings.version)
8686

8787
this.metricsService = Option(metricsServiceFactory.apply(newConfig))
@@ -93,29 +93,4 @@ class OpenTelemetryMetricsReporter(metricsServiceFactory: Config => MetricsServi
9393
this.metricsService = None
9494
}
9595

96-
/**
97-
* Builds the resource information added as resource labels to the exported metrics
98-
*
99-
* @return
100-
*/
101-
private def buildResource(attributes: Map[String, String]): Resource = {
102-
val env = Kamon.environment
103-
val builder = Resource.builder()
104-
.put("host.name", kamonSettings.environment.host)
105-
.put("service.instance.id", kamonSettings.environment.instance)
106-
.put("service.name", env.service)
107-
.put("telemetry.sdk.name", "kamon")
108-
.put("telemetry.sdk.language", "scala")
109-
.put("telemetry.sdk.version", kamonSettings.version)
110-
111-
attributes.foreach { case (k, v) => builder.put(k, v) }
112-
//add all kamon.environment.tags as KeyValues to the Resource object
113-
env.tags.iterator().foreach {
114-
case t: Tag.String => builder.put(t.key, t.value)
115-
case t: Tag.Boolean => builder.put(t.key, t.value)
116-
case t: Tag.Long => builder.put(t.key, t.value)
117-
}
118-
119-
builder.build()
120-
}
12196
}

reporters/kamon-opentelemetry/src/main/scala/kamon/otel/OpenTelemetryTraceReporter.scala

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ object OpenTelemetryTraceReporter {
5252
import OpenTelemetryTraceReporter._
5353

5454
/**
55-
* Converts internal finished Kamon spans to OpenTelemetry format and sends to a configured OpenTelemetry endpoint using gRPC or REST.
56-
*/
55+
* Converts internal finished Kamon spans to OpenTelemetry format and sends to a configured OpenTelemetry endpoint using gRPC or REST.
56+
*/
5757
class OpenTelemetryTraceReporter(traceServiceFactory: Config => TraceService)(implicit ec: ExecutionContext) extends SpanReporter {
5858
private var traceService: Option[TraceService] = None
5959
private var spanConverterFunc: Seq[Span.Finished] => JCollection[SpanData] = (_ => new util.ArrayList[SpanData](0))
@@ -81,7 +81,7 @@ class OpenTelemetryTraceReporter(traceServiceFactory: Config => TraceService)(im
8181
decoded.failed.foreach(t => throw new IllegalArgumentException(s"value for attribute ${k.trim} is not a url-encoded string", t))
8282
k.trim -> decoded.get
8383
}.toMap
84-
val resource: Resource = buildResource(attributes)
84+
val resource: Resource = OpenTelemetryConfiguration.buildResource(attributes)
8585
this.spanConverterFunc = SpanConverter.convert(newConfig.getBoolean("kamon.otel.trace.include-error-event"), resource, kamonSettings.version)
8686

8787
this.traceService = Option(traceServiceFactory.apply(newConfig))
@@ -93,29 +93,4 @@ class OpenTelemetryTraceReporter(traceServiceFactory: Config => TraceService)(im
9393
this.traceService = None
9494
}
9595

96-
/**
97-
* Builds the resource information added as resource labels to the exported traces
98-
*
99-
* @return
100-
*/
101-
private def buildResource(attributes: Map[String, String]): Resource = {
102-
val env = Kamon.environment
103-
val builder = Resource.builder()
104-
.put("host.name", kamonSettings.environment.host)
105-
.put("service.instance.id", kamonSettings.environment.instance)
106-
.put("service.name", env.service)
107-
.put("telemetry.sdk.name", "kamon")
108-
.put("telemetry.sdk.language", "scala")
109-
.put("telemetry.sdk.version", kamonSettings.version)
110-
111-
attributes.foreach { case (k, v) => builder.put(k, v) }
112-
//add all kamon.environment.tags as KeyValues to the Resource object
113-
env.tags.iterator().foreach {
114-
case t: Tag.String => builder.put(t.key, t.value)
115-
case t: Tag.Boolean => builder.put(t.key, t.value)
116-
case t: Tag.Long => builder.put(t.key, t.value)
117-
}
118-
119-
builder.build()
120-
}
12196
}

0 commit comments

Comments
 (0)