Настройка тегов на стороне сервера с помощью Cloud Run

В этом руководстве объясняется, как:

  • Для включения функции предварительного просмотра в контейнере необходимо создать сервер предварительного просмотра.
  • Настройте сервер тегирования для обработки трафика в реальном времени.
  • Увеличьте или уменьшите количество серверов, на которых запущен ваш контейнер Google Tag Manager.
  • После запуска сервера тегирования необходимо поддерживать его версию в актуальном состоянии.

Предварительные требования

  1. Вам потребуется учетная запись GCP. Если у вас ее нет, создайте новую учетную запись GCP .
  2. Вам потребуется учетная запись для выставления счетов GCP. Если у вас ее нет, создайте ее (для этого необходима роль «Создатель учетных записей для выставления счетов»).
  3. Вам необходимы роли «Создатель проекта» и «Пользователь платежной учетной записи». Подробнее о добавлении ролей можно узнать здесь.

Создайте сервер предварительного просмотра и тегирования.

Вы можете запустить службу Cloud Run либо автоматически в Google Tag Manager, либо вручную в Google Cloud.

Отредактируйте конфигурацию службы

Чтобы изменить конфигурацию службы:

  1. Откройте Cloud Run .
  2. Выберите услугу, которую необходимо настроить.
  3. Нажмите «Редактировать и развернуть новую версию» .
  4. Внесите изменения и нажмите «Развернуть» .

Стоимость запуска облачных сервисов

В данной конфигурации Cloud Run каждый сервер стоит приблизительно 45 долларов США в месяц. Каждый сервер представляет собой экземпляр Cloud Run с 1 виртуальным процессором и 0,5 ГБ памяти, использующий модель ценообразования с постоянным выделением ЦП.

Мы рекомендуем запускать как минимум 2 экземпляра, чтобы снизить риск потери данных в случае сбоя сервера. Однако вы можете выбрать меньшее (или большее) количество серверов. Мы ожидаем, что автоматическое масштабирование от 2 до 10 серверов будет обрабатывать 35-350 запросов в секунду, хотя производительность будет варьироваться в зависимости от количества тегов и их функций.

Cloud Run будет динамически масштабироваться в зависимости от нагрузки. Параметр max-instances указывает на наихудший сценарий, определяющий сумму, которую вам придется платить за ресурсы. Cloud Run не будет выделять такое количество экземпляров, если это не необходимо.

Оценка стоимости Cloud Run

Чтобы оценить ежемесячную стоимость работы серверов тегирования, воспользуйтесь калькулятором цен Google Cloud . Калькулятор открывается с предварительно настроенной оценкой для стандартного развертывания серверного тегирования. Вы можете изменить настройки, чтобы получить более точную оценку на основе ожидаемого трафика.

Необязательно: переход с App Engine

Если вы ранее создали развертывание App Engine и убедились, что оно больше не получает трафик, отключите приложение App Engine, чтобы предотвратить неожиданные расходы на оплату.

Дополнительно: развертывание в нескольких регионах.

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

Перед началом:

  1. Создайте балансировщик нагрузки
  2. Запишите выбранное вами BACKEND_NAME .

