使用記錄與監控功能

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

使用 Cloud DNS 記錄

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

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

記錄檔記錄隸屬於執行查詢的網路 或公開區域 所屬的專案。在 Shared 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 控制台查看記錄檔。

控制台

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

前往 Logs Explorer

查看記錄格式欄位

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

欄位 欄位類型 說明 用於指標
alias_query_response_code 字串 查詢傳回的回應代碼,用於解析 ALIAS 記錄的正規名稱
authAnswer 布林值/DNS 權威回應,RFC 1035
destinationIP 字串/目標 目標 IP 位址,僅適用於使用轉送功能時
egressError 字串

輸出 Proxy 錯誤,這是收到來自地端部署 DNS 伺服器的錯誤時,輸出 Proxy 實際回報的錯誤

這個欄位可用於區分地端部署 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 控制台的「Monitoring」頁面Cloud Monitoring API 中使用 Monitoring。

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

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

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

DNS 威脅偵測指標

如果使用 DNS 威脅偵測工具監控 VPC 網路,偵測工具會匯出可透過 Cloud Monitoring 檢查的指標。

可用的指標有以下兩種:

  • networksecurity.googleapis.com/dnsthreatdetector/sent_dns_log_count:傳送給供應商檢查的 DNS 查詢記錄檔。
  • networksecurity.googleapis.com/dnsthreatdetector/received_dns_threat_count:偵測到的威脅記錄檔數量。這項指標包含嚴重程度和威脅類型。

監控 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 解析器就會開始納入新記錄。如果解析器已快取先前的記錄,則會等待記錄先前的存留時間值到期。

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

後續步驟