From c8fd0ae38351cc221555487762c1de2306950f7a Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 21:55:34 -0400 Subject: [PATCH 1/7] use semantic convention for session.id --- src/frontend/utils/enums/AttributeNames.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/utils/enums/AttributeNames.ts b/src/frontend/utils/enums/AttributeNames.ts index ceda8c1d61..e0820bae08 100644 --- a/src/frontend/utils/enums/AttributeNames.ts +++ b/src/frontend/utils/enums/AttributeNames.ts @@ -2,5 +2,5 @@ // SPDX-License-Identifier: Apache-2.0 export enum AttributeNames { - SESSION_ID = 'app.session.id' + SESSION_ID = 'session.id' } From 0b7be1bfaab78039ac949634927a5730da46e357 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 21:55:50 -0400 Subject: [PATCH 2/7] reunite trace --- .../telemetry/InstrumentationMiddleware.ts | 32 ++----------------- 1 file changed, 3 insertions(+), 29 deletions(-) diff --git a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts index 1c1fde12c5..0af393dcb5 100644 --- a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts +++ b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { NextApiHandler } from 'next'; -import { context, Exception, propagation, Span, SpanKind, SpanStatusCode, trace } from '@opentelemetry/api'; +import { context, Exception, Span, SpanStatusCode, trace } from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { metrics } from '@opentelemetry/api'; import { AttributeNames } from '../enums/AttributeNames'; @@ -12,33 +12,10 @@ const requestCounter = meter.createCounter('app.frontend.requests'); const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { return async (request, response) => { - const { headers, method, url = '', httpVersion } = request; + const {method, url = ''} = request; const [target] = url.split('?'); - let span; - const baggage = propagation.getBaggage(context.active()); - if (baggage?.getEntry('synthetic_request')?.value == 'true') { - // if synthetic_request baggage is set, create a new trace linked to the span in context - // this span will look similar to the auto-instrumented HTTP span - const syntheticSpan = trace.getSpan(context.active()) as Span; - const tracer = trace.getTracer(process.env.OTEL_SERVICE_NAME as string); - span = tracer.startSpan(`HTTP ${method}`, { - root: true, - kind: SpanKind.SERVER, - links: [{ context: syntheticSpan.spanContext() }], - attributes: { - 'app.synthetic_request': true, - [SemanticAttributes.HTTP_TARGET]: target, - [SemanticAttributes.HTTP_METHOD]: method, - [SemanticAttributes.HTTP_USER_AGENT]: headers['user-agent'] || '', - [SemanticAttributes.HTTP_URL]: `${headers.host}${url}`, - [SemanticAttributes.HTTP_FLAVOR]: httpVersion, - }, - }); - } else { - // continue current trace/span - span = trace.getSpan(context.active()) as Span; - } + const span = trace.getSpan(context.active()) as Span; if (request.query['sessionId'] != null) { span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); @@ -56,9 +33,6 @@ const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { } finally { requestCounter.add(1, { method, target, status: httpStatus }); span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, httpStatus); - if (baggage?.getEntry('synthetic_request')?.value == 'true') { - span.end(); - } } }; }; From f63c07d23703fa2684b010b30a77b7dc05800f61 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 22:43:47 -0400 Subject: [PATCH 3/7] add session id to baggage --- src/frontend/utils/telemetry/InstrumentationMiddleware.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts index 0af393dcb5..2456d158e9 100644 --- a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts +++ b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { NextApiHandler } from 'next'; -import { context, Exception, Span, SpanStatusCode, trace } from '@opentelemetry/api'; +import {BaggageEntry, context, Exception, propagation, Span, SpanStatusCode, trace} from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { metrics } from '@opentelemetry/api'; import { AttributeNames } from '../enums/AttributeNames'; @@ -19,6 +19,8 @@ const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { if (request.query['sessionId'] != null) { span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); + const baggage = propagation.getBaggage(context.active()); + baggage?.setEntry(AttributeNames.SESSION_ID, { value: request.query['sessionId'] } as BaggageEntry); } let httpStatus = 200; From 43f1213ff6b56ee1481e72fb02c82d62dfb4bcec Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 22:47:38 -0400 Subject: [PATCH 4/7] frontend - reunite trace and add session id to baggage --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1d437a8704..66037f8f76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ the release. ## Unreleased +* [frontend] reunite trace and add session id to baggage + ([#1506](https://github.com/open-telemetry/opentelemetry-demo/pull/1506)) * [frauddetectionservice] use span links when consuming from Kafka ([#1501](https://github.com/open-telemetry/opentelemetry-demo/pull/1501)) From f8c6a5c65ba60fe79e1bba2115e3b287a27d82c5 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 23:02:09 -0400 Subject: [PATCH 5/7] frontend - reunite trace --- CHANGELOG.md | 2 +- .../utils/telemetry/InstrumentationMiddleware.ts | 9 +-------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66037f8f76..261dee4254 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ the release. ## Unreleased -* [frontend] reunite trace and add session id to baggage +* [frontend] reunite trace from loadgenerator ([#1506](https://github.com/open-telemetry/opentelemetry-demo/pull/1506)) * [frauddetectionservice] use span links when consuming from Kafka ([#1501](https://github.com/open-telemetry/opentelemetry-demo/pull/1501)) diff --git a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts index 2456d158e9..ed389aff8d 100644 --- a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts +++ b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts @@ -2,10 +2,9 @@ // SPDX-License-Identifier: Apache-2.0 import { NextApiHandler } from 'next'; -import {BaggageEntry, context, Exception, propagation, Span, SpanStatusCode, trace} from '@opentelemetry/api'; +import {context, Exception, Span, SpanStatusCode, trace} from '@opentelemetry/api'; import { SemanticAttributes } from '@opentelemetry/semantic-conventions'; import { metrics } from '@opentelemetry/api'; -import { AttributeNames } from '../enums/AttributeNames'; const meter = metrics.getMeter('frontend'); const requestCounter = meter.createCounter('app.frontend.requests'); @@ -17,12 +16,6 @@ const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { const span = trace.getSpan(context.active()) as Span; - if (request.query['sessionId'] != null) { - span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); - const baggage = propagation.getBaggage(context.active()); - baggage?.setEntry(AttributeNames.SESSION_ID, { value: request.query['sessionId'] } as BaggageEntry); - } - let httpStatus = 200; try { await runWithSpan(span, async () => handler(request, response)); From 461a84c8ce3d6f4ff65f6ec99487880022a675c6 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 23:10:36 -0400 Subject: [PATCH 6/7] frontend - reunite trace --- src/frontend/utils/enums/AttributeNames.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/utils/enums/AttributeNames.ts b/src/frontend/utils/enums/AttributeNames.ts index e0820bae08..ceda8c1d61 100644 --- a/src/frontend/utils/enums/AttributeNames.ts +++ b/src/frontend/utils/enums/AttributeNames.ts @@ -2,5 +2,5 @@ // SPDX-License-Identifier: Apache-2.0 export enum AttributeNames { - SESSION_ID = 'session.id' + SESSION_ID = 'app.session.id' } From c0d7fb7b76fdff07776763851b68aee6843b60f1 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Sat, 6 Apr 2024 23:12:55 -0400 Subject: [PATCH 7/7] frontend - reunite trace --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 261dee4254..bb45909690 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,10 @@ the release. ## Unreleased -* [frontend] reunite trace from loadgenerator - ([#1506](https://github.com/open-telemetry/opentelemetry-demo/pull/1506)) * [frauddetectionservice] use span links when consuming from Kafka ([#1501](https://github.com/open-telemetry/opentelemetry-demo/pull/1501)) +* [frontend] reunite trace from loadgenerator + ([#1506](https://github.com/open-telemetry/opentelemetry-demo/pull/1506)) ## 1.9.0