Skip to content

Commit 1a2bd35

Browse files
committed
CH and friends
1 parent 5ff7aa0 commit 1a2bd35

22 files changed

+12509
-136
lines changed

lib/config/env.properties

+4-15
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ BROWSERUP_LOCKBOX_MASTER_KEY=439e901f30a3ce31836dbc81e67411e1f84f43491740ca0f91d
77
BROWSERUP_GRID_JAVA_API_HOST=grid-java-api
88
BROWSERUP_GRID_JAVA_API_PORT=23001
99

10-
BROWSERUP_MYSQL_HOST=mysql
11-
BROWSERUP_MYSQL_PORT=23002
12-
BROWSERUP_MYSQL_PASSWORD=just_testing
13-
BROWSERUP_MYSQL_USERNAME=browserup
14-
1510
BROWSERUP_S3_MINIO_HOST=minio
1611
BROWSERUP_S3_MINIO_PORT_1=23003
1712
BROWSERUP_S3_MINIO_PORT_2=23004
@@ -28,20 +23,11 @@ BROWSERUP_ZOOKEEPER_HOST=zookeeper
2823
BROWSERUP_ZOOKEEPER_CLIENT_PORT=23008
2924
BROWSERUP_ZOO_MAX_CLIENT_CNXNS=500
3025

31-
BROWSERUP_REDIS_HOST=redis
32-
BROWSERUP_REDIS_PORT=23009
26+
BROWSERUP_CLICKHOUSE_HOST=clickhouse
3327

3428
BROWSERUP_CHRONOGRAF_HOST=chronograf
3529
BROWSERUP_CHRONOGRAF_PORT=23010
3630

37-
BROWSERUP_INFLUX_DB_HOST=influxdb
38-
BROWSERUP_INFLUX_DB_PORT=23011
39-
BROWSERUP_INFLUX_DB_NAME=browserup
40-
BROWSERUP_INFLUX_DB_USER=browserup
41-
BROWSERUP_INFLUX_TEST_DB_HOST=influx-test-db
42-
BROWSERUP_INFLUX_TEST_DB_PORT=23011
43-
BROWSERUP_INFLUX_DB_PASSWORD=just_testing
44-
4531
BROWSERUP_LOKI_HOST=loki
4632

4733
BROWSERUP_S3_MINIO_HOST_PORT_1=23012
@@ -52,3 +38,6 @@ BROWSERUP_GRAFANA_PASSWORD=just_testing
5238

5339
BROWSERUP_PRIVATE_DNS_NAMESPACE_NAME=browserup-internal.com
5440
BROWSERUP_CLUSTER_PUBLIC_IP=localhost
41+
42+
BROWSERUP_NATS_URLS=nats://nats:4222,nats://nats-1:4222
43+
BROWSERUP_NATS_SERVER_LIST=nats:4222,nats-1:4222

lib/docker_compose/docker-compose.yml

+67-108
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,14 @@ services:
66
backend-services:
77
image: busybox
88
depends_on:
9-
- chronograf
10-
- influxdb
11-
- mysql
129
- rabbitmq
13-
- redis
1410
- zookeeper
1511
- minio
1612
- grafana
1713

1814
backend-services-nodb:
1915
image: busybox
2016
depends_on:
21-
- chronograf
22-
- influxdb
2317
- rabbitmq
2418
- zookeeper
2519

