Geschrieben von

Server-side Google Tag Manager auf Cloud Run

Webtracking

Das Bereitstellen eines Google Tag Manager Server-Containers ist grundsätzlich über 2 Wege möglich:

  • Tag-Server automatisch bereitstellen
  • Tag-Server manuell bereitstellen

Die automatische Bereitstellung ist einfach und mit wenigen Klicks erledigt, jedoch wird hier der GTM-Server auf einer App Engine Standard-Umgebung deployed. Dies kann zwar für ein Testing eingesetzt werden, für die Prod-Umgebung ist die Standard-Umgebung eher weniger geeignet. Über die manuelle Bereitstellung lässt sich jedoch eine App Engine Flexible-Umgebung deployen, die für den Live-Betrieb besser ist, da performanter. Zudem lässt sich dadurch auch die Region wählen. Wem App Engine nicht ausreicht, kann auch auf Cloud Run ausweichen. Wie das funktioniert erkläre ich in diesem Artikel.

Was ist Cloud Run?

Cloud Run ist eine serverlose Plattform, auf der Containeranwendungen bereitgestellt werden und die vollständig von Google verwaltet wird. Damit kann man jede Art von zustandslosen Containern erstellen, die dann auf HTTP-Requests reagieren. Alles was Cloud Run also braucht ist ein Container. Und den Google Tag Manager Server-Container gibt es als Docker Container Image. Perfekt!

Server-side Google Tag Manager auf Cloud Run bereitstellen

Grob gesagt sind folgende Schritte notwendig:

  1. Server-Container erstellen
  2. Cloud Run API aktivieren
  3. Preview Server erstellen
  4. Tagging Server erstellen

Server-Container erstellen

Zunächst wird ein neuer Container im Google Tag Manager erstellt:

Wähle einen Container-Namen und wähle als Zielplattform “Server”. Klicke dann auf “Erstellen”:

Wähle dann “Tagging-Server manuell bereitstellen” und kopiere dir deine Containerkonfiguration:

Cloud Run API aktivieren

Wechsle dann in Anschluss zur Google Cloud. Erstelle ein Projekt (oder wähle ein bestehendes Projekt). Stelle sicher, dass eine Abrechnung aktiviert und aktiv ist. Innerhalb des gewählten Projekts wechselst du nun zu “APIs & Dienste”. Klicke auf “APIS UND DIENSTE AKTVIEREN” im oberen Bereich. Suche nach “Cloud Run API”. Aktiviere die API:

Preview Server erstellen

Jetzt erstellen wir zunächst den Preview Server für den Google Tag Manager. Gehe zu Cloud Run. Klicke auf “Dienst erstellen”:

Unter den Diensteinstellungen wählst du nun “Überarbeitung aus dem vorhandenen Container-Image bereitstellen” und gibst diese URL an:

gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable

Als Dienstname z.B. “preview” angeben. Wähle dann eine Region – im besten Fall die Region wo der Unternehmenssitz ist und von wo deine Nutzer kommen.

Unter “CPU-Zuweisung und -Preise” kannst du selbst bestimmen, wie du es haben willst. In der Regel ist es empfehlenswert “CPU wird nur während der Anfrageverarbeitung zugewiesen” zu wählen zwecks Kosten. Die maximale Anzahl an Instanzen sollte beim Preview Server auf 1 gesetzt werden (da hier in der Regel nur Hits anfallen wenn getestet wird).

Im nächsten Schritt klickst du auf “Erweiterte Einstellungen” und dann auf den Tab “Variablen und Secrets”. Nun musst du 2 Variablen hinzufügen:

  • CONTAINER_CONFIG: Die vorher kopierte Containerkonfiguration aus dem Google Tag Manager.
  • RUN_AS_PREVIEW_SERVER: Auf true setzen.

Klicke auf “Weiter”. Jetzt wird konfiguriert, wann der Dienst auslösen soll. Wähle folgende Einstellungen:

Danach dauert es einige Zeit bis der Dienst bereitgestellt wird. Nach der erfolgreichen Bereitstellung siehst dann auf der Seite die gewählte Region und die zur Verfügung gestellte URL, unter die der Dienst aufrufbar ist:

Hinweis!
Für den Live-Betrieb ist es unbedingt zu empfehlen eine eigene Domain als Endpoint für die Tracking-Hits zu definieren. Oder andersrum: Der GTM-Server soll auf einer eigenen Domain liegen, damit die Hits in einem First-Party-Kontext gesammelt werden können. Wie man eine eigene Domain für die App Engine anlegt, habe ich in meinem Beitrag “GTM-Server: Eigene Subdomain als Endpoint” beschrieben. Möchte man eine eigene Domain für die Cloud Run-Dienste bereitstellen, ist der Prozess etwas anders. Grundsätzlich benötigt man dabei 2 Domains:

  • Eine Domain für den Preview Server
  • Eine Domain für den Tagging Server

In meinem Fall könnte ich z.B. die Subdomain collect.demirjasarevic.com als Tagging Server definieren. Der Preview Server könnte wieder eine Subdomain des Tagging Servers – erreichbar unter preview.collect.demirjasarevic.com – sein. Um eine benutzerdefinierte Domain für die Cloud Run-Dienste zu definieren, muss das in der Google Cloud Console unter “Domainzuordnungen” erfolgen. Folge dort einfach den Schritten, um deine Domain zu bestätigen und anzulegen.

Beachte jedoch, dass bei gewissen Regionen ein Domain Mapping nicht möglich ist (darunter fallen auch einige EU-Regionen). In diesem Fall musst du eine eigene Domain über einen Load Balancer einrichten. Da eine Anleitung dieser Konfiguration hier den Rahmen sprengen würde, gehe ich nicht weiter darauf ein, sondern zeige wie man den GTM-Server auf Cloud Run mit den von Cloud Run zur Verfügung gestellten Domains bereitstellt. Falls du Bedarf an dieser Anleitung hast, dann schreibe mir unter jasarevic.demir@gmail.com. Bei mehreren Anfragen folgt eine Anleitung. 😉

Tagging Server erstellen

Im nächsten Schritt wird der Tagging Server erstellt. Folge einfach nochmal den obigen Schritten zur Erstellung des Preview Servers mit einigen Unterschieden:

  • Wähle als Dienstname zur Unterscheidung z.B. “tagging”
  • Die maximale Anzahl an Instanzen sollte sich an deinen Hits, die der Server verarbeiten soll, orientieren
  • Unter den Variablen setzt du wie beim Preview Server die Variable “CONTAINER_CONFIG” und weist ihr den Wert der Containerkonfiguration zu
  • Als zweite Variable setzt du “PREVIEW_SERVER_URL” gleich der URL des Preview Servers

Auch hier erhältst du nach Abschluss deine Cloud Run URL, auf die der GTM-Tagging-Server liegt.

Google Tag Manager Einstellungen anpassen

Kopiere die URL des Tagging Servers, navigiere zu der Google Tag Manager Verwaltung. Unter “Containereinstellungen” gibst du hier die Tagging Server URL an:

Wenn du nun in den Vorschaumodus wechselst, wirst du feststellen, dass der Google Tag Manager auf der von Cloud Run bereitgestellten URL läuft.