Skip to content

Commit c7a260f

Browse files
committed
Now piping data to the lgtm stack instead of seperate prom, grafana, solr-exporter
1 parent 68097e0 commit c7a260f

4 files changed

Lines changed: 50 additions & 89 deletions

File tree

blacklight/Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ gem 'jbuilder', '~> 2.7'
2828
# Reduces boot times through caching; required in config/boot.rb
2929
gem 'bootsnap', '>= 1.4.4', require: false
3030

31-
# Instrument and report to Jaeger what is happening.
31+
# Instrument and report to LGTM OTLP collector
3232
gem 'opentelemetry-sdk'
33-
gem 'opentelemetry-exporter-jaeger'
33+
gem 'opentelemetry-exporter-otlp'
3434
gem 'opentelemetry-instrumentation-all'
3535

3636
group :development, :test do

blacklight/config/initializers/opentelemetry.rb

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
require 'opentelemetry/sdk'
2-
require 'opentelemetry/exporter/jaeger'
2+
require 'opentelemetry/exporter/otlp'
33
require 'opentelemetry/instrumentation/all'
44

5-
# Configure the sdk with the Jaeger collector exporter
6-
ENV['OTEL_TRACES_EXPORTER'] = 'jaeger'
5+
# Configure the sdk with the OTLP exporter for LGTM stack
6+
ENV['OTEL_TRACES_EXPORTER'] = 'otlp'
77

88
OpenTelemetry::SDK.configure do |c|
99
c.service_name = 'blacklight'
10-
#c.use_all() # enables all instrumentation! We should prune this down.
10+
11+
# Configure OTLP exporter
12+
# The endpoint is set via OTEL_EXPORTER_OTLP_ENDPOINT environment variable
13+
# which should be http://lgtm:4318 for HTTP or http://lgtm:4317 for gRPC
14+
1115
##### Instruments
1216
c.use 'OpenTelemetry::Instrumentation::Rack'
1317
#c.use 'OpenTelemetry::Instrumentation::ActionPack'
@@ -23,4 +27,4 @@
2327
#c.use 'OpenTelemetry::Instrumentation::RestClient'
2428
#c.use 'OpenTelemetry::Instrumentation::RubyKafka'
2529
#c.use 'OpenTelemetry::Instrumentation::Sidekiq'
26-
end
30+
end

docker-compose.yml

Lines changed: 35 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,12 @@ services:
1414
environment:
1515
- SOLR_URL=http://${SOLR_USER}:${SOLR_PASSWORD}@solr1:8983/solr/ecommerce
1616
- PORT=3000
17-
- OTEL_EXPORTER_JAEGER_ENDPOINT=http://jaeger:14268/api/traces
17+
- OTEL_SERVICE_NAME=blacklight
18+
- OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
19+
- OTEL_TRACES_EXPORTER=otlp
1820
depends_on:
1921
- solr1
20-
# - jaeger
22+
- lgtm
2123

2224
mysql:
2325
container_name: mysql
@@ -74,6 +76,9 @@ services:
7476
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
7577
- OTEL_SERVICE_NAME=solr
7678
- OTEL_SDK_DISABLED=${OTEL_SDK_DISABLED}
79+
- OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
80+
- SOLR_METRICS_OTLP_GRPC_EXPORTER_ENDPOINT=http://lgtm:4317
81+
- SOLR_METRICS_OTLP_EXPORTER_ENABLED=${SOLR_METRICS_OTLP_EXPORTER_ENABLED}
7782
- "SOLR_OPTS=-Dsolr.auth.jwt.outbound.http.enabled=true -Dsolr.modules=jwt-auth,opentelemetry"
7883
depends_on:
7984
- zoo1
@@ -92,6 +97,9 @@ services:
9297
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
9398
- OTEL_SERVICE_NAME=solr
9499
- OTEL_SDK_DISABLED=${OTEL_SDK_DISABLED}
100+
- OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
101+
- SOLR_METRICS_OTLP_GRPC_EXPORTER_ENDPOINT=http://lgtm:4317
102+
- SOLR_METRICS_OTLP_EXPORTER_ENABLED=${SOLR_METRICS_OTLP_EXPORTER_ENABLED}
95103
- "SOLR_OPTS=-Dsolr.auth.jwt.outbound.http.enabled=true -Dsolr.modules=jwt-auth,opentelemetry"
96104
depends_on:
97105
- zoo1
@@ -110,6 +118,9 @@ services:
110118
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
111119
- OTEL_SERVICE_NAME=solr
112120
- OTEL_SDK_DISABLED=${OTEL_SDK_DISABLED}
121+
- OTEL_EXPORTER_OTLP_ENDPOINT=http://lgtm:4317
122+
- SOLR_METRICS_OTLP_GRPC_EXPORTER_ENDPOINT=http://lgtm:4317
123+
- SOLR_METRICS_OTLP_EXPORTER_ENABLED=${SOLR_METRICS_OTLP_EXPORTER_ENABLED}
113124
- "SOLR_OPTS=-Dsolr.auth.jwt.outbound.http.enabled=true -Dsolr.modules=jwt-auth,opentelemetry"
114125
depends_on:
115126
- zoo1
@@ -118,7 +129,7 @@ services:
118129
- keycloak
119130

120131
zoo1:
121-
image: zookeeper:3.9.2
132+
image: zookeeper:3.9.5
122133
container_name: zoo1
123134
hostname: zoo1
124135
ports:
@@ -132,7 +143,7 @@ services:
132143

133144

134145
zoo2:
135-
image: zookeeper:3.9.2
146+
image: zookeeper:3.9.5
136147
container_name: zoo2
137148
hostname: zoo2
138149
ports:
@@ -146,7 +157,7 @@ services:
146157

