Web analytics van Cloud Run
Gebruik BigQuery met request-logs, voor een bezoekers-rapport in Looker Studio
Als je Ghost draait op Cloud Run, zoals deze site, wil je nog wel een mooie manier om de gegevens over alle bezoekers in beeld te krijgen. In de wereld van Google Cloud is Looker Studio dé tool om makkelijk en mooi informatie te visualiseren. De data over de opgevraagde pagina's en bezoekers moeten we wel eerst in een analyse-database krijgen. En daarvoor gebruiken we vanzelfsprekend BigQuery.
Logging sink
Hoe krijgen we de logs van de Cloud Run service in BigQuery? Met een zogenaamde "sink". In een paar stappen regel je dit, in de Cloud Console, via console.cloud.google.com/logs/router/sink
- Sink Name:
BQ-request-logs
(of wat je zelf leuk vind) - Destination Service: BigQuery dataset
- Maak hier ter plekke een nieuwe dataset aan, bijvoorbeeld
web_logs_us
. Ga voor datalocatie (multi-region) US vanwege de koppeling met IPinfo, zo dadelijk. - Zorg dat je 'm instelt als "Partitioned". (Vergeten? Oude "date shared" tabellen kun je later makkelijk omzetten naar partitioned.)
- Inclusion filter:
resource.type = "cloud_run_revision"
severity >= DEFAULT
httpRequest.status >= 0
- Druk op de grote blauwe knop... en voortaan stromen je Cloud Run-logs binnen in BigQuery.
Log-data verwerken in BigQuery
Om de logs in BigQuery nog iets beter bruikbaar te krijgen, voegen we twee transformaties toe: 1) opschonen van de data en 2) toevoegen van locatie-informatie van de bezoekers. In BigQuery gebruik je hiervoor een "view" – een virtuele tabel, die resultaat geeft uit queries op één of meer andere tabellen.
1. Opschonen request-logs
Uit de logs hoeven we niet alle info te hebben, maar alleen de tijd/datum en het http-request. Bovendien willen we wat voorbewerkingen doen, om het rapportje straks inzichtelijker te maken:
2. Verrijken met IPinfo
Om te weten waar de de bezoekers vandaan komen, moeten we hun IP-adressen koppelen aan locaties. We kunnen die locaties halen uit databases van bijvoorbeeld IPinfo. Voor nu zullen we ons op een (beperkte, maar gratis) dataset abonneren via de Cloud Marketplace. Hun tabel van ongeveer 4.8 GB bied inzicht in de landen van alle IP-adresssen in de wereld. Aan de hand van deze documentatie voegen we 'm samen met de IP-adressen van onze bezoekers:
3. Toegift: interpreteren van de userAgent
De userAgent geeft informatie over de browser(versie) en het apparaat van een bezoeker. Om deze steeds complexere string te interpreteren zijn prachtige functie-bibliotheken geschreven. En zo'n functie kunnen we weer mooi gebruiken in BigQuery om verschillende zaken uit die string te halen. In de bovenstaande query hoeven we dan maar één regeltje toe te voegen:
Visualiseren in Looker Studio
De bezoekersdata stroom inmiddels langzaam binnen en wordt verrijkt met locatie-gegevens. Tijd om er een mooi, interactief rapportje overheen te leggen.
Met deze geheime link (sssst!) kun je niet alleen mijn rapport én bezoekers-gegevens bekijken, maar ook je eigen versie van dit rapport maken. Dan heb je wel die eigen http_requests_locations_view
nodig. Maar dat lukt je vast en zeker met de stappen hierboven!