@@ -21,7 +21,11 @@ source ./state.env # PUBLIC_IP, KEY_NAME, ...
2121source ../lib.sh
2222
2323IMAGE=" ${IMAGE:- walshadow: local} "
24- FLUSH_TIMEOUT_MS=" ${FLUSH_TIMEOUT_MS:- 50} "
24+ FLUSH_TIMEOUT_MS=" ${FLUSH_TIMEOUT_MS:- 1000} "
25+ JAEGER_IMAGE=" ${JAEGER_IMAGE:- jaegertracing/ all-in-one: 1.57} "
26+ JAEGER_MAX_TRACES=" ${JAEGER_MAX_TRACES:- 50000} "
27+ JAEGER_MEMORY=" ${JAEGER_MEMORY:- 1g} "
28+ TRACE_SAMPLE_RATIO=" ${TRACE_SAMPLE_RATIO:- 0.01} "
2529node_ssh_setup
2630
2731SRC_PRIV=" ${SOURCE_PRIVATE_IP:- $(read_state_var ../ ec2-source-pg/ state.env SOURCE_PRIVATE_IP)} "
@@ -65,16 +69,61 @@ columns = [
6569]
6670EOF
6771
72+ # Memory-bound Jaeger (in-memory storage capped at JAEGER_MAX_TRACES, RAM at
73+ # JAEGER_MEMORY) on walshadow-net so the daemon ships spans to it by name.
74+ " ${SSH[@]} " " sudo docker network inspect walshadow-net >/dev/null 2>&1 || sudo docker network create walshadow-net"
75+ " ${SSH[@]} " " sudo docker rm -f jaeger >/dev/null 2>&1 || true; sudo docker run -d --name jaeger --restart unless-stopped \
76+ --network walshadow-net \
77+ --memory '$JAEGER_MEMORY ' \
78+ -e COLLECTOR_OTLP_ENABLED=true \
79+ -e SPAN_STORAGE_TYPE=memory \
80+ -e MEMORY_MAX_TRACES='$JAEGER_MAX_TRACES ' \
81+ -p 16686:16686 -p 4317:4317 \
82+ $JAEGER_IMAGE >/dev/null && echo 'jaeger started'"
83+
6884" ${SSH[@]} " " sudo docker rm -f walshadow >/dev/null 2>&1 || true; sudo docker run -d --name walshadow --restart unless-stopped \
85+ --network walshadow-net \
6986 -e RUST_LOG='warn,walshadow=info' \
7087 -e WALSHADOW_SOURCE_HOST='$SRC_PRIV ' \
7188 -e WALSHADOW_SOURCE_PORT=5432 \
89+ -e OTEL_EXPORTER_OTLP_ENDPOINT='http://jaeger:4317' \
7290 -v /opt/walshadow/ch-config.toml:/etc/walshadow/ch-config.toml:ro \
7391 -v walshadow-data:/var/lib/walshadow \
7492 -p 9484:9484 \
75- $IMAGE >/dev/null && echo started"
93+ $IMAGE --trace-sample-ratio '$TRACE_SAMPLE_RATIO ' >/dev/null && echo started"
94+
95+ # Grafana + Prometheus: only uploaded/recreated when FORCE_METRICS=1.
96+ if [ " ${FORCE_METRICS:- 0} " = " 1" ]; then
97+ GRAFANA_IMAGE=" ${GRAFANA_IMAGE:- grafana/ grafana: 13.0.2} "
98+ PROM_IMAGE=" ${PROM_IMAGE:- prom/ prometheus: v3.12.0} "
99+ REPO_ROOT=" $( cd ../../.. && pwd) "
100+
101+ " ${SSH[@]} " " sudo docker network inspect walshadow-net >/dev/null 2>&1 || sudo docker network create walshadow-net"
102+ " ${SSH[@]} " " sudo docker network connect walshadow-net walshadow 2>/dev/null || true"
103+
104+ tar -C " $REPO_ROOT /docker" -czf - grafana prometheus \
105+ | " ${SSH[@]} " " sudo install -d /opt/walshadow/obs && sudo tar -C /opt/walshadow/obs -xzf -"
106+ # compose hostname 'clickhouse' -> private IP
107+ " ${SSH[@]} " " sudo grep -rl clickhouse /opt/walshadow/obs 2>/dev/null | sudo xargs -r sed -i 's/clickhouse:/$CH_PRIV :/g; s#//clickhouse#//$CH_PRIV #g'"
108+
109+ " ${SSH[@]} " " sudo docker rm -f prometheus >/dev/null 2>&1 || true; sudo docker run -d --name prometheus --restart unless-stopped \
110+ --network walshadow-net \
111+ -v /opt/walshadow/obs/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
112+ -p 9090:9090 \
113+ $PROM_IMAGE >/dev/null && echo 'prometheus started'"
114+
115+ " ${SSH[@]} " " sudo docker rm -f grafana >/dev/null 2>&1 || true; sudo docker run -d --name grafana --restart unless-stopped \
116+ --network walshadow-net \
117+ -e GF_AUTH_ANONYMOUS_ENABLED=true -e GF_AUTH_ANONYMOUS_ORG_ROLE=Admin \
118+ -e GF_INSTALL_PLUGINS=grafana-clickhouse-datasource \
119+ -v /opt/walshadow/obs/grafana/provisioning:/etc/grafana/provisioning:ro \
120+ -v /opt/walshadow/obs/grafana/dashboards:/var/lib/grafana/dashboards:ro \
121+ -p 3000:3000 \
122+ $GRAFANA_IMAGE >/dev/null && echo 'grafana started'"
123+ fi
76124
77125echo
78126echo " === deployed ==="
79127echo " metrics: curl http://$PUBLIC_IP :9484/metrics"
128+ echo " traces: http://$PUBLIC_IP :16686 (jaeger)"
80129echo " logs: ssh -i $PEM ubuntu@$PUBLIC_IP 'sudo docker logs -f walshadow'"
0 commit comments