Как настроить серверное добавление тегов с помощью App Engine

Из этого руководства вы узнаете:

  • как инициализировать сервер тегов на платформе App Engine в Google Cloud Platform (GCP);
  • как подготовить сервер тегов к обработке реального трафика;
  • как увеличить или уменьшить число серверов, на которых работает контейнер Google Менеджера тегов;
  • как регулярно обновлять сервер тегов после его инициализации.

Требования

  1. Аккаунт GCP. Если у вас его нет, создайте его.
  2. Платежный аккаунт GCP. Если у вас его ещё нет, создайте его (нужна роль создателя платежного аккаунта).
  3. Вам потребуются роли создателя проекта и пользователя платежного аккаунта. Подробнее о добавлении ролей

1. Инициализация сервера

Чтобы создать новый сервер тегов в экземпляре App Engine, нужно:

  • создать серверный контейнер в Менеджере тегов;
  • создать новый проект Google Cloud Platform (GCP);
  • инициализировать новый сервер тегов App Engine;
  • добавить URL нового сервера тегов в серверный контейнер Менеджера тегов.

Создайте серверный контейнер в Менеджере тегов

  1. Откройте Google Менеджер тегов.

  2. В строке "Аккаунт" откройте дополнительное меню и выберите Создать контейнер.

  3. Создайте новый серверный контейнер.

  4. Нажмите на переключатель "Добавить сервер тегов вручную". Сохраните конфигурацию контейнера: она потребуется для инициализации сервера.

Создайте новый проект GCP

Для этого выполните следующие действия:

  1. Откройте Google Cloud Console.

  2. Создайте новый проект GCP.

  3. Назовите проект. Для удобства рекомендуем использовать в качестве имени идентификатор контейнера. Это название будет использоваться только в GCP.

  4. Запишите идентификатор проекта GCP: он потребуется вам далее.

Инициализируйте новый сервер тегов

Для этого выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Настройте проект GCP в Cloud Shell. Замените project ID на сохраненный ранее идентификатор проекта GCP:

    gcloud config set project project ID
    
  3. Создайте сервер тегов, запустив следующий скрипт. Укажите тип развертывания testing (тестовая конфигурация).

    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
    

Добавьте URL сервера тегов в Менеджер тегов

  1. Откройте Google Менеджер тегов.

  2. В разделе Администратор > Настройки контейнера нажмите Добавить URL. Если вы не знаете URL вашего сервера, выполните в Cloud Shell следующую команду:

    gcloud app browse
    

    Результат: сервер тегов настроен и применена конфигурация testing. Теперь можно тестировать добавление тегов на стороне сервера.

Начальная конфигурация сервера (testing)

Тестовая конфигурация подходит для ознакомления с продуктом. Вы можете передавать небольшие объемы тестового трафика и использовать предварительные версии функций в Менеджере тегов. Эта конфигурация относится к экземплярам App Engine класса F1 стандартной среды. Обычно ее использование не влечет за собой никаких расходов.

2. Работа с App Engine

После перехода на конфигурацию production (рабочая) один сервер будет стоить приблизительно 40 долл. США в месяц. Каждый такой сервер – это экземпляр App Engine в гибкой среде, располагающий 1 ВЦП, 0,5 ГБ ОЗУ и 10 ГБ места на диске.

Узнайте, как управлять затратами на App Engine и настроить оповещения о расходах. Мы настоятельно рекомендуем использовать такие оповещения.

Мы рекомендуем использовать для каждого контейнера как минимум по три сервера, чтобы сократить риск потери данных в случае сбоя одного из них. Однако выбор всегда за вами: вы можете использовать и меньше серверов, и больше. Автомасштабирование до 3–6 серверов (настройка по умолчанию) позволяет обрабатывать по 50–200 запросов в секунду. Этот показатель зависит от количества и функций тегов.

Чтобы настроить сервер тегов:

  1. Откройте Google Cloud Platform и запустите оболочку Cloud Shell.
  2. Настройте проект Cloud Platform. Замените project ID сохраненным ранее идентификатором проекта GCP:
    gcloud config set project project ID
  3. Чтобы изменить конфигурацию сервера тегов для рабочей среды, выполните приведенный ниже установочный скрипт. Сделайте следующее:
    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
    1. Измените тип развертывания на production.
    2. Настройте дополнительные серверы для передачи рабочего трафика. Мы рекомендуем использовать не менее трех серверов.

