В этом руководстве объясняется:
- как вручную инициализировать сервер тегов на платформе App Engine в Google Cloud Platform;
- как подготовить автоматически инициализированный сервер тегов к обработке реального трафика;
- как добавлять и убирать серверы, на которых работает серверный контейнер.
Вам понадобится:
- создать проект в Google Cloud Platform или открыть готовый проект на Google Cloud Console;
- запустить сценарий командной оболочки с пошаговыми инструкциями по созданию сервера тегов или изменению его конфигурации.
По умолчанию при автоматической инициализации создается тестовая конфигурация, которая подходит для предварительного просмотра и проверки контейнера в Менеджере тегов. Она не выдержит большой поток трафика, поэтому перед началом использования сервера рекомендуем перевести его на рабочую конфигурацию. В этом вам поможет сценарий командной оболочки.
Как правило, с тестовой конфигурацией можно работать бесплатно. Такая конфигурация в стандартной среде относится к экземплярам App Engine класса F1.
После перехода на рабочую конфигурацию один сервер будет стоить приблизительно 40 долларов США в месяц. Каждый такой сервер – это экземпляр App Engine в гибкой среде, располагающий 1 ВЦП, 0,5 ГБ ОЗУ и 10 ГБ памяти. Мы рекомендуем использовать для каждого контейнера как минимум по три сервера, чтобы сократить риск потери данных в случае сбоя одного из них. Но это исключительно ваше решение: вы можете использовать и меньше серверов, и больше. Ориентировочно автомасштабирование до 3–6 серверов (настройка по умолчанию) позволяет обрабатывать по 50–200 запросов в секунду, однако этот показатель зависит от количества и функций тегов.
Узнайте, как контролировать расходы на App Engine и настраивать оповещения о превышении бюджета. Мы настоятельно рекомендуем использовать такие оповещения.
Создание проекта Google Cloud Platform (GCP)
Если вы автоматически инициализировали сервер GCP, то у вас уже есть проект GCP. Вы найдете его в списке доступных проектов на сайте console.cloud.google.com. Идентификатор проекта будет состоять из идентификатора контейнера и суффикса – последовательности случайных символов.
Если вы не использовали автоматическую инициализацию сервера GCP, создайте проект самостоятельно.
Если вы ещё не пользуетесь GCP, зарегистрируйтесь и создайте платежный аккаунт.
Если вы зарегистрированы в GCP, создайте проект. Вы можете дать ему любое название, но для удобства рекомендуем использовать идентификатор контейнера. Это название будет использоваться только в GCP. Идентификатор проекта запишите или скопируйте себе.
Создание сервера тегов и изменение его конфигурации
- Откройте Google Cloud Platform и запустите оболочку Cloud Shell.
Настройте проект Cloud Platform. Фрагмент
<PROJECT_ID>
замените на скопированный ранее идентификатор проекта GCP:gcloud config set project <PROJECT_ID>
Выполните команду ниже, а затем следуйте инструкциям в сценарии.
bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
В сценарии командной оболочки можно:
- создавать серверы тегов;
- добавлять серверы для перехода на рабочую конфигурацию;
- менять настройки серверов тегов.
Настройка URL серверного контейнера
Если вы инициализировали сервер автоматически, пропустите этот пункт.
Приложение будет развернуто в субдомене App Engine. Чтобы узнать его URL, выполните такую команду:
gcloud app browse
Скопируйте этот URL и перейдите к серверному контейнеру Менеджера тегов (Администратор > Настройки контейнера). Вставьте скопированную ссылку в поле "URL серверного контейнера", нажмите "Сохранить" и вернитесь обратно.
Проверка
Включите в Менеджере тегов предварительный просмотр контейнера. Если страница загрузится, все работает правильно.
Сопоставление пользовательского домена
Создав сервер тегов, пропишите в его настройках субдомен вашего сайта.
Отключение ведения журналов запросов App Engine (необязательно)
App Engine по умолчанию регистрирует полученную информацию о каждом запросе (его путь, параметры и т. д.). Если сервер тегов обрабатывает много запросов в месяц (например, больше миллиона), их регистрация может быть довольно затратной. Чтобы сократить расходы на ведение журналов или вовсе избежать их, отключите регистрацию запросов App Engine. Для этого выполните следующие действия:
- Нажмите Журналы -> Маршрутизатор журналов. Убедитесь, что выбранный проект соответствует идентификатору контейнера:
- В строке Тип: Сегмент Cloud Logging, Название: _Default выберите дополнительное меню и нажмите Изменить приемник.
- В разделе Место назначения выберите сегмент для журналов _Default.
- В разделе Выберите журналы, которые нужно добавить в приемник в новой строке для фильтра "Включить" добавьте этот текст:
NOT LOG_ID("appengine.googleapis.com/nginx.request") AND NOT LOG_ID("appengine.googleapis.com/request_log")
.
- Чтобы отключить ведение журналов для балансировщика нагрузки, добавьте следующий текст в новую строку существующего фильтра "Включить":
NOT LOG_ID("requests")
. Примечание. Будут отключены все журналы для балансировщика нагрузки, в том числе для запросов, которые не отправляются в серверный контейнер. - Внизу нажмите кнопку Обновить приемник.
Теперь запросы App Engine не будут регистрироваться. Нажмите Журналы -> Журналы и убедитесь, что нет записей о новых запросах.
Устранение неполадок: превышение времени ожидания при рабочем развертывании
При выполнении скрипта настройки для создания или повторного конфигурирования сервера тегов может быть превышено время ожидания. Это связано с несколькими факторами. Вот наиболее типичные из них:
Неправильные разрешения у сервисных аккаунтов. Compute Engine и App Engine – это сервисные аккаунты, предназначенные для развертывания и поддержки рабочего развертывания. У них есть определенные разрешения, заданные по умолчанию. Однако эти разрешения могут быть неправильными из-за политики организации.
- Откройте Google Cloud Console и выберите IAM и администрирование на левой панели навигации.
- Найдите сервисные аккаунты Compute Engine
<project_number>-compute@developer.gserviceaccount.com
и App Engine<project_name>@appspot.gserviceaccount.com
. - Убедитесь, что им назначена роль
Editor
. Если у любого из этих аккаунтов нет ролиEditor
, добавьте ее. Для этого нажмите на значок карандаша справа от аккаунта, откройте раскрывающееся меню существующей функции и перейдите в его верхнюю часть. Выберите Проект > Редактор.
Недостаточная квота. При выполнении рабочего развертывания используется квота Compute Engine. Если проекту не хватает ресурсов, система пытается получить их. Это может привести к превышению времени ожидания развертывания.
- Откройте Google Cloud Console и выберите IAM и администрирование на левой панели навигации. Затем перейдите на вкладку Квоты.
- В верхней части страницы нажмите на текстовое поле Введите фильтр и введите
Compute Engine API
. Нажмите на единственный результат. - Убедитесь, что статусы квот не превышают ограничений и отмечены зеленой галочкой.
- Выберите ЦП. Убедитесь, что текущие проекты и развертываемые экземпляры не превышают ограничений для региона развертывания.