@@ -61,12 +55,7 @@ services:
6155
- BROWSERUP_RABBITMQ_DEFAULT_PASS=${BROWSERUP_RABBITMQ_DEFAULT_PASS}
6256
- BROWSERUP_RABBITMQ_QUEUE_PORT=5672
6357
- BROWSERUP_ZOOKEEPER_HOST=${BROWSERUP_ZOOKEEPER_HOST}
64-
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=2181
65-
- BROWSERUP_INFLUX_DB_HOST=${BROWSERUP_INFLUX_DB_HOST}
66-
- BROWSERUP_INFLUX_DB_PORT=8086
67-
- BROWSERUP_INFLUX_DB_NAME=browserup
68-
- BROWSERUP_INFLUX_DB_USER=browserup
69-
- BROWSERUP_INFLUX_DB_PASSWORD=${BROWSERUP_INFLUX_DB_PASSWORD}
58+
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=9181
7059
- BROWSERUP_MINION_VUS=1
7160
- BROWSERUP_MAX_MINIONS_PER_EC2_INSTANCE=${BROWSERUP_MAX_MINIONS_PER_EC2_INSTANCE}
7261
- BROWSERUP_IS_CLOUD=false
@@ -88,8 +77,8 @@ services:
8877
- BROWSERUP_S3_MINIO_HOST_PORT_1=${BROWSERUP_S3_MINIO_PORT_1}
8978
- BROWSERUP_S3_MINIO_ARTIFACTS_BUCKET=${BROWSERUP_S3_MINIO_ARTIFACTS_BUCKET}
9079
- BROWSERUP_CLUSTER_NAME=${BROWSERUP_CLUSTER_NAME}
80+
- BROWSERUP_NATS_URLS=${BROWSERUP_NATS_URLS}
9181
depends_on:
92-
- influxdb
9382
- zookeeper
9483
- rabbitmq
9584
- fluentbit
@@ -119,12 +108,7 @@ services:
119108
- BROWSERUP_RABBITMQ_DEFAULT_PASS=${BROWSERUP_RABBITMQ_DEFAULT_PASS}
120109
- BROWSERUP_RABBITMQ_QUEUE_PORT=5672
121110
- BROWSERUP_ZOOKEEPER_HOST=${BROWSERUP_ZOOKEEPER_HOST}
122-
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=2181
123-
- BROWSERUP_INFLUX_DB_HOST=${BROWSERUP_INFLUX_DB_HOST}
124-
- BROWSERUP_INFLUX_DB_PORT=8086
125-
- BROWSERUP_INFLUX_DB_NAME=browserup
126-
- BROWSERUP_INFLUX_DB_USER=browserup
127-
- BROWSERUP_INFLUX_DB_PASSWORD=${BROWSERUP_INFLUX_DB_PASSWORD}
111+
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=9181
128112
- BROWSERUP_MINION_VUS=1
129113
- BROWSERUP_MINION_IMAGE_VERSION_TAG=${MINION_IMAGE_VERSION_TAG}
130114
- BROWSERUP_S3_MINIO_ACCESS_KEY_ID=${BROWSERUP_S3_MINIO_ACCESS_KEY_ID}
@@ -138,11 +122,13 @@ services:
138122
- BROWSERUP_CLUSTER_NAME=${BROWSERUP_CLUSTER_NAME}
139123
- BROWSERUP_USER_ARTIFACT_CACHE_PATH=/bu/artifactcache
140124
- BROWSERUP_USE_LOCAL_DOCKER_CACHED_IMAGE=${BROWSERUP_USE_LOCAL_DOCKER_CACHED_IMAGE}
125+
- BROWSERUP_NATS_URLS=${BROWSERUP_NATS_URLS}
141126
depends_on:
142127
- zookeeper
143128
- rabbitmq
144129
- grid-java-api
145130
- fluentbit
131+
- clickhouse
146132
logging:
147133
driver: "fluentd"
148134
options:
@@ -160,8 +146,9 @@ services:
160146
- BROWSERUP_RABBITMQ_DEFAULT_PASS=${BROWSERUP_RABBITMQ_DEFAULT_PASS}
161147
- BROWSERUP_RABBITMQ_QUEUE_PORT=5672
162148
- BROWSERUP_ZOOKEEPER_HOST=${BROWSERUP_ZOOKEEPER_HOST}
163-
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=2181
149+
- BROWSERUP_ZOOKEEPER_CLIENT_PORT=9181
164150
- BROWSERUP_IS_CLOUD=false
151+
- BROWSERUP_NATS_URLS=${BROWSERUP_NATS_URLS}
165152
depends_on:
166153
- zookeeper
167154
- rabbitmq
@@ -174,30 +161,21 @@ services:
174161

