I do some of this but in a slightly different, maybe simpler way:
1. App runs in App Engine (flex). It includes a simple /collect endpoint for mobile events that just logs to /var/log/app_engine/custom_logs/track.json which automatically gets picked up by Google's Stackdriver. App code can just directly log to that file as well to record server-side events. (no network involved in recording events).
2. Stackdriver stores logs in Cloud Storage and also dispatches a Cloud PubSub push to a configured topic.
3. Another mini App Engine flex app receives the message, does the ETL, and inserts the row into BigQuery.