From 03f0d12b3229d9487193f9bd719d5a5a4adb110c Mon Sep 17 00:00:00 2001 From: Thomas Camlong Date: Thu, 7 May 2026 19:02:00 +0200 Subject: [PATCH] feat: report container RAM usage to PostHog every 30 minutes Adds a background loop in run.sh that reads cgroup v2 memory stats and sends a `ram_usage` event to PostHog EU. This lets us track real-world memory footprint across releases. Configurable via RAM_REPORT_INTERVAL env var (defaults to 1800s). --- scripts/run.sh | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/scripts/run.sh b/scripts/run.sh index fc6e80ba4..521c5b34c 100644 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -44,10 +44,33 @@ fi node apps/nextjs/server.js & NEXTJS_PID=$! +report_ram() { + INTERVAL=${RAM_REPORT_INTERVAL:-1800} + while true; do + sleep "$INTERVAL" + MEM_USED_BYTES=$(cat /sys/fs/cgroup/memory.current) + MEM_MAX_RAW=$(cat /sys/fs/cgroup/memory.max) + MEM_USED_MB=$((MEM_USED_BYTES / 1048576)) + if [ "$MEM_MAX_RAW" = "max" ]; then + MEM_MAX_MB=0 + else + MEM_MAX_MB=$((MEM_MAX_RAW / 1048576)) + fi + + wget -q --post-data="{\"api_key\":\"phc_pWxeD1hbl4ip02JYReX1Crjkt5DhB3dduigirHMCtFE\",\"event\":\"ram_usage\",\"distinct_id\":\"${HOSTNAME:-homarr}\",\"properties\":{\"ram_used_mb\":${MEM_USED_MB},\"ram_max_mb\":${MEM_MAX_MB},\"ram_used_bytes\":${MEM_USED_BYTES},\"\$process_person_profile\":false}}" \ + --header="Content-Type: application/json" \ + -O /dev/null https://hog.ajnart.dev/i/v0/e/ 2>/dev/null + echo "Reported RAM: ${MEM_USED_MB}MB / ${MEM_MAX_MB}MB" + done +} + +report_ram & +REPORT_RAM_PID=$! + # Function to handle SIGTERM and shut down services terminate() { echo "Received SIGTERM. Shutting down..." - kill -TERM $NGINX_PID $NEXTJS_PID 2>/dev/null + kill -TERM $REPORT_RAM_PID $NGINX_PID $NEXTJS_PID 2>/dev/null wait # kill redis-server last because of logging of other services and only if $REDIS_PID is set if [ -n "$REDIS_PID" ]; then