Compare commits

...
Author SHA1 Message Date
Thomas Camlong 03f0d12b32 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).
2026-05-07 19:02:00 +02:00
+24 -1
View File
@@ -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