使用 Cloud DNS 記錄監控 DNS 失敗率

您可以在 Compute Engine 專案中啟用 Cloud DNS 查詢記錄,並使用這些記錄監控及比較遷移至區域內部 DNS 前後的內部 DNS 失敗率。記錄項目會記錄成功的 DNS 解析,以及內部 DNS 無法解析特定網域名稱的時間。

總覽

如要使用 Cloud DNS 查詢記錄監控內部 DNS 失敗率,請完成下列步驟:

  1. 取得虛擬私有雲 (VPC) 網路名稱,該 VPC 包含要監控的 VM。
  2. 使用虛擬私有雲網路名稱,執行 Google Cloud CLI 指令來啟用 DNS 查詢記錄。
  3. 在 Logs Explorer 中執行查詢,以視覺化方式呈現並調查成功率和失敗率。

Cloud DNS 查詢記錄的定價資訊

啟用 Cloud DNS 查詢記錄功能後,系統會產生大量記錄,其中許多與內部 DNS 無關。因此,使用這項功能可能會產生費用。一般來說,每項專案每月前 50 GiB 的記錄儲存空間免費。每增加 50 GiB 需支付 $0.50 美元。

如要進一步瞭解定價,請參閱「Cloud Logging 定價摘要」。

取得虛擬私有雲 (VPC) 網路名稱

如要擷取 DNS 查詢資料,您必須為運算執行個體使用的 VPC 網路啟用記錄功能。通常,一個 Google Cloud 專案有多個虛擬私有雲網路。您可以使用 gcloud CLI 指令,列出要監控的運算執行個體所用的虛擬私有雲網路。

控制台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。

    前往 VM 執行個體

  2. 選用:使用「Filter」(篩選器) 方塊,限制顯示的執行個體數量。

  3. 按一下要檢查的執行個體名稱。

  4. 在「網路」部分,您可以在「網路介面」下方,查看為執行個體建立的網路介面 (NIC)、與每個 NIC 相關聯的網路和子網路,以及指派的 IP 位址。

gcloud

  • 如要查看專案中所有運算執行個體使用的虛擬私有雲網路,請使用 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) 和指派的虛擬私有雲網路,請使用 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 記錄會追蹤名稱伺服器為虛擬私有雲網路解析的查詢,以及外部實體直接向公開區域發出的查詢。

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

記錄檔記錄隸屬於執行查詢的網路或公開區域所屬的專案。在 Shared 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 記錄功能後,專案就會開始在 Logs Explorer 中累積記錄。如要查看這些記錄,請使用 Google Cloud 控制台,前往「Logs Explorer」頁面。

前往 Logs Explorer

監控 DNS 名稱解析失敗

使用 NXDOMAIN 回應代碼,找出不存在的網域造成的失敗。如果內部 DNS 無法解析特定網域名稱,就會發生這些失敗情形。

  1. 在「Logs Explorer」控制台頁面的查詢方塊中,輸入下列文字:

    resource.type="dns_query"
    jsonPayload.queryType="A"
    jsonPayload.queryName=~"\.internal\.$"
    jsonPayload.responseCode = "NXDOMAIN"
    
  2. 點選「執行查詢」。

監控名稱解析查詢成功率

使用 NOERROR 回應代碼,找出成功的 DNS 解析。

  1. 在「Logs Explorer」控制台頁面的查詢方塊中,輸入下列文字:

    resource.type="dns_query"
    jsonPayload.queryType="A"
    jsonPayload.queryName=~"\.internal\.$"
    jsonPayload.responseCode = "NOERROR"
    
  2. 點選「執行查詢」。

設定分析時間範圍

您可以使用記錄時間範圍選取器,變更分析記錄的時間範圍。這個選取器位於「Logs Explorer」視窗的右上角。

如要有效比較錯誤率和成功率,請先啟用 DNS 查詢記錄,再遷移至使用區域 DNS。Google 建議您在遷移前至少 24 小時啟用 DNS 查詢記錄,以建立遷移前的基準。

在 DNS 查詢記錄中收集足夠的資料後,即可執行區域性 DNS 遷移作業。您可以在遷移期間監控 DNS 解析率,確保遷移作業不會導致 DNS 查詢失敗次數增加。

分析及比較 DNS 名稱解析率

請使用下列項目分析及比較錯誤率和成功率。

  • 記錄計數:針對每項查詢和時間範圍,Logs Explorer 會顯示找到的記錄項目數量。如果 DNS 名稱在遷移後,NXDOMAIN計數顯著增加,且先前已解析 (有 NOERROR),可能表示有問題。

  • 直方圖:Logs Explorer 介面包含直方圖。執行查詢時,直方圖會顯示所選日期範圍內相符記錄項目的頻率。這項功能有助於顯示下列內容:

    • 遷移前的 NXDOMAIN 記錄項目基準速率。
    • 遷移後,NXDOMAIN 記錄項目是否立即激增。
    • NOERROR 記錄項目速率的變化。

    如要查看直方圖,請依序點選「偏好設定」、「查看」和「顯示時間軸」。

後續步驟