Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(core): #204 Use enabled config from traces & metrics to configure observability #206

Merged
merged 3 commits into from
Jan 14, 2025
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 9 additions & 4 deletions modules/core/src/main/scala/pillars/Observability.scala
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ object Observability:
Observability(Tracer.noop[F], Meter.noop[F], EndpointInterceptor.noop[F]).pure[F]

def init[F[_]: LiftIO: Async: Parallel: Console](appInfo: AppInfo, config: Config): Resource[F, Observability[F]] =
if config.enabled then
if config.isEnabled then
for
otel4s <- OpenTelemetrySdk.autoConfigured[F]: builder =>
builder
Expand All @@ -60,8 +60,12 @@ object Observability:
)
resource.mergeUnsafe(configured)
sdk = otel4s.sdk
tracer <- sdk.tracerProvider.get(config.traces.name.getOrElse(config.serviceName)).toResource
meter <- sdk.meterProvider.get(config.metrics.name.getOrElse(config.serviceName)).toResource
tracer <- (if config.traces.enabled then
sdk.tracerProvider.get(config.traces.name.getOrElse(config.serviceName))
else Tracer.noop[F].pure[F]).toResource
meter <- (if config.metrics.enabled then
sdk.meterProvider.get(config.metrics.name.getOrElse(config.serviceName))
else Meter.noop[F].pure[F]).toResource
tapirMetrics <- Metrics.init[F](meter).toResource
yield Observability(tracer, meter, tapirMetrics.metricsInterceptor())
else
Expand All @@ -71,7 +75,8 @@ object Observability:
metrics: Config.Metrics = Config.Metrics(),
traces: Config.Traces = Config.Traces(),
serviceName: ServiceName = ServiceName("pillars")
) extends pillars.Config
) extends pillars.Config:
def isEnabled: Boolean = enabled && (metrics.enabled || traces.enabled)

object Config:
given Configuration = Configuration.default.withKebabCaseMemberNames.withKebabCaseConstructorNames.withDefaults
Expand Down
Loading