使用 Cloud Run 设置服务器端代码植入

本指南介绍了如何完成以下操作:

  • 配置预览服务器,以便为容器启用预览功能。
  • 配置代码植入服务器以处理实时流量。
  • 增加或减少运行 Google 跟踪代码管理器容器的服务器数量。
  • 在配置服务器后及时更新代码植入服务器的版本。

前提条件

  1. 您需要有一个 GCP 账号。如果没有,请创建一个新的 GCP 账号
  2. 您需要有一个 GCP 结算账号。如果没有,请创建一个 GCP 结算账号(需要拥有 Billing Account Creator 角色)。
  3. 您需要拥有 Project Creator 和 Billing Account User 角色。详细了解如何添加角色

配置预览服务器和代码植入服务器

您可以在 Google 跟踪代码管理器中自动配置 Cloud Run 服务,也可以在 Google Cloud 中手动进行配置。

若要在 Cloud Run 中设置 Google 跟踪代码管理器服务器容器,请按以下步骤操作:

  1. 打开 Google 跟踪代码管理器
  2. 在账号的溢出菜单 中,点击创建容器
  3. 容器设置中,为您的新容器命名,然后选择服务器。点击创建。容器创建完成后,您将看到一个设置屏幕。
  4. 点击自动配置代码植入服务器
  5. 为您的容器选择或创建结算账号,并创建服务器。
    结果:Google 跟踪代码管理器使用测试配置将代码植入服务器部署到 Cloud Run,并将 Cloud Run 网域添加为代码植入服务器网址。

    包含服务器配置信息的叠加层的屏幕截图
    默认网址由 Google Cloud Run 自动生成和分配。该网址包含 https://[GOOGLE_CLOUD_PLATFORM_PROJECT_ID]-[GOOGLE_CLOUD_REGION_ID].a.run.app。使用自动配置设置时,Google Cloud 区域始终为 us-central1,因此区域 ID 为 uc

自动配置工作流只能运行一次。若要更改配置,请按以下步骤操作:

修改服务配置

若要更改服务配置,请按以下步骤操作:

  1. 打开 Cloud Run
  2. 选择需要调整的服务。
  3. 点击修改和部署新的修订版本
  4. 做出所需更改,然后点击部署

Cloud Run 费用

在此 Cloud Run 配置中,每个服务器每月的费用约为 45 美元。每个服务器都是一个 Cloud Run 实例,具有 1 个 vCPU 和 0.5 GB 的内存且采用“始终分配 CPU”定价模式。

建议您运行至少 2 个实例,以降低服务器中断时数据丢失的风险。不过,您可以选择减少(或增加)运行的服务器数量。自动扩缩的 2-10 个服务器预计每秒可处理 35-350 个请求,不过性能会因代码的数量及代码的用途而异。

Cloud Run 会根据负载情况动态扩缩。就您需要为资源支付的费用而言,使用 max-instances 设置是最糟糕的情况。除非必要,否则 Cloud Run 不会配置那么多实例。

Cloud Run 计算器

可选:从 App Engine 迁移

如果您之前已创建 App Engine 部署且已验证其不再接收任何流量,请停用 App Engine 应用,以防止产生意外结算费用。

可选:多区域部署

如果您的网站面向全球,或者您想在服务中构建冗余,不妨将代码植入服务器部署到多个区域

准备工作:

  1. 创建负载均衡器
  2. 记下您选择的 BACKEND_NAME

如需向部署添加更多区域,请执行下列操作:

  1. REGION 替换为部署预览服务器所在的区域。如果您按照命令行选项来配置预览和代码植入服务器,这一内容可能已经填好了。
  2. CONTAINER_CONFIG 替换为跟踪代码管理器中的容器配置字符串。如果您按照命令行选项来配置预览和代码植入服务器,这一内容可能已经填好了。
  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

可选:停用日志记录

请求日志记录

默认情况下,系统会记录每个请求的相关信息(例如请求路径、查询参数等)。如果代码植入服务器每月处理大量请求(例如超过 100 万个),则这些日志消息可能会产生高昂的日志记录费用。若要减少或削减日志记录费用,建议您停用请求日志记录。