175162
webconsole:
176163
container_name: browserup_webconsole
177-
image: docker.io/browserup/webconsole:latest
164+
image: docker.io/browserup/webconsole:snapshot
178165
privileged: true
179166
security_opt:
180167
- "seccomp=unconfined"
181168
- "apparmor=unconfined"
182169
devices:
183170
- "/dev/fuse"
184171
ports:
185-
- "${BROWSERUP_WEBCONSOLE_PORT}:3000"
172+
- "${BROWSERUP_WEBCONSOLE_PORT}:3100"
186173
environment:
187174
- DOCKER_LOGS=true
188-
- BROWSERUP_MYSQL_HOST=${BROWSERUP_MYSQL_HOST}
189-
- BROWSERUP_MYSQL_USERNAME=browserup
190-
- BROWSERUP_MYSQL_PASSWORD=${BROWSERUP_MYSQL_PASSWORD}
191-
- BROWSERUP_MYSQL_PORT=3306
192-
- BROWSERUP_INFLUX_DB_HOST=${BROWSERUP_INFLUX_DB_HOST}
193-
- BROWSERUP_INFLUX_DB_PORT=8086
194-
- BROWSERUP_INFLUX_DB_NAME=browserup
195-
- BROWSERUP_INFLUX_DB_USER=browserup
196-
- BROWSERUP_INFLUX_DB_PASSWORD=${BROWSERUP_INFLUX_DB_PASSWORD}
175+
- BROWSERUP_CLICKHOUSE_HOST=${BROWSERUP_CLICKHOUSE_HOST}
197176
- BROWSERUP_GRID_SERVICE_URL=http://${BROWSERUP_GRID_JAVA_API_HOST}:8080/grid
198177
- BROWSERUP_LOKI_SERVICE_URL=http://${BROWSERUP_LOKI_HOST}:3100
199178
- BROWSERUP_IS_CLOUD=false
200-
- BROWSERUP_REDIS_URL=redis://${BROWSERUP_REDIS_HOST}:6379/1
201179
- BROWSERUP_S3_MINIO_ACCESS_KEY_ID=${BROWSERUP_S3_MINIO_ACCESS_KEY_ID}
202180
- BROWSERUP_S3_MINIO_SECRET_ACCESS_KEY=${BROWSERUP_S3_MINIO_SECRET_ACCESS_KEY}
203181
- BROWSERUP_S3_MINIO_ARTIFACTS_BUCKET=${BROWSERUP_S3_MINIO_ARTIFACTS_BUCKET}
@@ -211,84 +189,79 @@ services:
211189
- RAILS_LOG_TO_STDOUT=true
212190
- RAILS_SERVE_STATIC_FILES=true
213191
- BROWSERUP_S3_MINIO_HOST_PORT_1=${BROWSERUP_S3_MINIO_PORT_1}
192+
- RAILS_MASTER_KEY=6f893b421a180634146cd1eb5f58cc80
193+
- PORT=3000
194+
- BROWSERUP_WC_RUNNING_AS_SERVER=true
195+
- BROWSERUP_NATS_URLS=${BROWSERUP_NATS_URLS}
196+
- BROWSERUP_NATS_SERVER_LIST=${BROWSERUP_NATS_SERVER_LIST}
214197
depends_on:
215-
- mysql
216-
- influxdb
217198
- grid-java-api
218-
- redis
219199
- minio
220200
- fluentbit
221201
logging:
222202
driver: "fluentd"
223203
options:
224204
fluentd-address: "localhost:24224"
225205

