From 37a2a25f32271498ead0a3ff2a6f327fb13a32c5 Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Wed, 29 Mar 2023 19:56:59 -0400 Subject: [PATCH 1/4] Otlp env variables (#809) * standardize OTEL_* env vars Signed-off-by: Pierre Tessier * standardize OTEL_* env vars Signed-off-by: Pierre Tessier --------- Signed-off-by: Pierre Tessier Co-authored-by: Juliano Costa --- .env | 8 -------- docker-compose.yml | 37 ++++++++++++------------------------- 2 files changed, 12 insertions(+), 33 deletions(-) diff --git a/.env b/.env index 59fae6c33f..76152bf32d 100644 --- a/.env +++ b/.env @@ -23,16 +23,8 @@ ENV_PLATFORM=local OTEL_COLLECTOR_HOST=otelcol OTEL_COLLECTOR_PORT=4317 OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT} -OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} -OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} -OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces -# Exporter protocol configuration -OTEL_TRACES_EXPORTER=otlp -OTEL_METRICS_EXPORTER=otlp -OTEL_LOGS_EXPORTER=otlp - # OpenTelemetry Resource Definitions OTEL_RESOURCE_ATTRIBUTES="service.namespace=opentelemetry-demo" diff --git a/docker-compose.yml b/docker-compose.yml index 2b15f8fed1..9d3aa288c4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -44,8 +44,7 @@ services: restart: unless-stopped environment: - KAFKA_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=accountingservice @@ -75,13 +74,11 @@ services: environment: - AD_SERVICE_PORT - FEATURE_FLAG_GRPC_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - - OTEL_EXPORTER_OTLP_LOGS_ENDPOINT - OTEL_RESOURCE_ATTRIBUTES + - OTEL_LOGS_EXPORTER=otlp - OTEL_SERVICE_NAME=adservice - - OTEL_LOGS_EXPORTER depends_on: - otelcol logging: *logging @@ -139,8 +136,7 @@ services: - PRODUCT_CATALOG_SERVICE_ADDR - SHIPPING_SERVICE_ADDR - KAFKA_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=checkoutservice @@ -183,7 +179,7 @@ services: - "${CURRENCY_SERVICE_PORT}" environment: - CURRENCY_SERVICE_PORT - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES},service.name=currencyservice # The C++ SDK does not support OTEL_SERVICE_NAME depends_on: - otelcol @@ -234,11 +230,10 @@ services: environment: - FEATURE_FLAG_SERVICE_PORT - FEATURE_FLAG_GRPC_SERVICE_PORT - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc - OTEL_SERVICE_NAME=featureflagservice - DATABASE_URL=ecto://ffs:ffs@ffs_postgres:5432/ffs - - FEATURE_FLAG_SERVICE_PATH_ROOT="/feature" healthcheck: test: ["CMD", "curl", "-H", "baggage: synthetic_request=true", "-f", "http://localhost:${FEATURE_FLAG_SERVICE_PORT}"] depends_on: @@ -262,8 +257,7 @@ services: restart: unless-stopped environment: - KAFKA_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=frauddetectionservice @@ -300,13 +294,11 @@ services: - PRODUCT_CATALOG_SERVICE_ADDR - RECOMMENDATION_SERVICE_ADDR - SHIPPING_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES} - OTEL_EXPORTER_OTLP_ENDPOINT + - OTEL_RESOURCE_ATTRIBUTES=${OTEL_RESOURCE_ATTRIBUTES} - ENV_PLATFORM - OTEL_SERVICE_NAME=frontend - PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - WEB_OTEL_SERVICE_NAME=frontend-web depends_on: @@ -403,8 +395,7 @@ services: - "${PAYMENT_SERVICE_PORT}" environment: - PAYMENT_SERVICE_PORT - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=paymentservice @@ -431,8 +422,7 @@ services: environment: - PRODUCT_CATALOG_SERVICE_PORT - FEATURE_FLAG_GRPC_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=productcatalogservice @@ -487,8 +477,6 @@ services: - PRODUCT_CATALOG_SERVICE_ADDR - FEATURE_FLAG_GRPC_SERVICE_ADDR - OTEL_PYTHON_LOG_CORRELATION=true - - OTEL_TRACES_EXPORTER - - OTEL_METRICS_EXPORTER - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES @@ -519,7 +507,7 @@ services: environment: - SHIPPING_SERVICE_PORT - QUOTE_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:4317/v1/traces - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=shippingservice depends_on: @@ -566,8 +554,7 @@ services: restart: unless-stopped environment: - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT + - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=kafka From 954d35a815851e58da399d767af80bb0f20a7c9e Mon Sep 17 00:00:00 2001 From: Pierre Tessier Date: Wed, 29 Mar 2023 20:06:10 -0400 Subject: [PATCH 2/4] [frontend] fix http.status_code on error (#810) * fix http.status_code on error Signed-off-by: Pierre Tessier * only end span when synthetic Signed-off-by: Pierre Tessier * fix http.status_code on error Signed-off-by: Pierre Tessier --------- Signed-off-by: Pierre Tessier --- CHANGELOG.md | 2 ++ .../telemetry/InstrumentationMiddleware.ts | 21 ++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d5e091dc4..7fe681f53c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,8 @@ release. ([#799](https://github.com/open-telemetry/opentelemetry-demo/pull/799)) * Update frontend JavaScript SDKs to: 1.10.1/0.36.x ([#805](https://github.com/open-telemetry/opentelemetry-demo/pull/805)) +* Fix http.status_code on error in frontend + ([#810](https://github.com/open-telemetry/opentelemetry-demo/pull/810)) ## v0.1.0 diff --git a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts index 226ff55cd7..52adf9ed60 100644 --- a/src/frontend/utils/telemetry/InstrumentationMiddleware.ts +++ b/src/frontend/utils/telemetry/InstrumentationMiddleware.ts @@ -40,7 +40,6 @@ const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { attributes: { 'app.synthetic_request': true, [SemanticAttributes.HTTP_TARGET]: target, - [SemanticAttributes.HTTP_STATUS_CODE]: response.statusCode, [SemanticAttributes.HTTP_METHOD]: method, [SemanticAttributes.HTTP_USER_AGENT]: headers['user-agent'] || '', [SemanticAttributes.HTTP_URL]: `${headers.host}${url}`, @@ -56,30 +55,28 @@ const InstrumentationMiddleware = (handler: NextApiHandler): NextApiHandler => { span.setAttribute(AttributeNames.SESSION_ID, request.query['sessionId']); } + let httpStatus = 200; try { await runWithSpan(span, async () => handler(request, response)); + httpStatus = response.statusCode; } catch (error) { span.recordException(error as Exception); span.setStatus({ code: SpanStatusCode.ERROR }); + httpStatus = 500; throw error; } finally { - requestCounter.add(1, { method, target, status: response.statusCode }); - span.end(); + requestCounter.add(1, { method, target, status: httpStatus }); + span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, httpStatus); + if (baggage?.getEntry('synthetic_request')?.value == 'true') { + span.end(); + } } }; }; async function runWithSpan(parentSpan: Span, fn: () => Promise) { const ctx = trace.setSpan(context.active(), parentSpan); - - try { - return await context.with(ctx, fn); - } catch (error) { - parentSpan.recordException(error as Exception); - parentSpan.setStatus({ code: SpanStatusCode.ERROR }); - - throw error; - } + return await context.with(ctx, fn); } export default InstrumentationMiddleware; From a155ea3c7750c2b51205fb22781083d4503e3db2 Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Wed, 29 Mar 2023 18:23:50 -0700 Subject: [PATCH 3/4] Fix to shipping calculation (#814) --- CHANGELOG.md | 2 ++ src/frontend/components/CartItems/CartItems.tsx | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fe681f53c..3f35a9f9eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ release. ([#805](https://github.com/open-telemetry/opentelemetry-demo/pull/805)) * Fix http.status_code on error in frontend ([#810](https://github.com/open-telemetry/opentelemetry-demo/pull/810)) +* Fix bug in shipping calculation + ([#814](https://github.com/open-telemetry/opentelemetry-demo/pull/814)) ## v0.1.0 diff --git a/src/frontend/components/CartItems/CartItems.tsx b/src/frontend/components/CartItems/CartItems.tsx index 095ae4d7e5..bef722fb53 100644 --- a/src/frontend/components/CartItems/CartItems.tsx +++ b/src/frontend/components/CartItems/CartItems.tsx @@ -50,7 +50,7 @@ const CartItems = ({ productList, shouldShowPrice = true }: IProps) => { const unitSum = productList.reduce((acc, { product: { priceUsd: { units = 0 } = {} } }) => acc + Number(units), 0) + - shippingConst?.units || 0 + nanoExceed; + (shippingConst?.units || 0) + nanoExceed; return { units: unitSum, From 693fe35d289b6869cf9902853f0575251ca4d828 Mon Sep 17 00:00:00 2001 From: Carter Socha <43380952+cartersocha@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:03:24 -0700 Subject: [PATCH 4/4] reduce kafka mem allocation (#798) --- docker-compose.yml | 4 ++-- src/kafka/Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 9d3aa288c4..f53dbc5bfe 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -550,7 +550,7 @@ services: deploy: resources: limits: - memory: 750M + memory: 500M restart: unless-stopped environment: - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 @@ -558,7 +558,7 @@ services: - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=kafka - - KAFKA_HEAP_OPTS=-Xmx400m -Xms400m + - KAFKA_HEAP_OPTS=-Xmx200m -Xms200m healthcheck: test: nc -z kafka 9092 start_period: 10s diff --git a/src/kafka/Dockerfile b/src/kafka/Dockerfile index 5c0e9d7453..d8b3e7d4eb 100644 --- a/src/kafka/Dockerfile +++ b/src/kafka/Dockerfile @@ -32,7 +32,7 @@ ENV KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=0 ENV KAFKA_PROCESS_ROLES=controller,broker ENV KAFKA_NODE_ID=1 ENV KAFKA_METADATA_LOG_SEGMENT_MS=15000 -ENV KAFKA_METADATA_MAX_RETENTION_MS=1200000 +ENV KAFKA_METADATA_MAX_RETENTION_MS=60000 ENV KAFKA_METADATA_LOG_MAX_RECORD_BYTES_BETWEEN_SNAPSHOTS=2800 ENV KAFKA_AUTO_CREATE_TOPICS_ENABLE=true ENV KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1