使用記錄與監控功能

本頁面針對 Cloud DNS 的記錄和監控指標提供相關說明,包括 公開區域私人區域、 和轉送區域。 本頁面也提供監控公開 DNS 變更傳播的操作指示。

使用 Cloud DNS 記錄

Cloud DNS 記錄會追蹤名稱伺服器為虛擬私有雲 (VPC) 網路解析的查詢,以及外部實體直接向公開區域發出的查詢。

記錄下來的查詢可能來自 Compute Engine 虛擬機器 (VM) 執行個體、相同虛擬私有雲網路內的 Google Kubernetes Engine 容器、對等互連區域,或使用傳入 DNS 轉送的內部部署用戶端。這些查詢最後可能會由私人 DNS 區域解析,並轉送到 DNS 區域、備用名稱伺服器、內部Google Cloud DNS 區域或外部 DNS 區域。

記錄檔屬於執行查詢的網路 或公用區域 所屬的專案。在共用虛擬私有雲的情況下,由於擁有網路的是主專案,因此記錄檔就屬於主專案所有。

啟用及停用私人代管區域的記錄功能

請使用 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 控制台中查看記錄。

主控台

前往 Google Cloud 控制台的「Logs Explorer」頁面。

前往記錄檔探索工具

查看記錄格式欄位

在適用的情況下,每個記錄項目會具有下列欄位。監控指標也會使用其中部分的欄位資訊。

欄位 欄位類型 說明 用於指標
alias_query_response_code (預覽) 字串 查詢傳回的回應代碼,用於解析 ALIAS 記錄的正式名稱
authAnswer 布林值/DNS 權威回答,RFC 1035
destinationIP 字串/目標 目標 IP 位址,僅適用於轉送案例
egressError 字串

輸出 Proxy 錯誤,輸出 Proxy 實際回報的錯誤 (從地端 DNS 伺服器收到)

這個欄位可用於區分內部部署 DNS 傳回的實際 SERVFAIL,以及輸出 Proxy 遇到的網路錯誤

healthyIps 字串

ResourceRecordSet 中的一組 IP 位址,在查詢時已知為 Cloud DNS HEALTHY

location 字串 Google Cloud 地區,例如提供回應的地區中的 us-east1
project_id 字串 Google Cloud 接收查詢的網路所有的專案 ID
protocol 字串/DNS TCP | UDP
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 位元組以後的內容將被截斷。
sourceIP 字串/來源 查詢的 IP 來源。
sourceNetwork 字串/來源 將查詢傳送到系統的來源網路
source_type 字串 查詢來源:inbound-forwardinggce-vminternetpeering-zonefqdn-forwarding-target
target_name 字串 目標名稱,例如區域名稱、政策名稱、內部區域名稱、外部網域名稱
target_type 字串 解析 DNS 查詢的目標類型:private-zoneforwarding-zoneforwarding-policypeering-zoneinternalexternal
unHealthyIps 字串

ResourceRecordSet 中的一組 IP 位址,在查詢時已知為 Cloud DNS UNHEALTHY

vmInstanceId 數字 / 來源 Compute Engine VM 執行個體 ID,僅適用於由 Compute Engine VM 發出的查詢
vmInstanceName 字串/來源 Compute Engine VM 執行個體名稱,僅適用於由 Compute Engine VM 發出的查詢
vmProjectId 字串/來源 Google Cloud 傳送查詢的網路專案 ID,僅適用於由 Compute Engine VM 發出的查詢
vmZoneName 字串/來源 傳送查詢的 VM 區域名稱,僅適用於由 Compute Engine VM 發出的查詢

定價

所有 Cloud DNS 記錄都會寫入 Cloud Logging。這項服務不會產生額外的 Cloud DNS 費用。不過,視寫入及儲存的記錄檔大小而定,這些記錄檔可能會產生額外儲存費用。

計算時,Cloud DNS 處理 10,000 筆 DNS 查詢時,約會寫入 5 MB 的記錄資料。

如要瞭解 Cloud Logging 的定價,請參閱「Google Cloud Observability 定價:Cloud Logging」一文。

排解傳出查詢轉送問題

如果收到的記錄含有 SERVFAIL,但缺少特定欄位 (例如 destinationIPegressIPegressError),請參閱疑難排解說明文件中的相關章節

監控指標

Cloud DNS 會將監控指標匯出至 Cloud Monitoring

您可以監控 DNS 查詢和回應的頻率,回應的目標包括不公開區域、轉送區域、政策轉送、內部 Google Cloud 區域和網際網路。您可以在 Google Cloud 控制台監控頁面Cloud Monitoring API 中使用監控功能。

私人 DNS 會匯出包含 response_code 標籤的 dns.googleapis.com/query/response_count 差異遷移指標,以便計算每個回應碼的查詢數量。

response_code 標籤的類型為 string,可能的值包括 NOERRORFORMERRSERVFAILNXDOMAINNOTIMPUNKNOWN。 如要瞭解這些代碼的定義,請參閱 IANA DNS RCODE

這個指標使用此記錄之記錄格式的適用欄位,並以 dns_query 資源類型匯出指標。

監控 DNS 傳播

使用 Google Cloud CLI 或 REST API 進行變更時,變更一開始會標示為待處理,直到作業完成為止。您可以使用 gcloud CLI 或 REST API 檢查變更的狀態,或取得變更記錄。

當 Cloud DNS 成功更新控制伺服器的系統後,作業就會完成 (狀態:done)。在更新所有名稱伺服器之前可能仍會有延遲。

列出代管區域的變更

如要列出代管區域的變更,請執行 dns record-sets changes list 指令。

gcloud

gcloud dns record-sets changes list --zone=ZONE

ZONE 替換為要管理記錄集的代管區域名稱。

驗證 DNS 傳播

如要監控及驗證 DNS 名稱伺服器是否已納入變更,可以使用 watchdig 指令。下列範例會示範如何查詢您的名稱伺服器,以及如何檢查其中一個代管區域名稱伺服器何時納入 MX 記錄的變更。

如要查詢區域的名稱伺服器,請執行 dns managed-zones describe 指令:

gcloud

gcloud dns managed-zones describe ZONE_NAME

ZONE_NAME 替換為 Cloud DNS 區域名稱。

如要檢查權威名稱伺服器上是否有可用的記錄,請執行下列 dig 指令:

gcloud

watch dig example.com in MX @ZONE_NAME_SERVER

ZONE_NAME_SERVER 改為代管區域的其中一個名稱伺服器。

根據預設,watch 指令會每隔 2 秒執行一次 dig 指令。您可以使用這個指令來判斷權威名稱伺服器何時納入變更,變更應在 120 秒內完成。授權名稱伺服器完成變更後,DNS 解析器就會開始擷取新記錄。已快取先前記錄的解析器會等待記錄的先前 TTL 值到期。

如要對系統的名稱伺服器執行 dig,可以從 dig 指令中移除 @<address>。如要監控傳播至其他名稱伺服器的情形,可以變更 address,指向其他名稱伺服器。

後續步驟