您可以在 Compute Engine 项目中启用 Cloud DNS 查询日志,并使用这些日志来监控和比较迁移到区域内部 DNS 之前和之后的内部 DNS 失败率。日志条目会记录成功的 DNS 解析,以及内部 DNS 无法解析给定域名的情况。
概览
如需使用 Cloud DNS 查询日志监控内部 DNS 故障率,请完成以下步骤:
- 获取包含要监控的虚拟机的 VPC 的 Virtual Private Cloud (VPC) 网络名称。
- 使用 VPC 网络名称运行 Google Cloud CLI 命令,以启用 DNS 查询日志记录。
- 在 Logs Explorer 中运行查询,以直观呈现并调查成功率和失败率。
Cloud DNS 查询日志记录的价格信息
启用 Cloud DNS 查询日志记录后,系统会生成大量日志,其中许多日志与内部 DNS 无关。因此,使用此功能可能会产生费用。一般来说,每个项目每月前 50 GiB 的日志存储空间是免费的。每增加 50 GiB,需支付 0.50 美元。
如需详细了解价格,请参阅 Cloud Logging 价格摘要。
获取 Virtual Private Cloud (VPC) 网络名称
如需捕获 DNS 查询数据,您必须为计算实例所用的 VPC 网络启用日志记录。通常,一个 Google Cloud 项目有多个 VPC 网络。您可以使用 gcloud CLI 命令列出要监控的计算实例所使用的 VPC 网络。
控制台
在 Google Cloud 控制台中,前往虚拟机实例页面。
可选:使用 过滤条件框限制显示的实例数量。
点击要检查的实例的名称。
在网络部分的网络接口下,您可以查看为实例创建的网络接口 (NIC)、与每个 NIC 关联的网络和子网以及分配给它们的 IP 地址。
gcloud
如需查看项目中所有计算实例使用的 VPC 网络,请使用
gcloud compute instances list命令。您可以向该命令附加--format选项,以限制返回到特定字段的信息并更改其显示方式,例如:gcloud compute instances list \ --format="flattened(name,networkInterfaces[].name, \ networkInterfaces[].network.basename(), \ networkInterfaces[].stackType, networkInterfaces[].nicType)"输出类似于以下内容:
name: test-gvnic networkInterfaces[0].name: nic0 networkInterfaces[0].network: default networkInterfaces[0].nicType: GVNIC networkInterfaces[0].stackType: IPV4_ONLY --- name: test-multinic networkInterfaces[0].name: nic0 networkInterfaces[0].network: default networkInterfaces[0].nicType: GVNIC networkInterfaces[0].stackType: IPV4_ONLY networkInterfaces[1].name: nic0.14 networkInterfaces[1].network: net0 networkInterfaces[1].stackType: IPV4_ONLY networkInterfaces[2].name: nic1 networkInterfaces[2].network: prod-ipv6 networkInterfaces[2].nicType: GVNIC networkInterfaces[2].stackType: IPV4_IPV6
如需查看特定计算实例的网络接口 (NIC) 及其分配的 VPC 网络,请使用
gcloud compute instances describe命令。您可以向该命令附加--format选项,以限制返回到特定字段的信息并更改其显示方式,例如:gcloud compute instances describe INSTANCE_NAME --zone=ZONE \ --format="flattened(name,networkInterfaces[].name, \ networkInterfaces[].network.basename(), \ networkInterfaces[].stackType, networkInterfaces[].nicType)"
替换以下内容:
INSTANCE_NAME:要查看的实例的名称ZONE:您要查看的实例的可用区。
输出类似于以下内容:
name: test-instance networkInterfaces[0].name: nic0 networkInterfaces[0].network: default networkInterfaces[0].nicType: GVNIC networkInterfaces[0].stackType: IPV4_ONLY networkInterfaces[1].name: nic1 networkInterfaces[1].network: prod-ipv6 networkInterfaces[1].nicType: GVNIC networkInterfaces[1].stackType: IPV4_IPV6 networkInterfaces[1].name: nic1.2 networkInterfaces[1].network: alt-ipv6-net networkInterfaces[1].nicType: GVNIC networkInterfaces[1].stackType: IPV4_IPV6 networkInterfaces[1].parentNicName: nic1
启用 Cloud DNS 查询日志记录
Cloud DNS 日志记录功能会跟踪域名服务器为您的 VPC 网络解析的查询,以及从外部实体直接到公开区域的查询。
所记录的查询可能来自 Compute Engine 实例、同一 VPC 网络中的 Google Kubernetes Engine 容器、对等互连可用区,或者使用入站 DNS 转发的本地客户端。专用 DNS 区域、转发 DNS 区域、备用域名服务器、内部 Google Cloud DNS 区域或外部 DNS 区域可能会最终解析查询。
日志记录归属于传输请求的网络或公开区域所属的项目。对于共享 VPC,日志记录归属于宿主项目,因为宿主项目拥有该网络。
如需启用 DNS 日志记录,请执行以下操作之一:
运行
gcloud dns policies create命令,创建一个启用日志记录的新 DNS 政策。gcloud dns policies create POLICY_NAME \ --networks=NETWORK_NAMES \ --enable-logging \ --description="Enable DNS query logging for NETWORK_NAMES"如果网络已具有 DNS 政策,请运行
gcloud dns policies update命令来更新现有的日志记录政策。gcloud dns policies update POLICY_NAME \ --networks=NETWORK_NAMES \ --enable-logging \
替换以下内容:
- POLICY_NAME:DNS 政策的名称
- NETWORK_NAMES:以英文逗号分隔的网络名称列表
如需详细了解如何创建和启用 DNS 政策以进行日志记录,请参阅使用 Cloud DNS 日志记录。
使用 Logs Explorer 查看日志并直观呈现 DNS 故障率
启用 DNS 日志记录后,项目开始在日志浏览器中累积日志。如需查看这些日志,请使用 Google Cloud 控制台并前往 Logs Explorer 页面。
监控 DNS 名称解析失败
使用 NXDOMAIN 响应代码来隔离不存在的网域失败。当内部 DNS 无法解析给定的域名时,就会发生这些故障。
在 Logs Explorer 控制台页面上的查询框中,输入以下文本:
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NXDOMAIN"点击运行查询。
监控成功的名称解析查询
使用 NOERROR 响应代码来隔离成功的 DNS 解析。
在 Logs Explorer 控制台页面上的查询框中,输入以下文本:
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NOERROR"点击运行查询。
确定分析时间范围
您可以使用日志时间范围选择器更改所分析日志的时间范围。此选择器位于日志浏览器窗口的右上角。
为了有效比较错误率和成功率,您必须先启用 DNS 查询日志,然后再迁移为使用区域级 DNS。Google 建议您在迁移前至少 24 小时启用 DNS 查询日志记录,以建立迁移前基准。
在 DNS 查询日志中收集到足够的数据后,您可以执行区域级 DNS 迁移。您可以在迁移期间监控 DNS 解析率,以确保迁移不会导致 DNS 查询失败次数增加。
分析和比较 DNS 名称解析率
使用以下内容来分析和比较错误率和成功率。
日志数量:对于每个查询和时间段,Logs Explorer 都会显示找到的日志条目数量。如果迁移后,之前已解析(具有
NOERROR)的 DNS 名称的NXDOMAIN数量显著增加,则可能表明存在问题。直方图:日志浏览器界面包含直方图。运行查询时,直方图会显示选定时间范围内匹配日志条目的频率。这对于直观呈现以下内容非常有用:
- 迁移前的基准日志条目速率(
NXDOMAIN)。 - 迁移后
NXDOMAIN日志条目出现任何峰值。 NOERROR日志条目速率的变化。
如需查看直方图,请依次点击偏好设置、查看和显示时间轴。
- 迁移前的基准日志条目速率(
后续步骤
- 详细了解 Compute Engine 的内部 DNS 名称。
- 查看计算实例的网络配置。
- 详细了解如何使用日志浏览器查看日志。