226-
chronograf:
227-
image: chronograf:1.7.16
228-
ports:
229-
- "${BROWSERUP_CHRONOGRAF_PORT}:8888"
230-
depends_on:
231-
- influxdb
232-
- fluentbit
233-
logging:
234-
driver: "fluentd"
235-
options:
236-
fluentd-address: "localhost:24224"
237-
238-
influxdb:
239-
container_name: browserup_influxdb
240-
image: influxdb:1.8.10
206+
clickhouse:
207+
image: 'clickhouse/clickhouse-server:25.1'
208+
container_name: clickhouse
209+
hostname: clickhouse
241210
volumes:
242-
- influxdb-volume:/var/lib/influxdb
211+
- ./resources/click-house/config.xml:/etc/clickhouse-server/config.d/config.xml
212+
- ./resources/click-house/users.xml:/etc/clickhouse-server/users.d/users.xml
213+
- ./resources/click-house/schemas/errors.proto:/var/lib/clickhouse/format_schemas/errors.proto
214+
- ./resources/click-house/schemas/run_infos.proto:/var/lib/clickhouse/format_schemas/run_infos.proto
215+
- ./resources/click-house/schemas/steps.proto:/var/lib/clickhouse/format_schemas/steps.proto
216+
- ./resources/click-house/schemas/system_stats.proto:/var/lib/clickhouse/format_schemas/system_stats.proto
217+
- ./resources/click-house/schemas/urls.proto:/var/lib/clickhouse/format_schemas/urls.proto
218+
- ./resources/click-house/schemas/verifications.proto:/var/lib/clickhouse/format_schemas/verifications.proto
219+
- ./resources/click-house/schemas/vu_logs.proto:/var/lib/clickhouse/format_schemas/vu_logs.proto
220+
- ./resources/click-house/schemas/vu_statuses.proto:/var/lib/clickhouse/format_schemas/vu_statuses.proto
243221
ports:
244-
- "${BROWSERUP_INFLUX_DB_PORT}:8086"
245-
environment:
246-
- INFLUXDB_DB=browserup
247-
- INFLUX_DB_USER=browserup
248-
- INFLUX_DB_PASSWORD=${BROWSERUP_INFLUX_DB_PASSWORD}
249-
- INFLUXDB_LOGGING_LEVEL=debug
250-
- INFLUXDB_DATA_MAX_SERIES_PER_DATABASE=0
251-
- INFLUXDB_DATA_MAX_VALUES_PER_TAG=0
252-
- INFLUXDB_HTTP_LOG_ENABLED=false
222+
- '8123:8123'
223+
- '9000:9000'
253224
depends_on:
225+
- zookeeper
226+
- nats
227+
- nats-1
254228
- fluentbit
255229
logging:
256230
driver: "fluentd"
257231
options:
258232
fluentd-address: "localhost:24224"
259233

260-
mysql:
261-
container_name: browserup_mysql
262-
image: mysql:8.0.31-oracle
263-
command: mysqld --default-authentication-plugin=mysql_native_password
234+
zookeeper:
235+
image: 'clickhouse/clickhouse-keeper:24.4'
236+
container_name: zookeeper
237+
hostname: zookeeper
264238
volumes:
265-
- mysql-volume:/var/lib/mysql
266-
- ./resources/init.sql:/docker-entrypoint-initdb.d/z-create-test-db.sql
239+
- ./resources/click-house/keeper-config.xml:/etc/clickhouse-keeper/keeper_config.xml
267240
ports:
268-
- "${BROWSERUP_MYSQL_PORT}:3306"
269-
environment:
270-
- MYSQL_RANDOM_ROOT_PASSWORD=yes
271-
- MYSQL_DATABASE=browserup_development
272-
- MYSQL_USER=browserup
273-
- MYSQL_PASSWORD=${BROWSERUP_MYSQL_PASSWORD}
241+
- '9181:9181'
274242
depends_on:
275243
- fluentbit
276244
logging:
277245
driver: "fluentd"
278246
options:
279247
fluentd-address: "localhost:24224"
280248

281-
redis:
282-
container_name: browserup_redis
283-
image: redis:6.2.5
249+
nats:
250+
image: nats
284251
ports:
285-
- "${BROWSERUP_REDIS_PORT}:6379"
286-
depends_on:
287-
- fluentbit
288-
logging:
289-
driver: "fluentd"
290-
options:
291-
fluentd-address: "localhost:24224"
252+
- "6222:6222"
253+
- "4222:4222"
254+
- "8222:8222"
255+
volumes:
256+
- ./resources/nats/nats-server.conf:/etc/nats/nats-server.conf
257+
command: "--cluster_name NATS --cluster nats://0.0.0.0:6222 --http_port 8222 -c /etc/nats/nats-server.conf"
258+
259+
nats-1:
260+
image: nats
261+
volumes:
262+
- ./resources/nats/nats-server.conf:/etc/nats/nats-server.conf
263+
command: "--cluster_name NATS --cluster nats://0.0.0.0:6222 --routes=nats://nats:6222 -c /etc/nats/nats-server.conf"
264+
depends_on: ["nats"]
292265

293266
rabbitmq:
294267
container_name: browserup_rabbitmq
@@ -314,28 +287,6 @@ services:
314287
options:
315288
fluentd-address: "localhost:24224"
316289

