All Downloads are FREE. Search and download functionalities are using the official Maven repository.

trace4cats.opentelemetry.otlp.OpenTelemetryOtlpGrpcSpanExporter.scala Maven / Gradle / Ivy

There is a newer version: 0.14.4+41-d415847c
Show newest version
package trace4cats.opentelemetry.otlp

import cats.Foldable
import cats.effect.kernel.{Async, Resource}
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter
import org.typelevel.ci.CIString
import trace4cats.AttributeValue
import trace4cats.kernel.SpanExporter
import trace4cats.opentelemetry.common.{Endpoint, OpenTelemetryGrpcSpanExporter}

object OpenTelemetryOtlpGrpcSpanExporter {
  def apply[F[_]: Async, G[_]: Foldable](
    host: String = "localhost",
    port: Int = 4317,
    protocol: String = "http",
    staticHeaders: List[(CIString, String)] = List.empty,
    resourceAttributes: Map[String, AttributeValue] = Map.empty
  ): Resource[F, SpanExporter[F, G]] =
    OpenTelemetryGrpcSpanExporter(
      endpoint = Endpoint(protocol, host, port),
      resourceAttributes,
      makeExporter = endpoint =>
        staticHeaders
          .foldLeft(OtlpGrpcSpanExporter.builder().setEndpoint(endpoint.render)) { case (builder, (key, value)) =>
            builder.addHeader(key.toString, value)
          }
          .build(),
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy