Установка и настройка серверного Google Tag Manager на VPS

В современном мире онлайн-бизнеса отслеживание и анализ поведения пользователей на веб-сайтах имеет решающее значение для принятия решений в области маркетинга и управления веб-проектами. В этой статье мы рассмотрим процесс установки и настройки серверного Google Tag Manager (GTM) на VPS, позволяющего эффективно управлять тегами, используемыми для отслеживания активности на веб-сайте.

Создание поддомена

Для работы серверного Google Tag Manager необходимо два поддомена на домене основного сайта. Один – для самого серверного GTM, второй – для превью-сервера. Вы можете их добавить в панели управления, в разделе “Домены и поддомены”. Поддомены могут иметь любое название, например, sgtm.example.com и preview-sgtm.example.com.

Для обоих доменов необходимо указать в А-записи IP-адрес VPS, на которой будет развернут серверный GTM. Сделать это можно в панели управления, в разделе “DNS”.

Создание контейнера серверного GTM

Перед тем, как приступить к установке серверного GTM непосредственно на VPS, необходимо создать для него контейнер в Менеджере тегов Google и получить его ключ.

Для этого перейдите в Менеджер тегов Google, нажмите на 3 точки напротив вашего аккаунта и выберите пункт “Создать контейнер”.

Менеджер тегов Google

В открывшемся окне введите название контейнера, выберите целевую платформу “Server” и нажмите кнопку “Создать”.

название контейнера

После создания контейнера у вас откроется окно “Установка Google Менеджера тегов”. В нем выберите пункт “Добавить сервер тегов вручную” и скопируйте ключ из поля “Настройки контейнера”, он понадобится во время установки серверного GTM на VPS. Теперь можно переходить к установке Google Tag Manager на сервер.

Установка серверного GTM на VPS

Для установки Google Tag Manager на сервере мы подготовили готовые конфиги для сборки из четырех докер-контейнеров сервера тегов, одного докер-контейнера превью-сервера, одного контейнера nginx, который выступает в качестве прокси-сервера и распределяет поступающие запросы между контейнерами серверного GTM. В сборку также входит контейнер certbot, который отвечает за выпуск SSL-сертификатов на домены.

Обратите внимание!
Сборка включает в себя 4 контейнера сервера тегов. Это необходимо для стабильной обработки достаточно большого количества данных и соответствует рекомендации Google запускать от 3 до 6 контейнеров.

Также нами было замечено, что периодически контейнеры сервера тегов перезагружаются. Запуск нескольких контейнеров позволяет не терять данные в момент перезагрузки одного из контейнеров.
Ниже будет описано, как уменьшить или увеличить количество контейнеров под свои нужды.

Также учитывайте, что каждый контейнер сервера тегов требует для стабильной работы около 1 ядра CPU и 0.25 гигабайт RAM, поэтому следует подбирать конфигурацию VPS, исходя из количества контейнеров сервера тегов + 0.5 гигабайт RAM на работу ОС и другого ПО. Например, для работы предложенной сборки из 4 контейнеров тегов оптимальной будет конфигурация 4 ядра CPU, 3 гигабайта RAM и от 20 гигабайт дискового пространства.

Итак, перейдем к установке и настройке серверного GTM.

  1. Создайте папку, где будут располагаться конфигурационные файлы серверного Google Tag Manager. Сделать это можно с помощью команды:
mkdir -p ~/sgtm && cd ~/sgtm
  1. Скачайте и распакуйте файлы сборки. Сделать это можно следующей командой:
wget https://cp.beget.com/shared/trTNysWy-DGrbOzZT25WFU-wnaiPK83n/gtm.tar && tar -xvf gtm.tar

В результате в директории должно появиться 4 файла: docker-compose.yml, gtm.env, gtm-preview.env и nginx.conf.

  1. Откройте файл gtm.env любым удобным текстовым редактором, например, vim:
vim gtm.env

В первой строке после CONTAINER_CONFIG= необходимо вписать ключ, который мы получили в Менеджере тегов Google на предыдущем шаге.
Во второй строке после PREVIEW_SERVER_URL= необходимо указать домен превью-сервера, который вы создали на этапе создания поддоменов.
Пример итогового конфига:

CONTAINER_CONFIG=mF1dGg9MkZHZmNlTjg1NlZES3FHM09KODlMdwaWQ9R1RNLU4yRFAzVk5GJmVudj0xJ==
PREVIEW_SERVER_URL=https://sgtm-preview.example.com

Сохраните изменения и закройте файл.

  1. Теперь откройте файл gtm-preview.env любым удобным текстовым редактором, например, vim:
vim gtm-preview.env

В первой строке после CONTAINER_CONFIG= необходимо вписать ключ, который мы получили в Менеджере тегов Google на предыдущем шаге.
Пример итогового конфига:

CONTAINER_CONFIG=mF1dGg9MkZHZmNlTjg1NlZES3FHM09KODlMdwaWQ9R1RNLU4yRFAzVk5GJmVudj0xJ==
RUN_AS_PREVIEW_SERVER=true
  1. Теперь откройте файл nginx.conf любым удобным текстовым редактором, например, vim:
vim nginx.conf

В строках 60, 68, 76, 79 и 80 замените домен sgtm.example.com на домен, который вы создали для Менеджера тегов на первом шаге.
В стоках 101, 109, 117, 120 и 121 замените домен sgtm-preview.example.com на домен, который вы создали для превью-сервера на первом шаге.

  1. Запустите контейнеры серверного Google Tag Manager командой:
docker-compose up -d
  1. Для работы Google Tag Manager по HTTPS нам потребуется выпустить SSL-сертификаты как для домена Менеджера тегов, так и для домена превью-сервера. Для этого выполните следующие команды по очереди.
docker exec -it sgtm-certbot-1 certbot certonly --webroot --webroot-path /var/www/certbot/ -d sgtm.example.com
docker exec -it sgtm-certbot-1 certbot certonly --webroot --webroot-path /var/www/certbot/ -d sgtm-preview.example.com

В командах замените домены на выбранные вами ранее.

Обратите внимание!
При первом выпуске сертификата Certbot предложит указать email, а также согласиться с правилами использования Let’s Encrypt. С актуальными версиями документов вы можете ознакомиться на официальном сайте Let's Encrypt.
  1. После успешного выпуска сертификатов необходимо включить работу серверного Google Tag Manager  по HTTPS, раскомментировав строки 72-95 и 113-134 в файлеnginx.conf. Для этого удалите символ # в начале каждой строки.
  1. После чего перезапустите контейнер nginx.
docker restart sgtm-nginx-1
  1. Также нам потребуется добавить крон-задачу для автоматического перевыпуска SSL-сертификата. Добавить задачу можно командой crontab -e и выбрав удобный вам текстовый редактор.
crontab -e
no crontab for root - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano    	<---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2
crontab: installing new crontab

В список задач добавим 2 - одну для перевыпуска сертификата SSL, одну для перезагрузки конфигурации nginx.

# RENEW CERTIFICATES
20 1 15 */1 * docker exec sgtm-certbot-1 certbot renew
# RELOAD NGINX TO APPLY CERTIFICATES
20 4 15 */1 * docker exec sgtm-nginx-1 nginx -s reload

После запуска контейнеров на VPS необходимо вернуться в Менеджер тегов Google и указать адрес, по которому доступен серверный GTM.

Выберите контейнер, который мы создали на втором этапе в Менеджере тегов Google, и перейдите на вкладку “Администрирование” в верхней части сайта.

контейнер

На открывшейся странице перейдите в раздел “Настройки контейнера” в правом столбце.

Настройки контейнера

В открывшемся окне нажмите кнопку “Добавить URL” и введите домен сервера тегов, который мы создали на первом этапе, например, https://sgtm.example.com.

Добавить URL

Нажмите кнопку “Сохранить”.

Настройка тегов и подключение клиентов аналитики

Дальнейшая работа с тегами и аналитикой производится на стороне Менеджера тегов Google.

Перейдите в контейнер, который мы создали на 2 этапе. На открывшейся странице в левом меню доступны разделы “Теги”, “Триггеры”, “Преобразования” и “Папки”. В них вы можете создавать и настраивать теги, добавлять фильтрацию и триггеры, а также систематизировать теги с помощью папок.

В разделе “Клиенты” вы можете добавить различные системы аналитики, такие как Google Аналитика, Яндекс Метрика и другие, они будут получать данные по вашему сайту из серверного GTM.

Подключение серверного GTM к сайту

Отслеживание действий на сайте посредством GTM на стороне сервера производится с помощью скрипта, который передает данные в серверный Google Tag Manager.

Вам необходимо добавить скрипт Google Tag (gtag.js) на страницы вашего сайта.
Код скрипта:

<!-- Google tag (gtag.js) -->
<script async src="https://tagging.example.com/gtag/js?id=TAG_ID"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'TAG_ID', {
     server_container_url: 'https://tagging.example.com',
  });
</script>

В третьей строке вам необходимо заменить TAG_ID на идентификатор потока данных вашего сайта в Google Аналитике.

В девятой строке вам необходимо заменить https://tagging.example.com на ваш домен сервера тегов, например, https://sgtm.example.com.

Так как для разных CMS добавление скрипта на сайт будет выполняться по-разному, нет универсальной инструкции, как это сделать. Добавление скрипта может выполняться как напрямую в коде сайта, так и с помощью плагинов к вашей CMS.

После добавления скрипта на сайт данные о посещениях будут передаваться в серверный GTM, из которого информация будет передаваться в Google Аналитику или другие настроенные клиенты, в которых вы сможете увидеть отчеты.

Изменение количества контейнеров сервера тегов

Чтобы изменить количество контейнеров сервера тегов, необходимо внести изменения в два файла: docker-compose.yml и nginx.conf.

Откройте файл docker-compose.yml с помощью любого удобного текстового редактора, например vim:

vim docker-compose.yml

За количество контейнеров отвечает параметр replicas на 39 строке. Измените его значение в большую или меньшую сторону, сохраните изменения и закройте текстовый редактор.

Теперь откройте файл nginx.conf с помощью любого удобного текстового редактора, например vim:

vim nginx.conf

За список контейнеров, в которые проксируются запросы, отвечают строки 29–36:

upstream gtm-default {
      zone gtm-default 64k;
      server sgtm-gtm-1:8080;
      server sgtm-gtm-2:8080;
      server sgtm-gtm-3:8080;
      server sgtm-gtm-4:8080;
      keepalive 8;
}

В них перечислен список контейнеров, которые именуются gtm-gtm-номер.

Если вы увеличили количество контейнеров, то добавьте в конец списка перед строкой keepalive 8; новые контейнеры. Например, мы увеличили количество контейнеров до 6, тогда конфиг будет следующим:

upstream gtm-default {
      zone gtm-default 64k;
      server sgtm-gtm-1:8080;
      server sgtm-gtm-2:8080;
      server sgtm-gtm-3:8080;
      server sgtm-gtm-4:8080;
      server sgtm-gtm-5:8080;
      server sgtm-gtm-6:8080;
      keepalive 8;
}

Если вы уменьшили количество контейнеров, то удалите лишние контейнеры из списка перед строкой keepalve 8;. Например, мы уменьшили количество контейнеров до 2, тогда конфиг будет следующим:

upstream gtm-default {
      zone gtm-default 64k;
      server sgtm-gtm-1:8080;
      server sgtm-gtm-2:8080;
      keepalive 8;
}

После внесения изменений сохраните их и закройте текстовый редактор.

Для применения внесенных изменений в конфигурационные файлы необходимо перезапустить все контейнеры, это можно сделать с помощью следующей команды:

docker-compose down && docker-compose up -d

Заключение

В этой статье мы рассмотрели настройку Google Tag Manager на VPS, разобрали, как использовать серверный GTM для управления тегами. Теперь данные для аналитики вашего сайта будут храниться на вашем собственном сервере, а их сбор не будет блокироваться браузерами и большинством блокировщиков рекламы. При этом отчеты доступны в привычных интерфейсах Google Аналитики или Яндекс Метрики.

Заказать сервер для развертывания GTM на VPS, а также выбрать подходящую вам конфигурацию можно у нас – по этой ссылке.

Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить возможности GTM или наши продукты с коллегами по цеху и сотрудниками Бегета – ждем вас в нашем сообществе в Telegram.

61
1214