147158

148159
zoo3:
149-
image: zookeeper:3.9.2
160+
image: zookeeper:3.9.5
150161
container_name: zoo3
151162
hostname: zoo3
152163
ports:
@@ -160,7 +171,7 @@ services:
160171

161172
quepid:
162173
container_name: quepid
163-
image: o19s/quepid:8.3.0
174+
image: o19s/quepid:8.5.0
164175
ports:
165176
- 3000:3000
166177
command: "foreman s -f Procfile"
@@ -206,82 +217,9 @@ services:
206217
reservations:
207218
memory: 512M
208219

209-
210-
solr-exporter:
211-
image: solr:9.1.1
212-
container_name: solr-exporter
213-
hostname: solr-exporter
214-
ports:
215-
- 9854:9854
216-
command: /bin/bash -c "/usr/bin/wait-for-http-200.sh; export JAVA_OPTS='-Dsolr.httpclient.builder.factory=org.apache.solr.client.solrj.impl.PreemptiveBasicAuthClientBuilderFactory -Dsolr.httpclient.config=/home/basicauth.properties'; ./contrib/prometheus-exporter/bin/solr-exporter -p 9854 -z zoo1:2181,zoo2:2181,zoo3:2181 -f ./contrib/prometheus-exporter/conf/solr-exporter-config.xml -n 8 -s 15"
217-
volumes:
218-
- ./solr-exporter/wait-for-http-200.sh:/usr/bin/wait-for-http-200.sh
219-
- ./solr-exporter/basicauth.properties:/home/basicauth.properties
220-
depends_on:
221-
- solr1
222-
- solr2
223-
- solr3
224-
225-
prometheus:
226-
image: prom/prometheus:v2.32.1
227-
container_name: prometheus
228-
restart: always
229-
hostname: prometheus
230-
healthcheck:
231-
test: ["CMD", "wget", "--tries=1", "--spider", "http://localhost:9090"]
232-
interval: 5s
233-
timeout: 10s
234-
ports:
235-
- 9090:9090
236-
command:
237-
- '--config.file=/etc/prometheus/prometheus.yml'
238-
volumes:
239-
- ./prometheus/:/etc/prometheus/
240-
241-
grafana:
242-
image: grafana/grafana:7.5.17
243-
container_name: grafana
244-
restart: unless-stopped
245-
hostname: grafana
246-
healthcheck:
247-
test: ["CMD", "wget", "--tries=1", "--spider", "http://localhost:3000"]
248-
interval: 5s
249-
timeout: 10s
250-
ports:
251-
- 9091:3000
252-
volumes:
253-
- ./grafana/provisioning/:/etc/grafana/provisioning/
254-
environment:
255-
- GF_SECURITY_ADMIN_PASSWORD=${GF_SECURITY_ADMIN_PASSWORD}
256-
- GF_USERS_ALLOW_SIGN_UP=true
257-
depends_on:
258-
- prometheus
259-
260-
jaeger:
261-
image: jaegertracing/all-in-one:1.39
262-
container_name: jaeger
263-
restart: always
264-
hostname: jaegertracing
265-
ports:
266-
- 6831:6831/udp
267-
- 6832:6832/udp
268-
- 5778:5778
269-
- 16686:16686
270-
- 4317:4317
271-
- 4318:4318
272-
- 14250:14250
273-
- 14268:14268
274-
- 14269:14269
275-
- 9411:9411
276-
volumes:
277-
- ./grafana/provisioning/:/etc/grafana/provisioning/
278-
environment:
279-
- COLLECTOR_ZIPKIN_HOST_PORT=:9411
280-
- COLLECTOR_OTLP_ENABLED=true
281-
282220
keycloak:
283-
image: chorus-keycloak
284221
container_name: keycloak
222+
image: chorus-keycloak
285223
build:
286224
context: ./keycloak
287225
dockerfile: Dockerfile
@@ -301,3 +239,20 @@ services:
301239
- KEYCLOAK_ADMIN=admin
302240
- KEYCLOAK_ADMIN_PASSWORD=password
303241
- DB_VENDOR=h2
242+
243+
244+
lgtm:
245+
container_name: lgtm
246+
image: grafana/otel-lgtm:latest
247+
ports:
248+
- "9091:3000" # Grafana UI
249+
- "4317:4317" # OTLP gRPC receiver
250+
- "4318:4318" # OTLP HTTP receiver
251+
# Come back to this with https://github.com/grafana/docker-otel-lgtm?tab=readme-ov-file#add-custom-dashboards
252+
#volumes:
253+
# - ./grafana/provisioning/dashboards:/otel-lgtm/grafana/conf/provisioning/dashboards/
254+
# - ./grafana/provisioning/datasources:/otel-lgtm/grafana/conf/provisioning/datasources/
255+
environment:
256+
- GF_SECURITY_ADMIN_USER=admin
257+
- GF_SECURITY_ADMIN_PASSWORD=password
258+
- GF_USERS_ALLOW_SIGN_UP=true

quickstart.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@ check_prerequisites
5757
services="blacklight solr1 solr2 solr3 keycloak"
5858

5959
if $observability; then
60-
#export JAEGER_SAMPLER_PARAM="1"
61-
services="${services} grafana solr-exporter jaeger"
60+
export SOLR_METRICS_OTLP_EXPORTER_ENABLED=true
61+
export OTEL_SDK_DISABLED=false
62+
services="${services} lgtm"
6263
else
6364
# Prevents OpenTelementry in Solr from attempting to send events.
65+
export SOLR_METRICS_OTLP_EXPORTER_ENABLED=false
6466
export OTEL_SDK_DISABLED=true
6567
fi
6668

0 commit comments

Comments
 (0)