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

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

總覽

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

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

Cloud DNS 查詢記錄的定價資訊

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

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

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

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

控制台

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

    前往 VM 執行個體

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

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

  4. 在「Networking」(網路) 區段的「Network interfaces」(網路介面) 下方,您可以查看為執行個體建立的網路介面 (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 執行個體、相同虛擬私有雲網路內的 Google Kubernetes Engine 容器、對等互連區域,或使用傳入 DNS 轉送的內部部署用戶端。這些查詢最後可能會由私人 DNS 區域、轉送 DNS 區域、備用名稱伺服器、內部 Google Cloud DNS 區域或外部 DNS 區域解析。

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

如要啟用 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 記錄功能」。

使用記錄檔探索工具查看記錄檔,並以圖表呈現 DNS 失敗率

啟用 DNS 記錄功能後,專案就會開始在 Logs Explorer 中累積記錄。如要查看這些記錄,請前往 Google Cloud 控制台的「記錄檔探索工具」頁面。

前往 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. 點選「執行查詢」

設定分析時間範圍

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

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

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

分析及比較 DNS 名稱解析率

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

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

  • 直方圖:記錄檔探索工具介面包含直方圖。查詢執行時,直方圖會顯示所選時間範圍內相符記錄項目的頻率。這項功能有助於呈現下列內容:

    • 遷移前記錄項目的基準速率 NXDOMAIN
    • 遷移後,NXDOMAIN記錄項目立即出現任何尖峰。
    • NOERROR記錄項目速率的變化。

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

後續步驟