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

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

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

前提条件

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

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

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

修改服务配置

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

  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. 将部署映射到自定义网域

设置自定义网域,以使用 Cloud Run 提供的默认地址以外的网域。

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. 在“摘要”中,选择控制台标签页,确保没有提示您更新代码植入服务器的消息。

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