若要停用请求日志记录,请按以下步骤操作:

  1. 在 Google Cloud Platform 中,打开日志路由器。确保您正在查看的项目与您的容器 ID 一致:
    GCP 项目选择器的屏幕截图,其中显示了一个示例跟踪代码管理器容器 ID。
  2. 对于类型,请选择Cloud Logging 存储桶名称则选择 _Default 行,再选择溢出菜单,然后点击修改接收器
  3. 接收器目标位置下,选择日志存储桶 _Default
  4. 选择要包含在接收器中的日志下另起一行。将以下规则添加到现有包含过滤器中:

    NOT LOG_ID("run.googleapis.com/requests")
    
  5. 如果还要停用来自负载均衡器的日志记录,请另起一行并在现有包含过滤器中输入以下规则:

    NOT LOG_ID("requests")
    
  6. 更新接收器以应用所做的更改。现在,这些请求将从日志记录中排除。

  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 中,打开日志路由器。确保您正在查看的项目与您的容器 ID 一致:
    GCP 项目选择器的屏幕截图,其中显示了一个示例跟踪代码管理器容器 ID。
  2. 对于类型,请选择Cloud Logging 存储桶名称则选择 _Default 行,再选择溢出菜单,然后点击修改接收器
  3. 接收器目标位置下,选择日志存储桶 _Default
  4. 选择要包含在接收器中的日志下另起一行。将以下规则添加到现有包含过滤器中:

    NOT textPayload:"Custom message:"
    

    对于控制台日志,请将 Custom message: 文本替换为您要停用的控制台日志中的子字符串。如需详细了解过滤器,请使用日志记录查询语言

  5. 更新接收器以应用所做的更改。匹配的 logToConsole 消息应从日志记录中排除。

  6. 确认 Logs Explorer 中未显示新的控制台日志消息。

2. 将部署映射到自定义网域

若要设置自定义网域,请使用全球外部应用负载均衡器

3. 将服务器网址添加到 Google 跟踪代码管理器

您已配置服务器,接下来需要确保 Google 跟踪代码管理器知道其应使用您的服务器。

  1. 打开 Google 跟踪代码管理器

  2. 点击要指向代码植入服务器的服务器容器。

  3. 管理标签页 > 容器设置中打开服务器容器的设置。

  4. 点击添加网址,然后粘贴您的服务器的网址。

  5. 点击保存,然后返回到您的工作区。

4. 验证

设置好代码植入服务器后,请确保其可按预期运行。在跟踪代码管理器工作区中,点击预览按钮。如果预览页面成功加载,表示所有设置都正确无误。

预览多个网址

如果您将多个网域映射到了单个代码植入服务器,请确保将每个网址都添加到容器设置中。

如果您提供了多个网址,则所有路径(域名后面的字符串)必须相同。

正常运行 无法正常运行
网址 1:example.com/abc
网址 2:example2.com/abc
网址 1:example.com/abc
网址 2:example2.com/def

如果您添加了多个网址,可通过预览按钮旁边的图标选择要预览的网址。

更新代码植入服务器的版本

新发布的代码植入服务器更新可修复安全漏洞且包含新功能。当跟踪代码管理器通知您进行更新时,建议至少对代码植入服务器的主要版本进行更新(例如,从版本 1.xx 升级到版本 2.xx)。

如需更新代码植入服务器,请使用您之前所用的设置部署新的修订版本。

  1. 打开 Cloud Run
  2. 选择要更新的服务。
  3. 点击修改和部署新的修订版本
  4. 确保将容器映像网址设置为 gcr.io/cloud-tagging-10302018/gtm-cloud-image:stable,然后点击部署

如需验证更新是否成功执行,请执行下列操作:

  1. 在服务器容器中,点击预览按钮启动新的调试会话,并在单独的标签页上发送请求。
  2. 在“摘要”中,选择控制台标签页,确保没有提示您更新代码植入服务器的消息。

跟踪代码管理器可能会显示要求您更新代码植入服务器的信息,最长持续到服务器成功更新后一天。不过,预览页面会显示与代码植入服务器版本相关的最新消息。