本指南介绍了如何完成以下操作:
- 在 Google Cloud Platform (GCP) App Engine 上配置代码植入服务器。
- 升级代码植入服务器以处理实时流量。
- 增加或减少运行 Google 跟踪代码管理器容器的服务器数量。
- 在配置服务器后及时更新代码植入服务器的版本。
前提条件
- 您需要有一个 GCP 账号。如果没有,请创建一个新的 GCP 账号。
- 您需要有一个 GCP 结算账号。如果没有,请创建一个 GCP 结算账号(需要拥有 Billing Account Creator 角色)。
- 您需要拥有 Project Creator 和 Billing Account User 角色。详细了解如何添加角色。
1. 预配服务器
若要在 App Engine 实例上创建新的代码植入服务器,您需要执行以下操作:
- 在跟踪代码管理器中创建新的服务器容器
- 创建新的 Google Cloud 项目 (GCP)
- 预配新的 App Engine 代码植入服务器
- 将新代码植入服务器的网址添加到跟踪代码管理器服务器容器中
创建 Google 跟踪代码管理器服务器容器
打开 Google 跟踪代码管理器。
在账号行中,依次点击溢出菜单 > 创建容器。
创建一个新的服务器容器。
点击“手动配置代码植入服务器”单选按钮。记下容器配置,您需要用它来配置服务器。
创建一个新的 GCP 项目
如需为代码植入服务器创建一个新的 GCP 项目,请执行以下操作:
打开 Google Cloud 控制台。
为您的项目命名。为方便起见,建议您使用容器 ID 进行命名。此名称仅在 GCP 内使用。
记下 GCP 项目 ID,因为您需要用它来创建代码植入服务器。
配置一个新的代码植入服务器
如要创建代码植入服务器,请执行以下操作:
打开 Cloud Shell。
在 Cloud Shell 中设置 GCP 项目。将
project ID
替换为您之前记下的 GCP 项目 ID:gcloud config set project project ID
按照 Shell 脚本的指示,创建代码植入服务器。将部署类型设置为
testing
。bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
将代码植入服务器网址添加到跟踪代码管理器
打开 Google 跟踪代码管理器。
在管理 > 容器设置中,点击添加网址。如果您不知道服务器的网址,请在 Cloud Shell 中运行以下命令:
gcloud app browse
结果:您已设置代码植入服务器且为其采用了
testing
配置。现已可以对服务器端代码植入进行测试。
服务器的初始配置 (testing
)
测试配置适用于通过发送少量测试流量并使用跟踪代码管理器中的“预览”功能对产品进行探索。在标准环境中,该配置是 App Engine F1 实例类,大多数情况下不会产生任何费用。
2. 在生产环境中使用 App Engine
在 production
配置中,每个服务器每月的费用约为 40 美元。在柔性环境中,每个服务器都是一个 App Engine 实例,具有 1 个 vCPU、0.5 GB 的内存及容量为 10 GB 的磁盘。
如需了解 App Engine 的计费方式以及如何配置结算提醒,请参阅管理 App Engine 费用。强烈建议您设置结算提醒。
建议使用的生产环境设置
建议您运行至少 3 个服务器,以降低服务器中断时数据丢失的风险。不过,您可以选择减少(或增加)运行的服务器数量。如果在 3-6 个服务器(默认值)的数量范围内自动扩缩,预计每秒可处理 50-200 个请求。性能因代码的数量及代码的用途而异。
如要配置代码植入服务器,请执行以下操作:
- 打开 Google Cloud Platform Cloud Shell。
- 在 Cloud Shell 中设置 Cloud Platform 项目。将
project ID
替换为您之前记下的 GCP 项目 ID:gcloud config set project project ID
- 如需为生产环境重新配置代码植入服务器,请运行下方的设置脚本,并执行以下任务:
bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
- 将部署类型更改为
production
。 - 设置更多服务器以处理生产流量。建议至少使用 3 个服务器。
- 将部署类型更改为
可选:停用日志记录
请求日志记录
默认情况下,App Engine 会记录收到的每个请求的相关信息(例如请求路径、查询参数等)。如果代码植入服务器每月处理大量请求(例如超过 100 万个),则这些日志消息可能会产生高昂的日志记录费用。若要减少或削减日志记录费用,我们建议您停用 App Engine 请求日志记录。
如需停用 App Engine 请求日志记录,请执行以下操作:
- 在 Google Cloud Platform 中,打开日志路由器。确保您正在查看的项目与您的容器 ID 一致:
- 对于类型,请选择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 请求将从日志记录中排除。
确认 Logs Explorer 日志中未显示任何新请求。
控制台日志记录
容器中的代码植入服务器、客户端或代码可能会将消息记录到控制台中,而这可能产生日志记录费用。若要减少或削减日志记录费用,您可以停用不需要的控制台日志消息。
识别不需要的控制台日志:
- 在 GCP 中,打开 Logs Explorer。
查找源自您的代码的所有不需要的日志消息。例如:
代码可能会发送以下日志:
const logToConsole = require('logToConsole'); logToConsole('Custom message: ' + data.param1); logToConsole('An important message to keep around!'); data.gtmOnSuccess()
在
textPayload
字段中查找相应的日志消息:
若要停用控制台日志消息,请执行以下操作:
- 在 Google Cloud Platform 中,打开日志路由器。确保您正在查看的项目与您的容器 ID 一致:
- 对于类型,请选择Cloud Logging 存储桶,名称则选择 _Default 行,再选择溢出菜单,然后点击修改接收器。
- 在接收器目标位置下,选择日志存储桶 _Default。
在选择要包含在接收器中的日志下另起一行。将以下规则添加到现有包含过滤器中:
NOT textPayload:"Custom message:"
对于控制台日志,请将 Custom message: 文本替换为您要停用的控制台日志中的子字符串。如需详细了解过滤器,请使用日志记录查询语言。
更新接收器以应用所做的更改。匹配的
logToConsole
消息应从日志记录中排除。确认 Logs Explorer 中未显示新的控制台日志消息。
3. 将部署映射到自定义网域
默认的服务器端代码植入部署托管在 App Engine 网域上。建议您修改这项部署以使用您网站的子网域。
4. 将服务器网址添加到 Google 跟踪代码管理器
您已配置服务器,接下来需要确保 Google 跟踪代码管理器知道其应使用您的服务器。
打开 Google 跟踪代码管理器。
点击要指向代码植入服务器的服务器容器。
在管理标签页 > 容器设置中打开服务器容器的设置。
点击添加网址,然后粘贴您的服务器的网址。
点击保存,然后返回到您的工作区。
5. 验证
设置好代码植入服务器后,请确保其可按预期运行。在跟踪代码管理器工作区中,点击预览按钮。如果预览页面成功加载,表示所有设置都正确无误。
预览多个网址
如果您将多个网域映射到了单个代码植入服务器,请确保将每个网址都添加到容器设置中。
如果您提供了多个网址,则所有路径(域名后面的字符串)必须相同。
正常运行 | 无法正常运行 |
---|---|
网址 1:example.com/abc 网址 2: example2.com/abc |
网址 1:example.com/abc 网址 2: example2.com/def |
如果您添加了多个网址,可通过预览按钮旁边的图标选择要预览的网址。
更新代码植入服务器的版本
新发布的代码植入服务器更新可修复安全漏洞且包含新功能。当跟踪代码管理器通知您进行更新时,建议至少对代码植入服务器的主要版本进行更新(例如,从版本 1.xx 升级到版本 2.xx)。
如需更新代码植入服务器,请使用您之前所用的设置重新运行设置脚本。现有设置属于默认设置。
如需更新代码植入服务器,请执行以下操作:
- 打开 Google Cloud Platform Cloud Shell。
- 在 Cloud Shell 中设置 Cloud Platform 项目。将
project ID
替换为您之前记下的 GCP 项目 ID:gcloud config set project project ID
- 使用您之前所用的设置运行设置脚本。现有设置属于默认设置。
bash -c "$(curl -fsSL https://googletagmanager.com/static/serverjs/setup.sh)"
如需验证更新是否成功,请执行下列操作:
- 在服务器容器中,点击预览按钮启动新的调试会话,并在单独的标签页上发送请求。
- 在“摘要”中,选择控制台标签页,确保没有提示您更新代码植入服务器的消息。
跟踪代码管理器可能会显示要求您更新代码植入服务器的信息,最长持续到服务器成功更新后一天。不过,预览页面会显示与代码植入服务器版本相关的最新消息。
排查生产部署超时问题
运行设置脚本以创建或重新配置代码植入服务器时,相应脚本可能会超时。出现这种情况的原因有多种,最常见的两种为:
服务账号的权限有误 - Compute Engine 和 App Engine 服务账号负责部署并维护生产环境。默认情况下,系统已分别为二者预先配置了所需权限。但在某些情况下,组织的政策可能会导致所配置的权限有误。
- 转到 Google Cloud 控制台左侧导航栏中的 IAM 和管理页面。
- 查找 Compute Engine 服务账号
<project_number>-compute@developer.gserviceaccount.com
及 App Engine 服务账号<project_name>@appspot.gserviceaccount.com
。 - 两个服务账号都必须具有
Editor
角色。如果其中一个账号没有Editor
角色,请更新相应角色,具体操作为:依次点击相应账号右侧的铅笔图标 > 现有角色的下拉菜单,向上滚动到顶部,然后依次点击 Project > Editor。
配额不足 - 生产环境的部署会消耗 Compute Engine 配额。如果项目没有足够的配额,尝试配置资源时可能会遇到部署超时。
- 转到 Google Cloud 控制台左侧导航栏中的 IAM 和管理页面,然后点击左侧导航栏中的配额标签页。
- 在页面顶部附近,点击过滤表格文本框,然后输入
Compute Engine API
。点击出现的唯一结果。 - 验证是否所有配额都在限额范围内或都有绿色对勾标记。
- 找到并点击 CPU。验证当前使用量以及所部署的实例数是否仍低于部署区域的限额。