You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ktor Server中集成Sentry实现API性能监控?

集成Sentry Java/Kotlin SDK与Ktor以追踪API性能

1. 添加依赖

在项目构建文件中引入Sentry的Ktor集成包及核心SDK,使用最新稳定版本即可:

Gradle Kotlin DSL

implementation("io.sentry:sentry-ktor:6.31.0")
// 若使用Logback日志框架,可额外引入日志集成包(可选)
implementation("io.sentry:sentry-logback:6.31.0")

Maven

<dependency>
    <groupId>io.sentry</groupId>
    <artifactId>sentry-ktor</artifactId>
    <version>6.31.0</version>
</dependency>

2. 初始化Sentry

在应用启动时配置Sentry的基础参数,DSN可从Sentry项目后台获取:

import io.sentry.Sentry

fun main() {
    Sentry.init { options ->
        options.dsn = "你的Sentry项目DSN"
        options.environment = "production" // 根据环境设置,如dev/prod
        options.release = "1.0.0" // 应用版本号,可选
        // 设置性能采样率,1.0代表100%采样,生产环境可按需调低(如0.1)
        options.tracesSampleRate = 1.0
    }

    embeddedServer(Netty, port = 8080) {
        module()
    }.start(wait = true)
}

也可通过application.conf配置参数:

sentry {
    dsn = "你的Sentry项目DSN"
    environment = "production"
    release = "1.0.0"
    tracesSampleRate = 1.0
}

3. 安装Sentry Ktor插件

在Ktor应用模块中安装Sentry插件,它会自动拦截HTTP请求并生成性能事务:

import io.sentry.ktor.Sentry

fun Application.module() {
    install(Sentry) {
        // 可选:忽略无需追踪的路径,如健康检查、指标接口
        ignorePaths = listOf("/health", "/metrics")
        // 自定义事务名称(默认格式为「HTTP方法 + 路径」)
        transactionNameProvider = { call ->
            "${call.request.httpMethod.value} ${call.request.path()}"
        }
    }

    // 配置业务路由
    routing {
        get("/api/users") {
            call.respondText("用户列表")
        }

        post("/api/users") {
            val user = call.receive<User>()
            // 模拟业务耗时操作
            delay(100)
            call.respond(HttpStatusCode.Created, user)
        }
    }
}

4. 手动追踪内部操作(可选)

若需追踪代码内部的耗时逻辑(如数据库查询、第三方调用),可手动创建性能Span:

import io.sentry.Sentry

fun fetchUsers(): List<User> {
    // 创建Span,指定操作类型和名称
    val span = Sentry.startSpan("db.query", "获取用户列表")
    return try {
        // 模拟数据库查询耗时
        delay(50)
        listOf(User(1, "Alice"))
    } finally {
        // 结束Span,确保数据上报
        span.finish()
    }
}

data class User(val id: Int, val name: String)

5. 验证集成

启动Ktor服务器后,调用API接口,登录Sentry后台进入「性能」页面,即可查看每个请求的事务详情、耗时分布、Span明细等数据。

内容的提问来源于stack exchange,提问作者Raman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:18:06