Skip to content

Commit 0c60f67

Browse files
chore: improvements to OTEL system (#752)
1 parent 8b69c7e commit 0c60f67

File tree

4 files changed

+21
-32
lines changed

4 files changed

+21
-32
lines changed

apps/mail-bridge/queue/mail-processor.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,7 @@ export const worker = createWorker<MailProcessorJobData>(
295295
tracer.startActiveSpan('Mail Processor', async (span) => {
296296
try {
297297
span?.setAttributes({
298-
'job.id': job.id,
299-
'job.data': JSON.stringify(job.data)
298+
'job.id': job.id
300299
});
301300

302301
const { rawMessage, params } = job.data;
@@ -1034,7 +1033,6 @@ export const worker = createWorker<MailProcessorJobData>(
10341033
? e.message
10351034
: 'Unknown Error in Mail Processor, Check Logs'
10361035
);
1037-
span?.recordException(e as Error);
10381036
// Throw the error to be caught by the worker, and moving to failed jobs
10391037
throw e;
10401038
}

packages/database/index.ts

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,25 @@ if (opentelemetryEnabled) {
1212
const originalExecute = Connection.prototype.execute;
1313

1414
Connection.prototype.execute = async function (query, args, options) {
15-
return databaseTracer.startActiveSpan(`Database Query`, async (span) => {
15+
return databaseTracer.startActiveSpan(`Database Call`, async (span) => {
1616
if (span) {
17-
span.addEvent('database.query.start');
18-
span.setAttribute('database.statement', query);
17+
span.addEvent('db.call.start');
18+
span.setAttribute('db.statement', query);
1919
if (Array.isArray(args)) {
2020
span.setAttribute(
21-
'database.values',
22-
args.map(
23-
(v: string | null | number) => v?.toString?.() ?? 'Unknown'
24-
)
21+
'db.values',
22+
args.map((v: string | null | number) => {
23+
if (v === null) return 'null';
24+
if (typeof v === 'undefined') return 'undefined';
25+
return v?.toString?.() ?? 'Unknown';
26+
})
2527
);
2628
}
2729
}
2830
const result = await originalExecute
2931
// @ts-expect-error, don't care about types here
30-
.call(this, query, args, options)
31-
.catch((err: Error) => {
32-
span?.recordException(err);
33-
throw err;
34-
});
35-
span?.addEvent('database.query.end');
32+
.call(this, query, args, options);
33+
span?.addEvent('db.call.end');
3634
return result;
3735
});
3836
};

packages/otel/helpers.ts

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,18 @@ const { trace } = opentelemetryEnabled
66
? await import('@opentelemetry/api')
77
: { trace: undefined };
88

9+
const { wrapTracer } = opentelemetryEnabled
10+
? await import('@opentelemetry/api/experimental')
11+
: { wrapTracer: undefined };
12+
913
export function getTracer(name: string) {
10-
if (!trace)
14+
if (!trace || !wrapTracer)
1115
return {
1216
startActiveSpan: <Fn>(name: string, fn: (span?: Span) => Fn) => fn()
1317
};
14-
15-
const tracer = trace.getTracer(name);
18+
const tracer = wrapTracer(trace.getTracer(name));
1619
return {
17-
startActiveSpan<Fn>(name: string, fn: (span?: Span) => Fn) {
18-
return tracer.startActiveSpan(name, (span) => {
19-
const result = fn(span);
20-
if (result instanceof Promise) {
21-
void result.finally(() => span.end());
22-
return result;
23-
} else {
24-
span.end();
25-
return result;
26-
}
27-
});
28-
}
20+
startActiveSpan: tracer.withActiveSpan.bind(tracer)
2921
};
3022
}
3123

packages/otel/setup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export const setupOpentelemetry = ({
2323
name: string;
2424
version: string;
2525
}) => {
26+
console.info(`Setting up OpenTelemetry for ${name}@${version}`);
2627
const resource = new Resource({
2728
'service.name': name,
2829
'service.version': version
@@ -52,8 +53,8 @@ export const setupOpentelemetry = ({
5253

5354
registerInstrumentations({
5455
instrumentations: [
55-
new UndiciInstrumentation(),
5656
new HttpInstrumentation(),
57+
new UndiciInstrumentation(),
5758
new WinstonInstrumentation()
5859
]
5960
});

0 commit comments

Comments
 (0)