Skip to content

Commit 06023dd

Browse files
Imageprovider (#1462)
* [Imageprovider] Create Nginx service to host images, add instrumentation to it Signed-off-by: krisztian.klucsik <krisztian.klucsik@dynatrace.com> * add missing OTEL_RESOURCE_ATTRIBUTES flags * adjust otel config * fix leading / --------- Signed-off-by: krisztian.klucsik <krisztian.klucsik@dynatrace.com> Co-authored-by: Austin Parker <austin@ap2.io>
1 parent 59cdb0a commit 06023dd

19 files changed

+137
-0
lines changed

.env

+4
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ FRONTEND_HOST=frontend
7676
ENVOY_PORT=8080
7777
FRONTEND_PROXY_ADDR=frontend-proxy:${ENVOY_PORT}
7878

79+
# Image Provider
80+
IMAGE_PROVIDER_HOST=imageprovider
81+
IMAGE_PROVIDER_PORT=8081
82+
7983
# Load Generator
8084
LOCUST_WEB_PORT=8089
8185
LOCUST_USERS=10

CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ the release.
5353
([#1470](https://github.com/open-telemetry/opentelemetry-demo/pull/1470))
5454
* [frontend] disable instrumentation-fs library
5555
([#1473](https://github.com/open-telemetry/opentelemetry-demo/pull/1473))
56+
* [Imageprovider] Create Nginx service to host images, add instrumentation to it
57+
([#1462](https://github.com/open-telemetry/opentelemetry-demo/pull/1462))
5658

5759
## 1.8.0
5860

docker-compose.minimal.yml

+31
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,8 @@ services:
228228
condition: service_started
229229
otelcol:
230230
condition: service_started
231+
imageprovider:
232+
condition: service_started
231233
logging: *logging
232234

233235
# Frontend Proxy (Envoy)
@@ -256,6 +258,8 @@ services:
256258
- GRAFANA_SERVICE_HOST
257259
- JAEGER_SERVICE_PORT
258260
- JAEGER_SERVICE_HOST
261+
- IMAGE_PROVIDER_HOST
262+
- IMAGE_PROVIDER_PORT
259263
- OTEL_COLLECTOR_HOST
260264
- OTEL_COLLECTOR_PORT_GRPC
261265
- OTEL_COLLECTOR_PORT_HTTP
@@ -271,6 +275,33 @@ services:
271275
grafana:
272276
condition: service_started
273277

278+
# Imageprovider
279+
imageprovider:
280+
image: ${IMAGE_NAME}:${DEMO_VERSION}-imageprovider
281+
container_name: imageprovider
282+
build:
283+
context: ./
284+
dockerfile: ./src/imageprovider/Dockerfile
285+
cache_from:
286+
- ${IMAGE_NAME}:${IMAGE_VERSION}-imageprovider
287+
deploy:
288+
resources:
289+
limits:
290+
memory: 120M
291+
restart: unless-stopped
292+
ports:
293+
- "${IMAGE_PROVIDER_PORT}"
294+
environment:
295+
- IMAGE_PROVIDER_PORT
296+
- OTEL_COLLECTOR_HOST
297+
- OTEL_COLLECTOR_PORT_GRPC
298+
- OTEL_SERVICE_NAME=imageprovider
299+
- OTEL_RESOURCE_ATTRIBUTES
300+
depends_on:
301+
otelcol:
302+
condition: service_started
303+
logging: *logging
304+
274305
# Load Generator
275306
loadgenerator:
276307
image: ${IMAGE_NAME}:${DEMO_VERSION}-loadgenerator

docker-compose.yml

+31
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,8 @@ services:
309309
condition: service_started
310310
otelcol:
311311
condition: service_started
312+
imageprovider:
313+
condition: service_started
312314
logging: *logging
313315

314316
# Frontend Proxy (Envoy)
@@ -336,6 +338,8 @@ services:
336338
- JAEGER_SERVICE_PORT
337339
- JAEGER_SERVICE_HOST
338340
- OTEL_COLLECTOR_HOST
341+
- IMAGE_PROVIDER_HOST
342+
- IMAGE_PROVIDER_PORT
339343
- OTEL_COLLECTOR_PORT_GRPC
340344
- OTEL_COLLECTOR_PORT_HTTP
341345
- OTEL_RESOURCE_ATTRIBUTES
@@ -350,6 +354,33 @@ services:
350354
grafana:
351355
condition: service_started
352356

357+
# Imageprovider
358+
imageprovider:
359+
image: ${IMAGE_NAME}:${DEMO_VERSION}-imageprovider
360+
container_name: imageprovider
361+
build:
362+
context: ./
363+
dockerfile: ./src/imageprovider/Dockerfile
364+
cache_from:
365+
- ${IMAGE_NAME}:${IMAGE_VERSION}-imageprovider
366+
deploy:
367+
resources:
368+
limits:
369+
memory: 120M
370+
restart: unless-stopped
371+
ports:
372+
- "${IMAGE_PROVIDER_PORT}"
373+
environment:
374+
- IMAGE_PROVIDER_PORT
375+
- OTEL_COLLECTOR_HOST
376+
- OTEL_COLLECTOR_PORT_GRPC
377+
- OTEL_SERVICE_NAME=imageprovider
378+
- OTEL_RESOURCE_ATTRIBUTES
379+
depends_on:
380+
otelcol:
381+
condition: service_started
382+
logging: *logging
383+
353384
# Load Generator
354385
loadgenerator:
355386
image: ${IMAGE_NAME}:${DEMO_VERSION}-loadgenerator

src/frontendproxy/envoy.tmpl.yaml

+14
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ static_resources:
4545
route: { cluster: jaeger }
4646
- match: { prefix: "/grafana" }
4747
route: { cluster: grafana }
48+
- match: { prefix: "/images/" }
49+
route: { cluster: imageprovider, prefix_rewrite: "/" }
4850
- match: { prefix: "/" }
4951
route: { cluster: frontend }
5052
http_filters:
@@ -94,6 +96,18 @@ static_resources:
9496
socket_address:
9597
address: ${FRONTEND_HOST}
9698
port_value: ${FRONTEND_PORT}
99+
- name: imageprovider
100+
type: STRICT_DNS
101+
lb_policy: ROUND_ROBIN
102+
load_assignment:
103+
cluster_name: imageprovider
104+
endpoints:
105+
- lb_endpoints:
106+
- endpoint:
107+
address:
108+
socket_address:
109+
address: ${IMAGE_PROVIDER_HOST}
110+
port_value: ${IMAGE_PROVIDER_PORT}
97111
- name: loadgen
98112
type: STRICT_DNS
99113
lb_policy: ROUND_ROBIN

src/imageprovider/Dockerfile

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Copyright The OpenTelemetry Authors
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
FROM nginx:1.25.3
5+
6+
RUN apt-get update ; apt-get install lsb-release --no-install-recommends --no-install-suggests -y
7+
8+
# This file is needed for nginx-module-otel to be found.
9+
RUN echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/debian `lsb_release -cs` nginx" | tee /etc/apt/sources.list.d/nginx.list
10+
11+
RUN apt-get update ; apt-get install nginx-module-otel --no-install-recommends --no-install-suggests -y
12+
13+
RUN mkdir /static
14+
COPY src/imageprovider/static /static
15+
16+
EXPOSE ${IMAGE_PROVIDER_PORT}
17+
18+
STOPSIGNAL SIGQUIT
19+
20+
COPY src/imageprovider/nginx.conf.template /nginx.conf.template
21+
22+
# Start nginx
23+
CMD ["/bin/sh" , "-c" , "envsubst '$OTEL_COLLECTOR_HOST $IMAGE_PROVIDER_PORT $OTEL_COLLECTOR_PORT_GRPC $OTEL_SERVICE_NAME' < /nginx.conf.template > /etc/nginx/nginx.conf && cat /etc/nginx/nginx.conf && exec nginx -g 'daemon off;'"]

src/imageprovider/nginx.conf.template

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
load_module modules/ngx_otel_module.so;
2+
3+
events {
4+
worker_connections 1024;
5+
}
6+
7+
http {
8+
otel_exporter {
9+
endpoint ${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT_GRPC};
10+
}
11+
otel_trace on;
12+
otel_trace_context propagate;
13+
otel_service_name ${OTEL_SERVICE_NAME};
14+
otel_span_name imageprovider;
15+
16+
17+
include mime.types;
18+
sendfile on;
19+
server {
20+
listen ${IMAGE_PROVIDER_PORT};
21+
listen [::]:${IMAGE_PROVIDER_PORT};
22+
23+
resolver 127.0.0.11;
24+
autoindex off;
25+
26+
server_name _;
27+
server_tokens off;
28+
29+
root /static;
30+
gzip_static on;
31+
}
32+
}
File renamed without changes.

0 commit comments

Comments
 (0)