refactor
All checks were successful
CI / build (push) Successful in 3m9s

This commit is contained in:
2026-04-29 22:31:53 +08:00
parent 1d938b7ea3
commit c0a44b416d
4 changed files with 83 additions and 8 deletions

View File

@@ -19,10 +19,6 @@ configurations {
}
}
implementation {
extendsFrom bundle
}
release {
transitive = false
canBeConsumed = true
@@ -31,6 +27,19 @@ configurations {
}
dependencies {
implementation project(':rbcs-common')
implementation catalog.opentelemetry.netty['4']['1']
implementation catalog.opentelemetry.sdk.extension.autoconfigure
implementation catalog.opentelemetry.logback.appender['1']['0']
implementation catalog.opentelemetry.extension.trace.propagators
implementation catalog.opentelemetry.exporter.otlp
implementation catalog.netty.transport
implementation catalog.slf4j.api
compileOnly catalog.logback.core
compileOnly catalog.logback.classic
bundle catalog.opentelemetry.netty['4']['1']
bundle catalog.opentelemetry.sdk.extension.autoconfigure
bundle catalog.opentelemetry.logback.appender['1']['0']
@@ -39,6 +48,7 @@ dependencies {
}
Provider<Tar> bundleTask = tasks.register("bundle", Tar) {
from(tasks.named(JavaPlugin.JAR_TASK_NAME))
from(configurations.bundle)
group = BasePlugin.BUILD_GROUP
}

View File

@@ -0,0 +1,17 @@
module net.woggioni.rbcs.server.otel {
requires net.woggioni.rbcs.common;
requires kotlin.stdlib;
requires io.netty.transport;
requires io.netty.common;
requires io.netty.buffer;
requires org.slf4j;
requires ch.qos.logback.core;
requires ch.qos.logback.classic;
requires io.opentelemetry.api;
requires io.opentelemetry.instrumentation.netty_4_1;
requires io.opentelemetry.sdk.autoconfigure;
requires io.opentelemetry.instrumentation.logback_appender_1_0;
requires io.opentelemetry.extension.trace.propagation;
}

View File

@@ -0,0 +1,50 @@
package net.woggioni.rbcs.server.otel
import io.netty.channel.ChannelHandler
import io.opentelemetry.api.GlobalOpenTelemetry
import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender
import io.opentelemetry.instrumentation.netty.v4_1.NettyServerTelemetry
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk
import net.woggioni.rbcs.common.createLogger
import net.woggioni.rbcs.common.info
object OtelSdkIntegration {
private val log = createLogger<OtelSdkIntegration>()
private val appenderAvailable: Boolean by lazy {
runCatching {
Class.forName("io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender")
}.fold(
onSuccess = { true },
onFailure = {
log.info { "OpenTelemetry logback appender not on classpath" }
false
},
)
}
fun initialize() {
log.info { "Initializing OpenTelemetry SDK with auto-configuration" }
val sdk = AutoConfiguredOpenTelemetrySdk.builder()
.setResultAsGlobal()
.build()
.openTelemetrySdk
if (appenderAvailable) {
runCatching {
OpenTelemetryAppender.install(sdk)
log.info { "OpenTelemetry logback appender installed" }
}.onFailure { ex ->
val msg = ex.localizedMessage ?: ex.javaClass.name
log.info { "Failed to install OpenTelemetry logback appender: $msg" }
}
}
log.info { "OpenTelemetry SDK initialized successfully" }
}
fun createHandler(): ChannelHandler {
return NettyServerTelemetry.create(GlobalOpenTelemetry.get()).createCombinedHandler()
}
}

View File

@@ -3,6 +3,7 @@ package net.woggioni.rbcs.server.otel
import io.netty.channel.ChannelHandler
import io.opentelemetry.api.GlobalOpenTelemetry
import io.opentelemetry.instrumentation.netty.v4_1.NettyServerTelemetry
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk
import net.woggioni.rbcs.common.createLogger
import net.woggioni.rbcs.common.info
@@ -25,10 +26,7 @@ object OtelSdkIntegration {
fun initialize() {
log.info { "Initializing OpenTelemetry SDK with auto-configuration" }
val sdk = io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk.builder()
.setResultAsGlobal()
.build()
.openTelemetrySdk
val sdk = AutoConfiguredOpenTelemetrySdk.initialize().openTelemetrySdk
if (appenderAvailable) {
runCatching {