本页介绍了 Cloud DNS 的日志记录与监控指标,包括 公开区域、 专用区域、 转发区域。 本页还提供了有关监控公共 DNS 更改传播的说明。
使用 Cloud DNS 日志记录
Cloud DNS 日志记录功能会跟踪域名服务器为您的 Virtual Private Cloud (VPC) 网络解析的查询,以及从外部实体直接到公开区域的查询。
所记录的查询可能来自使用同一 VPC 网络的 Compute Engine 虚拟机 (VM) 实例、同一 VPC 网络中的 Google Kubernetes Engine 容器、对等互连区域或入站 DNS 转发。专用 DNS 可用区、转发 DNS 可用区、备用域名服务器、内部 Google Cloud DNS 可用区或外部 DNS 可用区可能会最终解析查询。
日志记录归属于传输请求的网络 或公开区域 所属的项目。对于共享 VPC,日志记录归属于宿主项目,因为宿主项目拥有网络。
为专用代管区域启用和停用日志记录功能
使用 DNS 政策为您的网络启用或停用日志记录功能。启用查询日志记录时,系统会记录对 Cloud DNS 专用代管区域的每个 DNS 查询。
如需为为没有 DNS 政策的网络启用日志记录,请运行 dns policies create
命令。
gcloud
gcloud dns policies create POLICY_NAME \ --networks=NETWORK \ --enable-logging \ --description=DESCRIPTION
请替换以下内容:
POLICY_NAME
:DNS 政策的名称NETWORK
:英文逗号分隔列表中的一个或多个网络DESCRIPTION
:政策的说明
如需为具有 DNS 政策的网络启用日志记录,请运行 dns policies update
命令。
gcloud
gcloud dns policies update POLICY_NAME \ --networks=NETWORK \ --enable-logging
请替换以下内容:
POLICY_NAME
:DNS 政策的名称NETWORK
:英文逗号分隔列表中的一个或多个网络
如需在保留政策的同时关闭日志记录,请运行 dns policies update
命令。
gcloud
gcloud dns policies update POLICY_NAME \ --networks=NETWORK \ --no-enable-logging
请替换以下内容:
POLICY_NAME
:DNS 政策的名称NETWORK
:英文逗号分隔列表中的一个或多个网络
如需完全删除政策,请运行 dns policies delete
命令。
gcloud
gcloud dns policies delete POLICY_NAME \
将 POLICY_NAME
替换为您要删除的 DNS 政策的名称。
为公开代管区域启用和停用日志记录功能
如需为现有公开代管区域启用日志记录功能,请运行 dns managed-zones update
命令。
gcloud
gcloud dns managed-zones update ZONE_NAME --log-dns-queries \
将 ZONE_NAME
替换为要为其启用日志记录功能的 DNS 代管区域的名称。
如需为现有的公开代管区域停用日志记录功能,请运行 dns managed-zones update
命令。
gcloud
gcloud dns managed-zones update ZONE_NAME --no-log-dns-queries \
将 ZONE_NAME
替换为您要为其停用日志记录功能的 DNS 代管区域的名称。
查看日志
控制台
在 Google Cloud 控制台中,转到日志浏览器页面。
查看记录格式字段
如果适用,每个日志条目都包含以下字段。部分字段还与监控指标共享。
字段 | 字段类型 | 说明 | 用于指标中 |
---|---|---|---|
alias_query_response_code (预览版) |
字符串 | 从查询中返回的响应代码,用于解析 ALIAS 记录的规范名称。 | 是 |
source_type |
字符串 | 查询的来源:inbound-forwarding 、gce-vm |
是 |
location |
字符串 | 提供响应的 Google Cloud 区域(例如 us-east1 ) |
是 |
project_id |
字符串 | 接收查询的网络的 Google Cloud 项目 ID | 是 |
target_type |
字符串 | 解析 DNS 查询的目标类型:private-zone 、forwarding-zone 、forwarding-policy 、peering-zone 、internal 、external |
是 |
target_name |
字符串 | 目标名称,例如区域名称、政策名称、内部区域名称、外部域名 | 是 |
queryName |
字符串/DNS | DNS 查询名称,RFC 1035 4.1.2。 | 否 |
queryType |
字符串/DNS | DNS 查询类型,RFC 1035 4.1.2。 | 否 |
responseCode |
数字/DNS | 响应代码,RFC 1035 4.1.1。 | 否 |
rdata |
字符串/DNS | 演示格式的 DNS 应答,RFC 1035 5.1,截断为 260 个字节 | 否 |
authAnswer |
布尔值/DNS | 权威应答,RFC 1035 | 否 |
sourceNetwork |
字符串/来源 | 访问我们系统的查询的来源网络 | 否 |
vmInstanceId |
号码/来源 | Compute Engine 虚拟机实例 ID,仅适用于 Compute Engine 虚拟机发起的查询 | 否 |
vmInstanceName |
字符串/来源 | Compute Engine 虚拟机实例名称,仅适用于 Compute Engine 虚拟机发起的查询 | 否 |
vmProjectId |
字符串/来源 | 发送查询的网络的 Google Cloud 项目 ID,仅适用于由 Compute Engine 虚拟机发起的查询 | 否 |
vmZoneName |
字符串/来源 | 发送查询的虚拟机区域的名称,仅适用于由 Compute Engine 虚拟机发起的查询 | 否 |
sourceIP |
字符串/来源 | 发起查询的 IP | 否 |
destinationIP |
字符串/目标 | 目标 IP 地址,仅适用于转发情况 | 否 |
protocol |
字符串/DNS | TCP | UDP |
否 |
healthyIps |
字符串 | ResourceRecordSet 中的一组 IP 地址,对于 Cloud DNS,这些地址在查询时已知处于 |
否 |
unHealthyIps |
字符串 | ResourceRecordSet 中的一组 IP 地址,对于 Cloud DNS,这些地址在查询时已知处于 |
否 |
egressError |
字符串 | 出站代理错误,即从本地 DNS 服务器收到的出站代理报告的实际错误 此字段可用于区分由本地 DNS 返回的实际 SERVFAIL 与出站代理遇到的网络连接错误。 |
否 |
价格
所有 Cloud DNS 日志都会写入 Cloud Logging。Cloud DNS 不对此服务单独收费。但是,这些日志可能会产生额外的存储费用,具体取决于写入和存储的日志的大小。
为便于计算,您可以理解为 Cloud DNS 会写入大约 5 MB 的日志数据来处理 10000 个 DNS 查询。
如需了解 Cloud Logging 价格,请参阅 Google Cloud Observability 价格:Cloud Logging。
排查出站转发问题
如果您收到包含 SERVFAIL
且缺少某些字段(如 destinationIP
、egressIP
和egressError
)的日志,请参阅“问题排查”文档中的相关部分。
监控指标
Cloud DNS 会将监控指标导出到 Cloud Monitoring。
您可以监控指向专用区域、转发区域、政策转发、内部 Google Cloud 区域和互联网的 DNS 查询和响应的速率。Google Cloud 控制台的 Monitoring 页面和 Cloud Monitoring API 中提供了 Monitoring。
专用 DNS 会导出包含 response_code
标签的 dns.googleapis.com/query/response_count
增量指标,以计算每个响应代码的查询数。
response_code
标签的类型为 string
,可能的值为:NOERROR
、FORMERR
、SERVFAIL
、NXDOMAIN
、NOTIMP
和 UNKNOWN
。如需了解这些代码的定义,请参阅 IANA DNS RCODEs。
系统会使用日志记录格式的适用字段,在 dns_query
资源类型下导出指标。
监控 DNS 传播
当您使用 Google Cloud CLI 或 REST API 进行更改时,更改最初会被标记为待处理,直到操作完成。您可以使用 gcloud CLI 或 REST API 检查更改状态或获取更改历史记录。
在 Cloud DNS 成功更新用于控制服务器的系统后,操作完成(状态:done
)。在更新所有域名服务器之前,可能仍然有延迟。
列出代管可用区的更改
如需列出代管式区域的更改,请运行 dns record-sets changes list
命令。
gcloud
运行 dns record-sets changes list
命令:
gcloud dns record-sets changes list --zone=ZONE
将 ZONE
替换为您要管理其记录集的代管区域的名称。
验证 DNS 传播
如需监控和验证 DNS 域名服务器是否已提取取更改,您可以使用 watch
和 dig
命令。以下示例演示了如何查找域名服务器,以及如何查看代管区域的某个域名服务器何时获取了对 MX
记录的更改。
如需查找您的区域的域名服务器,请运行 dns managed-zones describe
命令:
gcloud dns managed-zones describe ZONE_NAME
将 ZONE_NAME
替换为您的 Cloud DNS 区域的名称。
如需检查权威域名服务器上是否已有可用的记录,请运行以下 dig
命令:
watch dig example.com in MX @ZONE_NAME_SERVER
将 ZONE_NAME_SERVER
替换为代管区域中的一个域名服务器:
默认情况下,watch
命令每 2 秒运行一次 dig
命令。您可以使用此命令来确定权威域名服务器何时拾取您的更改(应在 120 秒内执行此操作)。在权威域名服务器拾取更改后,DNS 解析器就可以开始拾取新记录。如果解析器已经缓存了之前的记录,则它会等到该记录的先前 TTL 值过期后再拾取新记录。
如需对系统的域名服务器运行 dig
,您可以从 dig
命令中移除 @<address>
。如果您想要监控传播到其他域名服务器的情况,可以将 address
更改为指向其他域名服务器。
后续步骤
- 如需添加、删除和更新记录,请参阅添加、修改和删除记录。
- 如需创建、更新、列出和删除代管区域,请参阅管理区域。
- 如需了解您在使用 Cloud DNS 时可能会遇到的常见问题的解决方案,请参阅问题排查。
- 如需引用此 API,请参阅 Cloud DNS REST API。
- 如需大致了解 Cloud DNS,请参阅 Cloud DNS 概览。