Отключение ведения журналов (необязательно)

Ведение журнала запросов

App Engine по умолчанию регистрирует в журнале полученную информацию о каждом запросе (его путь, параметры и т. д.). Если сервер тегов обрабатывает много запросов в месяц (например, больше миллиона), это может существенно повысить расходы на ведение журналов. Чтобы избежать этого, рекомендуем отключить журнал запросов App Engine.

Чтобы отключить ведение журнала запросов App Engine:

  1. Откройте Маршрутизатор журналов на платформе Google Cloud. Убедитесь, что выбранный проект соответствует идентификатору контейнера:
    Скриншот из Менеджера тегов: меню выбора проектов GCP с идентификатором контейнера.
  2. В строке с типом сегмент Cloud Logging и названием _Default откройте дополнительное меню и нажмите Изменить приемник.
  3. В разделе Место назначения выберите сегмент для журналов _Default.
  4. Под заголовком Выберите журналы, которые нужно добавить в приемник добавьте новую строку. Введите следующее правило для фильтра "Включить":

    NOT LOG_ID("appengine.googleapis.com/nginx.request") AND NOT
    LOG_ID("appengine.googleapis.com/request_log")
    
  5. Чтобы отключить ведение журналов для балансировщика нагрузки, добавьте новую строку с правилом для фильтра "Включить":

    NOT LOG_ID("requests")
    
  6. Чтобы изменения вступили в силу, обновите приемник. Теперь запросы App Engine не будут регистрироваться.

  7. Откройте интерфейс просмотра журналов и убедитесь, что новые запросы не регистрируются.

Ведение журнала консоли

Если события, которые относятся к серверу тегов, клиентам или тегам, регистрируются в журнале консоли, это может привести к увеличению расходов на ведение журналов. Чтобы избежать этого, отключите ненужные сообщения в журнале консоли.

Определите, какие записи в журнале консоли вам не нужны. Для этого выполните следующие действия:

  1. Откройте интерфейс просмотра журналов в GCP.
  2. Посмотрите сообщения, которые генерируются тегами, и выберите ненужные. Пример:

    Тег может отправлять в журнал следующие записи:

    const logToConsole = require('logToConsole');
    
    logToConsole('Custom message: ' + data.param1);
    logToConsole('An important message to keep around!');
    data.gtmOnSuccess()
    

    Найдите соответствующие сообщения в поле textPayload:
    Скриншот из интерфейса просмотра журналов GCP: пример записей.

Чтобы отключить ведение журнала консоли, выполните следующие действия:

  1. Откройте Маршрутизатор журналов на платформе Google Cloud. Убедитесь, что выбранный проект соответствует идентификатору контейнера:
    Скриншот из Менеджера тегов: меню выбора проектов GCP с идентификатором контейнера.
  2. В строке с типом сегмент Cloud Logging и названием _Default откройте дополнительное меню и нажмите Изменить приемник.
  3. В разделе Место назначения выберите сегмент для журналов _Default.
  4. Под заголовком Выберите журналы, которые нужно добавить в приемник добавьте новую строку. Введите следующее правило для фильтра "Включить":

    NOT textPayload:"Custom message:"
    

    Замените текст Custom message: на подстроку из журнала консоли, которую вы не хотите регистрировать. Чтобы применять более сложные фильтры, воспользуйтесь командами языка запросов к журналам.

  5. Чтобы изменения вступили в силу, обновите приемник. Теперь сообщения, соответствующие logToConsole, не должны регистрироваться в журнале.

  6. Откройте интерфейс просмотра журналов и убедитесь, что новые сообщения консоли не регистрируются.

3. Сопоставьте развертывание с пользовательским доменом

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

Как сопоставить субдомен сайта с сервером тегов

4. Добавьте URL сервера в Google Менеджер тегов

Сделав это, проверьте, будет ли сервер использоваться Google Менеджером тегов.

  1. Откройте Google Менеджер тегов.

  2. Нажмите на серверный контейнер, который хотите назначить серверу тегов.

  3. Откройте настройки серверного контейнера (вкладка Администратор > Настройки контейнера).

  4. Нажмите Добавить URL и вставьте адрес сервера.

  5. Нажмите Сохранить и вернитесь в рабочую область.

