From 79ba8dad30bfa202fa842bdc645ae7f3eff407e1 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Tue, 8 Mar 2022 16:41:02 -0800 Subject: [PATCH] chore: Improve tracing --- server/logging/sentry.ts | 10 ++++++---- server/middlewares/authentication.ts | 11 +++++++++++ server/tracing.ts | 7 ++++--- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/server/logging/sentry.ts b/server/logging/sentry.ts index efcbd8fc5..c1948c6aa 100644 --- a/server/logging/sentry.ts +++ b/server/logging/sentry.ts @@ -35,15 +35,17 @@ export function requestErrorHandler(error: any, ctx: ContextWithState) { scope.setTag("request_id", requestId as string); } - const authType = ctx.state ? ctx.state.authType : undefined; - + const authType = ctx.state?.authType ?? undefined; if (authType) { scope.setTag("auth_type", authType); } - const userId = - ctx.state && ctx.state.user ? ctx.state.user.id : undefined; + const teamId = ctx.state?.user?.teamId ?? undefined; + if (teamId) { + scope.setTag("team_id", teamId); + } + const userId = ctx.state?.user?.id ?? undefined; if (userId) { scope.setUser({ id: userId, diff --git a/server/middlewares/authentication.ts b/server/middlewares/authentication.ts index 4b13828fc..b90d2d2d5 100644 --- a/server/middlewares/authentication.ts +++ b/server/middlewares/authentication.ts @@ -1,5 +1,6 @@ import { Next } from "koa"; import { User, Team, ApiKey } from "@server/models"; +import tracer from "@server/tracing"; import { getUserForJWT } from "@server/utils/jwt"; import { AuthenticationError, UserSuspendedError } from "../errors"; import { ContextWithState } from "../types"; @@ -97,6 +98,16 @@ export default function auth( user.updateActiveAt(ctx.request.ip); ctx.state.token = String(token); ctx.state.user = user; + + if (tracer) { + const span = tracer.scope().active(); + console.log(span); + if (span !== null) { + span.setTag("request.userId", user.id); + span.setTag("request.teamId", user.teamId); + span.setTag("request.authType", ctx.state.authType); + } + } } return next(); diff --git a/server/tracing.ts b/server/tracing.ts index a2d0d94e7..74c4f8dc7 100644 --- a/server/tracing.ts +++ b/server/tracing.ts @@ -1,12 +1,13 @@ +import tracer from "dd-trace"; + // If the DataDog agent is installed and the DD_API_KEY environment variable is // in the environment then we can safely attempt to start the DD tracer if (process.env.DD_API_KEY) { - // eslint-disable-next-line @typescript-eslint/no-var-requires - require("dd-trace").init({ + tracer.init({ // SOURCE_COMMIT is used by Docker Hub // SOURCE_VERSION is used by Heroku version: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION, }); } -export {}; +export default tracer;