From aee39421b5a2cac616a9c8622ad08f07898298fc Mon Sep 17 00:00:00 2001 From: mszafraniuk Date: Tue, 24 Sep 2024 13:02:44 +0200 Subject: [PATCH 1/2] bump otel, remove jaeger exporter --- build.sbt | 20 ++++++++++---------- project/Dependencies.scala | 5 +++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/build.sbt b/build.sbt index 6eb67d6d..2561aeee 100644 --- a/build.sbt +++ b/build.sbt @@ -34,7 +34,7 @@ lazy val root = (project in file(".")) .settings(name := "Trace4Cats OpenTelemetry") .aggregate( `opentelemetry-common`, - `opentelemetry-jaeger-exporter`, +// `opentelemetry-jaeger-exporter`, `opentelemetry-otlp-grpc-exporter`, `opentelemetry-otlp-http-exporter`, `opentelemetry-otlp-http4s-grpc-exporter` @@ -55,15 +55,15 @@ lazy val `opentelemetry-common` = ) ) -lazy val `opentelemetry-jaeger-exporter` = - (project in file("modules/opentelemetry-jaeger-exporter")) - .settings(publishSettings) - .settings( - name := "trace4cats-opentelemetry-jaeger-exporter", - libraryDependencies ++= Seq(Dependencies.openTelemetryJaegerExporter), - libraryDependencies ++= Seq(Dependencies.grpcOkHttp, Dependencies.trace4catsJaegerIntegrationTest).map(_ % Test) - ) - .dependsOn(`opentelemetry-common`) +//lazy val `opentelemetry-jaeger-exporter` = +// (project in file("modules/opentelemetry-jaeger-exporter")) +// .settings(publishSettings) +// .settings( +// name := "trace4cats-opentelemetry-jaeger-exporter", +//// libraryDependencies ++= Seq(Dependencies.openTelemetryJaegerExporter), +// libraryDependencies ++= Seq(Dependencies.grpcOkHttp, Dependencies.trace4catsJaegerIntegrationTest).map(_ % Test) +// ) +// .dependsOn(`opentelemetry-common`) lazy val `opentelemetry-otlp-grpc-exporter` = (project in file("modules/opentelemetry-otlp-grpc-exporter")) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 3bc36612..b25b5979 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -15,7 +15,8 @@ object Dependencies { val collectionCompat = "2.11.0" val grpc = "1.49.2" val http4s = "0.23.25" - val openTelemetry = "1.27.0" + val openTelemetry = "1.42.1" // 1.27.0 +// val openTelemetryJaeger = "1.34.1" val kindProjector = "0.13.2" val betterMonadicFor = "0.3.1" @@ -35,7 +36,7 @@ object Dependencies { lazy val http4sCirce = "org.http4s" %% "http4s-circe" % Versions.http4s lazy val openTelemetrySdk = "io.opentelemetry" % "opentelemetry-sdk" % Versions.openTelemetry lazy val openTelemetryOtlpExporter = "io.opentelemetry" % "opentelemetry-exporter-otlp" % Versions.openTelemetry - lazy val openTelemetryJaegerExporter = "io.opentelemetry" % "opentelemetry-exporter-jaeger" % Versions.openTelemetry +// lazy val openTelemetryJaegerExporter = "io.opentelemetry" % "opentelemetry-exporter-jaeger" % Versions.openTelemetryJaeger lazy val kindProjector = ("org.typelevel" % "kind-projector" % Versions.kindProjector).cross(CrossVersion.full) lazy val betterMonadicFor = "com.olegpy" %% "better-monadic-for" % Versions.betterMonadicFor From 022bdfa0b25fe22645c1d721e2025d1cd8e3ef16 Mon Sep 17 00:00:00 2001 From: mszafraniuk Date: Wed, 25 Sep 2024 10:47:38 +0200 Subject: [PATCH 2/2] remove jaeger exporter module --- .github/workflows/ci.yml | 2 +- build.sbt | 11 ------ .../OpenTelemetryJaegerSpanCompleter.scala | 23 ----------- .../OpenTelemetryJaegerSpanExporter.scala | 22 ----------- .../src/test/resources/logback.xml | 19 ---------- ...OpenTelemetryJaegerSpanCompleterSpec.scala | 38 ------------------- .../OpenTelemetryJaegerSpanExporterSpec.scala | 33 ---------------- .../opentelemetry/jaeger/package.scala | 36 ------------------ project/Dependencies.scala | 4 +- 9 files changed, 2 insertions(+), 186 deletions(-) delete mode 100644 modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleter.scala delete mode 100644 modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporter.scala delete mode 100644 modules/opentelemetry-jaeger-exporter/src/test/resources/logback.xml delete mode 100644 modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleterSpec.scala delete mode 100644 modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporterSpec.scala delete mode 100644 modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/package.scala diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6adc02a..eac3eb37 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -75,7 +75,7 @@ jobs: run: docker-compose down - name: Compress target directories - run: tar cf targets.tar target modules/opentelemetry-otlp-http-exporter/target modules/opentelemetry-common/target modules/opentelemetry-otlp-http4s-grpc-exporter/target modules/opentelemetry-otlp-grpc-exporter/target modules/opentelemetry-jaeger-exporter/target project/target + run: tar cf targets.tar target modules/opentelemetry-otlp-http-exporter/target modules/opentelemetry-common/target modules/opentelemetry-otlp-http4s-grpc-exporter/target modules/opentelemetry-otlp-grpc-exporter/target project/target - name: Upload target directories uses: actions/upload-artifact@v2 diff --git a/build.sbt b/build.sbt index 2561aeee..710f97f7 100644 --- a/build.sbt +++ b/build.sbt @@ -34,7 +34,6 @@ lazy val root = (project in file(".")) .settings(name := "Trace4Cats OpenTelemetry") .aggregate( `opentelemetry-common`, -// `opentelemetry-jaeger-exporter`, `opentelemetry-otlp-grpc-exporter`, `opentelemetry-otlp-http-exporter`, `opentelemetry-otlp-http4s-grpc-exporter` @@ -55,16 +54,6 @@ lazy val `opentelemetry-common` = ) ) -//lazy val `opentelemetry-jaeger-exporter` = -// (project in file("modules/opentelemetry-jaeger-exporter")) -// .settings(publishSettings) -// .settings( -// name := "trace4cats-opentelemetry-jaeger-exporter", -//// libraryDependencies ++= Seq(Dependencies.openTelemetryJaegerExporter), -// libraryDependencies ++= Seq(Dependencies.grpcOkHttp, Dependencies.trace4catsJaegerIntegrationTest).map(_ % Test) -// ) -// .dependsOn(`opentelemetry-common`) - lazy val `opentelemetry-otlp-grpc-exporter` = (project in file("modules/opentelemetry-otlp-grpc-exporter")) .settings(publishSettings) diff --git a/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleter.scala b/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleter.scala deleted file mode 100644 index 1879bf75..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleter.scala +++ /dev/null @@ -1,23 +0,0 @@ -package trace4cats.opentelemetry.jaeger - -import cats.effect.kernel.{Async, Resource} -import fs2.Chunk -import org.typelevel.log4cats.Logger -import org.typelevel.log4cats.slf4j.Slf4jLogger -import trace4cats.kernel.SpanCompleter -import trace4cats.model.TraceProcess -import trace4cats.{CompleterConfig, QueuedSpanCompleter} - -object OpenTelemetryJaegerSpanCompleter { - def apply[F[_]: Async]( - process: TraceProcess, - host: String = "localhost", - port: Int = 14250, - config: CompleterConfig = CompleterConfig(), - protocol: String = "http" - ): Resource[F, SpanCompleter[F]] = - Resource.eval(Slf4jLogger.create[F]).flatMap { implicit logger: Logger[F] => - OpenTelemetryJaegerSpanExporter[F, Chunk](host, port, protocol, process.attributes) - .flatMap(QueuedSpanCompleter[F](TraceProcess(process.serviceName), _, config)) - } -} diff --git a/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporter.scala b/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporter.scala deleted file mode 100644 index 0c8ab85b..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/main/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporter.scala +++ /dev/null @@ -1,22 +0,0 @@ -package trace4cats.opentelemetry.jaeger - -import cats.Foldable -import cats.effect.kernel.{Async, Resource} -import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter -import trace4cats.AttributeValue -import trace4cats.kernel.SpanExporter -import trace4cats.opentelemetry.common.{Endpoint, OpenTelemetryGrpcSpanExporter} - -object OpenTelemetryJaegerSpanExporter { - def apply[F[_]: Async, G[_]: Foldable]( - host: String = "localhost", - port: Int = 14250, - protocol: String = "http", - resourceAttributes: Map[String, AttributeValue] = Map.empty - ): Resource[F, SpanExporter[F, G]] = - OpenTelemetryGrpcSpanExporter( - Endpoint(protocol, host, port), - resourceAttributes, - ep => JaegerGrpcSpanExporter.builder().setEndpoint(ep.render).build() - ) -} diff --git a/modules/opentelemetry-jaeger-exporter/src/test/resources/logback.xml b/modules/opentelemetry-jaeger-exporter/src/test/resources/logback.xml deleted file mode 100644 index b93d34cf..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/test/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - %date [%level] from %logger in %thread - %message%n%xException - - - - - 10000 - - - - - - - \ No newline at end of file diff --git a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleterSpec.scala b/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleterSpec.scala deleted file mode 100644 index f4a25672..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanCompleterSpec.scala +++ /dev/null @@ -1,38 +0,0 @@ -package trace4cats.opentelemetry.jaeger - -import java.time.Instant - -import cats.effect.IO -import fs2.Chunk -import trace4cats.CompleterConfig -import trace4cats.model.{Batch, CompletedSpan, TraceProcess} -import trace4cats.test.jaeger.BaseJaegerSpec - -import scala.concurrent.duration._ - -class OpenTelemetryJaegerSpanCompleterSpec extends BaseJaegerSpec { - it should "Send a span to jaeger" in forAll { (span: CompletedSpan.Builder, serviceName: String) => - val process = TraceProcess(serviceName) - - val updatedSpan = span.copy( - start = Instant.now(), - end = Instant.now(), - attributes = span.attributes.filterNot { case (key, _) => - excludedTagKeys.contains(key) - }, - ) - val batch = Batch(Chunk(updatedSpan.build(process))) - - testCompleter( - OpenTelemetryJaegerSpanCompleter[IO]( - process, - "localhost", - 14250, - config = CompleterConfig(batchTimeout = 50.millis) - ), - updatedSpan, - process, - batchToJaegerResponse(batch, process, kindTags, statusTags, processTags, additionalTags) - ) - } -} diff --git a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporterSpec.scala b/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporterSpec.scala deleted file mode 100644 index 0b684f4e..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/OpenTelemetryJaegerSpanExporterSpec.scala +++ /dev/null @@ -1,33 +0,0 @@ -package trace4cats.opentelemetry.jaeger - -import java.time.Instant - -import cats.effect.IO -import fs2.Chunk -import trace4cats.model.{Batch, TraceProcess} -import trace4cats.test.jaeger.BaseJaegerSpec - -class OpenTelemetryJaegerSpanExporterSpec extends BaseJaegerSpec { - it should "Send a batch of spans to jaeger" in forAll { (batch: Batch[Chunk], process: TraceProcess) => - val updatedBatch = - Batch( - batch.spans.map(span => - span.copy( - serviceName = process.serviceName, - attributes = span.allAttributes - .filterNot { case (key, _) => - excludedTagKeys.contains(key) - }, - start = Instant.now(), - end = Instant.now() - ) - ) - ) - - testExporter( - OpenTelemetryJaegerSpanExporter[IO, Chunk]("localhost", 14250, "http", process.attributes), - updatedBatch, - batchToJaegerResponse(updatedBatch, process, kindTags, statusTags, processTags, additionalTags) - ) - } -} diff --git a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/package.scala b/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/package.scala deleted file mode 100644 index 04bf623f..00000000 --- a/modules/opentelemetry-jaeger-exporter/src/test/scala/trace4cats/opentelemetry/jaeger/package.scala +++ /dev/null @@ -1,36 +0,0 @@ -package trace4cats.opentelemetry - -import trace4cats.SemanticTags -import trace4cats.model.{AttributeValue, SpanKind, SpanStatus, TraceProcess} - -package object jaeger { - val kindTags: SpanKind => Map[String, AttributeValue] = { - case SpanKind.Internal => Map.empty - case e => SemanticTags.kindTags(e) - } - - val statusCode: SpanStatus => String = { - case s if s.isOk => "OK" - case _ => "ERROR" - } - - val statusTags: SpanStatus => Map[String, AttributeValue] = { s => - val attrs = Map[String, AttributeValue](s"otel.status_code" -> statusCode(s)) - val errorAttrs: Map[String, AttributeValue] = - s match { - case SpanStatus.Internal(message) => - attrs ++ Map[String, AttributeValue]("error" -> true, "otel.status_description" -> message) - case s if s.isOk => attrs - case _ => attrs + ("error" -> true) - } - attrs ++ errorAttrs - } - - val processTags: TraceProcess => Map[String, AttributeValue] = p => - Map[String, AttributeValue]("service.name" -> p.serviceName) ++ p.attributes - - val additionalTags: Map[String, AttributeValue] = - Map("otel.library.name" -> "trace4cats", "otel.scope.name" -> "trace4cats") - - val excludedTagKeys: Set[String] = Set("ip") -} diff --git a/project/Dependencies.scala b/project/Dependencies.scala index b25b5979..11f70ebd 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -15,8 +15,7 @@ object Dependencies { val collectionCompat = "2.11.0" val grpc = "1.49.2" val http4s = "0.23.25" - val openTelemetry = "1.42.1" // 1.27.0 -// val openTelemetryJaeger = "1.34.1" + val openTelemetry = "1.42.1" val kindProjector = "0.13.2" val betterMonadicFor = "0.3.1" @@ -36,7 +35,6 @@ object Dependencies { lazy val http4sCirce = "org.http4s" %% "http4s-circe" % Versions.http4s lazy val openTelemetrySdk = "io.opentelemetry" % "opentelemetry-sdk" % Versions.openTelemetry lazy val openTelemetryOtlpExporter = "io.opentelemetry" % "opentelemetry-exporter-otlp" % Versions.openTelemetry -// lazy val openTelemetryJaegerExporter = "io.opentelemetry" % "opentelemetry-exporter-jaeger" % Versions.openTelemetryJaeger lazy val kindProjector = ("org.typelevel" % "kind-projector" % Versions.kindProjector).cross(CrossVersion.full) lazy val betterMonadicFor = "com.olegpy" %% "better-monadic-for" % Versions.betterMonadicFor