5. Проверка

Настроив сервер тегов, убедитесь, что он работает в штатном режиме. В рабочей области Менеджера тегов нажмите кнопку Просмотр. Если страница загрузится, все работает правильно.

Просмотр группы URL

Если вы сопоставили с одним сервером тегов несколько доменов, убедитесь, что все URL доменов добавлены в настройки контейнера.

Если вы добавили несколько URL, то их пути (фрагменты адреса, следующие за доменным именем) должны совпадать.

Работает Не работает
URL 1: example.com/abc
URL 2: example2.com/abc
URL 1: example.com/abc
URL 2: example2.com/def

Если вы добавили несколько URL, то рядом с кнопкой Предварительный просмотр увидите значок выбора URL.

Обновление версии сервера тегов

Последние обновления сервера содержат исправления уязвимостей безопасности и новые функции. Мы рекомендуем обновлять сервер тегов не реже, чем выходят основные версии (например, при переходе с версии 1.x.x на 2.x.x). Вы будете получать уведомления о таких изменениях в Менеджере тегов.

Чтобы обновить сервер тегов, повторно выполните установочный скрипт, используя прежние настройки (текущие настройки применяются по умолчанию).

Чтобы обновить сервер тегов, выполните следующие действия:

  1. Откройте Google Cloud Platform и запустите оболочку Cloud Shell.
  2. Настройте проект Cloud Platform. Замените project ID сохраненным ранее идентификатором проекта GCP:
    gcloud config set project project ID
  3. Выполните установочный скрипт, используя прежние настройки (текущие настройки применяются по умолчанию).
    bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"

Чтобы убедиться, что обновление прошло успешно, выполните следующие действия:

  1. В серверном контейнере нажмите кнопку Предварительный просмотр, чтобы начать новый сеанс отладки, и отправьте запрос на отдельной вкладке.
  2. В разделе "Сводка" выберите вкладку Консоль и проверьте, нет ли сообщений о том, что нужно обновить сервер тегов.

В течение дня после успешного обновления сервера тегов вы можете по-прежнему видеть сообщения с просьбой обновить его. Однако на странице предварительного просмотра будет указана актуальная информация о версии сервера тегов.

Устранение неполадок: превышено время ожидания при рабочем развертывании

При выполнении установочного скрипта с целью создания или повторного конфигурирования сервера тегов может быть превышено время ожидания. Это может быть связано с несколькими факторами. Вот наиболее типичные из них:

  1. Неправильные разрешения у сервисных аккаунтов. Для развертывания и обслуживания рабочей среды используются сервисные аккаунты Compute Engine и App Engine. У них есть определенные разрешения, заданные по умолчанию. Однако эти разрешения могут быть неправильными из-за политики организации.

    1. Откройте Google Cloud Console и на панели навигации слева выберите IAM & Admin (IAM и администрирование).
    2. Найдите сервисные аккаунты Compute Engine (<project_number>-compute@developer.gserviceaccount.com) и App Engine (<project_name>@appspot.gserviceaccount.com).
    3. Убедитесь, что им назначена роль Editor. Если у любого из этих аккаунтов нет роли Editor, добавьте ее. Для этого в строке аккаунта справа нажмите на значок карандаша, откройте раскрывающееся меню текущей роли, прокрутите вверх и выберите Project (Проект) > Editor (Редактор).
  2. Недостаточная квота. При выполнении рабочего развертывания используется квота Compute Engine. Если в проекте она исчерпана или слишком мала, при инициализации ресурсов может быть превышено время ожидания развертывания.

    1. Откройте Google Cloud Console и на панели навигации слева выберите IAM & Admin (IAM и администрирование). Затем перейдите на вкладку Quotas (Квоты).
    2. В верхней части страницы нажмите на текстовое поле Filter table (Введите фильтр) и добавьте в него Compute Engine API. Нажмите на единственный результат.
    3. Убедитесь, что квоты не израсходованы и отмечены зеленой галочкой.
    4. Нажмите на поле ЦП. Проверьте, что текущие проекты и развертываемые экземпляры не превышают ограничений для региона развертывания.