mirror of
https://github.com/BillyOutlast/posthog.git
synced 2026-02-04 03:01:23 +01:00
167 lines
5.5 KiB
Bash
Executable File
167 lines
5.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
#
|
|
# Starts up "live" local builds of the posthog/rust
|
|
# services for a faster local dev inner loop
|
|
#
|
|
|
|
# set exit strategy
|
|
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
|
|
|
|
# ensure we have a service name
|
|
if [ -z "$1" ]; then
|
|
echo "ERROR missing required argument: posthog/rust service name" >&2
|
|
echo "Usage: bin/start-rust-service <SERVICE_NAME>" >&2
|
|
exit 1
|
|
fi
|
|
RS_SVC="$1"
|
|
|
|
# set up env appropriate for each *known* service - add new ones here!
|
|
case "$RS_SVC" in
|
|
property-defs-rs)
|
|
SQLX_QUERY_LEVEL=${SQLX_QUERY_LEVEL:-warn}
|
|
export RUST_LOG=debug,sqlx::query=$SQLX_QUERY_LEVEL,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export KAFKA_HOSTS=localhost:9092
|
|
export DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export SKIP_WRITES=false
|
|
export SKIP_READS=false
|
|
export FILTER_MODE=opt-out
|
|
export DEBUG=1
|
|
;;
|
|
|
|
capture)
|
|
SQLX_QUERY_LEVEL=${SQLX_QUERY_LEVEL:-warn}
|
|
export RUST_LOG=debug,sqlx::query=$SQLX_QUERY_LEVEL,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export ADDRESS=0.0.0.0:3307 # avoid port conflict in local dev
|
|
export KAFKA_HOSTS=localhost:9092
|
|
export REDIS_URL=redis://localhost:6379
|
|
export DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export CAPTURE_MODE=events
|
|
export LOG_LEVEL=debug
|
|
export DEBUG=1
|
|
;;
|
|
|
|
capture-replay)
|
|
SQLX_QUERY_LEVEL=${SQLX_QUERY_LEVEL:-warn}
|
|
export RUST_LOG=debug,sqlx::query=$SQLX_QUERY_LEVEL,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export ADDRESS=0.0.0.0:3306 # avoid port conflict in local dev
|
|
export KAFKA_HOSTS=localhost:9092
|
|
export KAFKA_TOPIC=session_recording_snapshot_item_events
|
|
export KAFKA_OVERFLOW_TOPIC=session_recording_snapshot_item_overflow
|
|
export REDIS_URL=redis://localhost:6379
|
|
export DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export CAPTURE_MODE=recordings
|
|
export LOG_LEVEL=debug
|
|
export DEBUG=1
|
|
export DEV_RUST_SVC_OVERRIDE=capture # we want to run the same "capture" binary in a separate mode
|
|
;;
|
|
|
|
cymbal)
|
|
# NOTE: to ensure the exceptions topic exists and avoid crash loops in dev:
|
|
# cd rust
|
|
# cargo run --bin generate_test_events
|
|
export RUST_LOG=debug,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export KAFKA_CONSUMER_GROUP=cymbal
|
|
export KAFKA_CONSUMER_TOPIC=exceptions_ingestion
|
|
export OBJECT_STORAGE_BUCKET=posthog
|
|
export OBJECT_STORAGE_ACCESS_KEY_ID=object_storage_root_user
|
|
export OBJECT_STORAGE_SECRET_ACCESS_KEY=object_storage_root_password
|
|
export FRAME_CACHE_TTL_SECONDS=1
|
|
export BIND_PORT=3302 # HACK! avoid local-dev clash with property-defs-rs port
|
|
export ALLOW_INTERNAL_IPS="true"
|
|
export PERSONS_URL=postgres://posthog:posthog@localhost:5432/posthog_persons
|
|
;;
|
|
|
|
embedding-worker)
|
|
export RUST_LOG=debug,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export KAFKA_CONSUMER_GROUP=embedding-worker
|
|
export KAFKA_CONSUMER_TOPIC="error_tracking_new_fingerprints"
|
|
export FRAME_CACHE_TTL_SECONDS=1
|
|
export BIND_PORT=3305 # HACK! avoid local-dev clash with property-defs-rs port
|
|
export ALLOW_INTERNAL_IPS="true"
|
|
;;
|
|
|
|
cyclotron-janitor)
|
|
SQLX_QUERY_LEVEL=${SQLX_QUERY_LEVEL:-warn}
|
|
export RUST_LOG=debug,sqlx::query=$SQLX_QUERY_LEVEL
|
|
export RUST_BACKTRACE=1
|
|
export KAFKA_HOSTS=localhost:9092
|
|
export KAFKA_TOPIC=clickhouse_app_metrics2
|
|
export DATABASE_URL=postgres://posthog:posthog@localhost:5432/cyclotron
|
|
export DEBUG=1
|
|
export ALLOW_INTERNAL_IPS=${ALLOW_INTERNAL_IPS:-true}
|
|
;;
|
|
|
|
feature-flags)
|
|
# Download MaxMind DB if it doesn't exist
|
|
./bin/download-mmdb
|
|
|
|
export RUST_LOG=debug,tower=warn,maxminddb=warn
|
|
export RUST_BACKTRACE=1
|
|
export WRITE_DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export READ_DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export MAXMIND_DB_PATH=../share/GeoLite2-City.mmdb
|
|
export REDIS_URL=redis://localhost:6379/
|
|
export ADDRESS=0.0.0.0:3001
|
|
export DEBUG=1
|
|
export ALLOW_INTERNAL_IPS=${ALLOW_INTERNAL_IPS:-true}
|
|
;;
|
|
|
|
batch-import-worker)
|
|
SQLX_QUERY_LEVEL=${SQLX_QUERY_LEVEL:-warn}
|
|
export RUST_LOG=debug,sqlx::query=$SQLX_QUERY_LEVEL,rdkafka=warn
|
|
export RUST_BACKTRACE=1
|
|
export KAFKA_HOSTS=localhost:9092
|
|
export DATABASE_URL=postgres://posthog:posthog@localhost:5432/posthog
|
|
export BIND_HOST=0.0.0.0
|
|
export BIND_PORT=3301
|
|
export ENCRYPTION_KEYS=00beef0000beef0000beef0000beef00
|
|
export KAFKA_TOPIC_MAIN=events_plugin_ingestion
|
|
export KAFKA_TOPIC_HISTORICAL=events_plugin_ingestion_historical
|
|
export KAFKA_TOPIC_OVERFLOW=events_plugin_ingestion_overflow
|
|
export DEBUG=1
|
|
;;
|
|
|
|
*)
|
|
echo "ERROR unknown posthog/rust service '$RS_SVC' please register in: $0" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# in some cases, we need to run the same underlying binary
|
|
# with different configuration - if a given RS_SVC config
|
|
# above sets the override env var, apply it here
|
|
if [[ -n "${DEV_RUST_SVC_OVERRIDE:-}" ]]; then
|
|
export RS_SVC="$DEV_RUST_SVC_OVERRIDE"
|
|
fi
|
|
|
|
# ensure Rust services are in scope for "cargo run --bin <SERVICE_NAME>"
|
|
cd rust
|
|
|
|
# ensure the service restarts if it crashes in dev
|
|
sleep 1
|
|
while true; do
|
|
if ! ps -p ${RS_PID:-} &>/dev/null; then
|
|
cargo run --bin "$RS_SVC" &
|
|
export RS_PID=$!
|
|
echo -e "\n\033[47m>>\033[0m Restarted '$RS_SVC' with PID $RS_PID\n"
|
|
fi
|
|
|
|
# restart subprocess if it fails without bin/start shutdown
|
|
set +e
|
|
wait $RS_PID
|
|
set -e
|
|
|
|
sleep 3
|
|
done
|
|
|
|
echo -e "\n\033[47m>>\033[0m Shut down '$RS_SVC'\n"
|
|
exit 0
|