Чтобы добавить в развертывание дополнительные регионы:

  1. Замените REGION на регион, в котором развернут сервер предварительного просмотра. Возможно, это поле уже заполнено, если вы использовали параметры командной строки для подготовки сервера предварительного просмотра и сервера тегирования.
  2. Замените CONTAINER_CONFIG строкой конфигурации контейнера из Tag Manager. Возможно, это поле уже заполнено, если вы использовали параметры командной строки для подготовки сервера предварительного просмотра и тегирования.
  3. Замените NEW_REGION на новый регион, в котором вы хотите развернуть сервер тегирования.
  4. Замените BACKEND_NAME на имя, которое вы выбрали при настройке балансировщика нагрузки.
  5. Дополнительно: Чтобы добавить еще один регион, замените переменную NEW_REGION и повторно запустите фрагмент кода.
    gcloud run deploy "server-side-tagging" \
    --region NEW_REGION \
    --image gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable \
    --platform managed \
    --ingress all \
    --min-instances 2 \
    --max-instances 10 \
    --timeout 60 \
    --allow-unauthenticated \
    --no-cpu-throttling \
    --update-env-vars PREVIEW_SERVER_URL="$(
      gcloud run services describe server-side-tagging-preview \--region "REGION" \
      --format="value(status.url)")",CONTAINER_CONFIG="CONTAINER_CONFIG" && \

    gcloud compute network-endpoint-groups create server-side-tagging-neg \
    --region=NEW_REGION \
    --network-endpoint-type=SERVERLESS \
    --cloud-run-service="server-side-tagging" && \

    gcloud compute backend-services add-backend --global "BACKEND_NAME" \
    --network-endpoint-group-region=NEW_REGION \
    --network-endpoint-group=server-side-tagging-neg

Дополнительно: Отключить ведение журнала.

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

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

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

  1. В Google Cloud Platform откройте Logs Router . Убедитесь, что вы находитесь в проекте, соответствующем идентификатору вашего контейнера:
    Скриншот селектора проектов GCP, демонстрирующий пример контейнера Tag Manager с ID.
  2. Для строки «Тип : Cloud Logging bucket , Имя : _Default» выберите меню переполнения, затем нажмите «Редактировать приемник» .
  3. В разделе «Назначение приемника» выберите корзину журналов _Default .
  4. В разделе «Выберите журналы для включения в приемник» добавьте новую строку. Добавьте следующее правило к существующему фильтру включения:

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

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

  7. Убедитесь, что в журналах Logs Explorer не появляются новые запросы.

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

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

Выявите нежелательные записи в консольных логах:

  1. В GCP откройте Logs Explorer .
  2. Найдите в логах любые нежелательные сообщения, поступающие от ваших тегов. Например:

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

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

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

Чтобы отключить вывод сообщений в консоль:

  1. В Google Cloud Platform откройте Logs Router . Убедитесь, что вы находитесь в проекте, соответствующем идентификатору вашего контейнера:
    Скриншот селектора проектов GCP, демонстрирующий пример контейнера Tag Manager с ID.
  2. Для строки «Тип : Cloud Logging bucket , Имя : _Default» выберите меню переполнения, затем нажмите «Редактировать приемник» .
  3. В разделе «Назначение приемника» выберите корзину журналов _Default .
  4. В разделе «Выберите журналы для включения в приемник» добавьте новую строку. Добавьте следующее правило к существующему фильтру включения:

    NOT textPayload:"Custom message:"
    

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

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

  6. Убедитесь, что в обозревателе журналов не появляются новые сообщения в консоли.

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

Настройте собственный домен , чтобы использовать домен, отличный от адреса по умолчанию, предоставляемого Cloud Run.

3. Добавьте URL-адрес сервера в Google Tag Manager.

Теперь, когда у вас есть сервер, вам нужно убедиться, что Google Tag Manager знает, что ему следует использовать именно ваш сервер.

  1. Откройте Google Tag Manager.

  2. Щелкните по контейнеру сервера, на который вы хотите указать путь к вашему серверу тегирования.

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

  4. Нажмите «Добавить URL» и вставьте URL вашего сервера.

  5. Сохраните изменения и вернитесь в рабочее пространство.

4. Валидация

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

Предварительный просмотр нескольких 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.xx до 2.xx), когда Tag Manager уведомит вас о необходимости обновления.

Для обновления сервера тегирования разверните новую версию, используя те же настройки, что и ранее.

  1. Откройте Cloud Run .
  2. Выберите службу, которую хотите обновить.
  3. Нажмите «Редактировать и развернуть новую версию» .
  4. Убедитесь, что URL-адрес образа контейнера установлен на gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable , и нажмите « Развернуть» .

Чтобы убедиться в успешности обновления:

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

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