chore: Improve tracing

This commit is contained in:
Tom Moor
2022-03-08 16:41:02 -08:00
parent 85f333b2fd
commit 79ba8dad30
3 changed files with 21 additions and 7 deletions

View File

@@ -35,15 +35,17 @@ export function requestErrorHandler(error: any, ctx: ContextWithState) {
scope.setTag("request_id", requestId as string); scope.setTag("request_id", requestId as string);
} }
const authType = ctx.state ? ctx.state.authType : undefined; const authType = ctx.state?.authType ?? undefined;
if (authType) { if (authType) {
scope.setTag("auth_type", authType); scope.setTag("auth_type", authType);
} }
const userId = const teamId = ctx.state?.user?.teamId ?? undefined;
ctx.state && ctx.state.user ? ctx.state.user.id : undefined; if (teamId) {
scope.setTag("team_id", teamId);
}
const userId = ctx.state?.user?.id ?? undefined;
if (userId) { if (userId) {
scope.setUser({ scope.setUser({
id: userId, id: userId,

View File

@@ -1,5 +1,6 @@
import { Next } from "koa"; import { Next } from "koa";
import { User, Team, ApiKey } from "@server/models"; import { User, Team, ApiKey } from "@server/models";
import tracer from "@server/tracing";
import { getUserForJWT } from "@server/utils/jwt"; import { getUserForJWT } from "@server/utils/jwt";
import { AuthenticationError, UserSuspendedError } from "../errors"; import { AuthenticationError, UserSuspendedError } from "../errors";
import { ContextWithState } from "../types"; import { ContextWithState } from "../types";
@@ -97,6 +98,16 @@ export default function auth(
user.updateActiveAt(ctx.request.ip); user.updateActiveAt(ctx.request.ip);
ctx.state.token = String(token); ctx.state.token = String(token);
ctx.state.user = user; 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(); return next();

View File

@@ -1,12 +1,13 @@
import tracer from "dd-trace";
// If the DataDog agent is installed and the DD_API_KEY environment variable is // 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 // in the environment then we can safely attempt to start the DD tracer
if (process.env.DD_API_KEY) { if (process.env.DD_API_KEY) {
// eslint-disable-next-line @typescript-eslint/no-var-requires tracer.init({
require("dd-trace").init({
// SOURCE_COMMIT is used by Docker Hub // SOURCE_COMMIT is used by Docker Hub
// SOURCE_VERSION is used by Heroku // SOURCE_VERSION is used by Heroku
version: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION, version: process.env.SOURCE_COMMIT || process.env.SOURCE_VERSION,
}); });
} }
export {}; export default tracer;