317-
zookeeper:
318-
container_name: browserup_zookeeper
319-
image: zookeeper:3.8.1
320-
volumes:
321-
- ./resources/zoo.cfg:/conf/zoo.cfg
322-
- zookeeper-data-volume:/data
323-
- zookeeper-datalog-volume:/datalog
324-
ports:
325-
- "${BROWSERUP_ZOOKEEPER_CLIENT_PORT}:2181"
326-
environment:
327-
- ZOO_TICK_TIME=300000 # Helpful for debugging
328-
- ZOO_CFG_EXTRA=warn
329-
- ZOO_MAX_CLIENT_CNXNS=${BROWSERUP_ZOO_MAX_CLIENT_CNXNS}
330-
depends_on:
331-
- fluentbit
332-
- loki
333-
- grafana
334-
logging:
335-
driver: "fluentd"
336-
options:
337-
fluentd-address: "localhost:24224"
338-
339290
minio:
340291
container_name: browserup_minio
341292
image: quay.io/minio/minio:RELEASE.2022-01-08T03-11-54Z
@@ -374,8 +325,6 @@ services:
374325
# storage
375326
loki:
376327
image: grafana/loki:2.8.6
377-
ports:
378-
- "24310:3100"
379328
volumes:
380329
- ./resources/loki-config.yaml:/etc/loki/local-config.yaml
381330

@@ -396,6 +345,18 @@ services:
396345
- ./resources/grafana-default-dashboard.json:/etc/grafana/provisioning/dashboards/grafana-default-dashboard.json
397346
- ./resources/grafana-zookeeper-dashboard.json:/etc/grafana/provisioning/dashboards/grafana-zookeeper-dashboard.json
398347
- ./resources/grafana-grid-services-dashboard.json:/etc/grafana/provisioning/dashboards/grafana-grid-services-dashboard.json
348+
- ./resources/grafana-cadvisor-dashboard.json:/etc/grafana/provisioning/dashboards/grafana-cadvisor-dashboard.json
349+
- ./resources/grafana-clickhouse-dashboard.json:/etc/grafana/provisioning/dashboards/grafana-clickhouse-dashboard.json
350+
351+
cadvisor:
352+
image: gcr.io/cadvisor/cadvisor
353+
container_name: cadvisor
354+
volumes:
355+
- /:/rootfs:ro
356+
- /var/run:/var/run:ro
357+
- /sys:/sys:ro
358+
- /var/lib/docker/:/var/lib/docker:ro
359+
- /dev/disk:/dev/disk/:ro
399360

400361
prometheus:
401362
image: prom/prometheus:v2.44.0
@@ -405,8 +366,6 @@ services:
405366
- "${PROMETHEUS_PORT}:9090"
406367

407368
volumes:
408-
influxdb-volume:
409-
mysql-volume:
410369
rabbitmq-volume:
411370
zookeeper-data-volume:
412371
zookeeper-datalog-volume:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<clickhouse replace="true">
2+
<format_schema_path>/var/lib/clickhouse/format_schemas/</format_schema_path>
3+
<logger>
4+
<console>1</console>
5+
</logger>
6+
<display_name>ch-1S_1K</display_name>
7+
<listen_host>0.0.0.0</listen_host>
8+
<http_port>8123</http_port>
9+
<tcp_port>9000</tcp_port>
10+
<user_directories>
11+
<users_xml>
12+
<path>users.xml</path>
13+
</users_xml>
14+
<local_directory>
15+
<path>/tmp/lib/clickhouse/access/</path>
16+
</local_directory>
17+
</user_directories>
18+
<distributed_ddl>
19+
<path>/clickhouse/task_queue/ddl</path>
20+
</distributed_ddl>
21+
<zookeeper>
22+
<node>
23+
<host>zookeeper</host>
24+
<port>9181</port>
25+
</node>
26+
</zookeeper>
27+
<prometheus>
28+
<endpoint>/metrics</endpoint>
29+
<port>9363</port>
30+
<metrics>true</metrics>
31+
<events>true</events>
32+
<asynchronous_metrics>true</asynchronous_metrics>
33+
<errors>true</errors>
34+
</prometheus>
35+
</clickhouse>

0 commit comments

Comments
 (0)