端到端追踪:使用 OpenTelemetry 追踪 GraphQL 请求链路
为每个 GraphQL 请求的 resolver 执行、数据库查询与外部 API 调用生成分布式追踪跨度。 · 难度:入门 · +10XP
端到端追踪:使用 OpenTelemetry 追踪 GraphQL 请求链路
GraphQL 的一个请求可能触发上百个 resolver,排查性能瓶颈困难。本教程集成 OpenTelemetry,创建自定义插件为每个字段的解析过程创建 span,自动关联父查询。追踪数据库查询、缓存命中与外部 REST 调用。最终在 Jaeger 或 Datadog 中可视化完整请求链路,快速定位慢 resolver。
const { tracer } = require('./tracer');
const resolvers = {
User: {
posts: async (parent, args, context, info) => {
const span = tracer.startSpan('User.posts resolver');
try {
const result = await db.query('SELECT * FROM posts WHERE user_id = $1', [parent.id]);
return result;
} finally {
span.end();
}
},
},
};