您可以在 Compute Engine 專案中啟用 Cloud DNS 查詢記錄,並使用這些記錄監控及比較遷移至區域內部 DNS 前後的內部 DNS 失敗率。記錄項目會記錄成功的 DNS 解析,以及內部 DNS 無法解析特定網域名稱的時間。
總覽
如要使用 Cloud DNS 查詢記錄監控內部 DNS 失敗率,請完成下列步驟:
- 取得包含要監控 VM 的 VPC 的虛擬私有雲 (VPC) 網路名稱。
- 使用虛擬私有雲網路名稱,執行 Google Cloud CLI 指令來啟用 DNS 查詢記錄。
- 在 Logs Explorer 中執行查詢,以視覺化方式呈現並調查成功和失敗率。
Cloud DNS 查詢記錄的定價資訊
啟用 Cloud DNS 查詢記錄功能後,系統會產生大量記錄,其中許多與內部 DNS 無關。因此,使用這項功能可能會產生費用。一般來說,每個專案每月前 50 GiB 的記錄檔儲存空間為免費。每增加 50 GiB 需支付 $0.50 美元。
如要進一步瞭解價格,請參閱 Cloud Logging 定價摘要。
取得虛擬私有雲 (VPC) 網路名稱
如要擷取 DNS 查詢資料,您必須為運算執行個體使用的 VPC 網路啟用記錄功能。通常,一個專案有多個虛擬私有雲網路。 Google Cloud 您可以使用 gcloud CLI 指令,列出要監控的運算執行個體所用的 VPC 網路。
控制台
前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面。
選用:使用「Filter」(篩選) 方塊,限制顯示的執行個體數量。
按一下要檢查的執行個體名稱。
在「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 區域。
記錄檔記錄隸屬於執行查詢的網路或公開區域所屬的專案。在 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」頁面。
監控 DNS 名稱解析失敗情形
使用 NXDOMAIN 回應代碼,找出不存在的網域失敗。如果內部 DNS 無法解析特定網域名稱,就會發生這類失敗情形。
在「Logs Explorer」控制台頁面的查詢方塊中,輸入下列文字:
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NXDOMAIN"點選「執行查詢」。
監控名稱解析查詢成功率
使用 NOERROR 回應代碼,找出成功的 DNS 解析。
在「Logs Explorer」控制台頁面的查詢方塊中,輸入下列文字:
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NOERROR"點選「執行查詢」。
設定分析時間範圍
您可以使用記錄時間範圍選取器,變更所分析記錄的時間範圍。這個選取器位於「Logs Explorer」視窗的右上角。
如要有效比較錯誤率和成功率,請先啟用 DNS 查詢記錄,再遷移至使用區域 DNS。Google 建議您在遷移前至少 24 小時啟用 DNS 查詢記錄,建立遷移前基準。
在 DNS 查詢記錄中收集足夠資料後,即可執行區域性 DNS 遷移作業。您可以在遷移期間監控 DNS 解析率,確保遷移作業不會導致 DNS 查詢失敗次數增加。
分析及比較 DNS 名稱解析率
請使用下列項目分析及比較錯誤率和成功率。
記錄計數:針對每項查詢和時間範圍,Logs Explorer 會顯示找到的記錄項目數量。如果 DNS 名稱在遷移後解析次數大幅增加 (先前有
NOERROR),可能表示有問題。NXDOMAINNOERROR直方圖:Logs Explorer 介面包含直方圖。查詢執行時,直方圖會顯示所選時間範圍內相符記錄項目的頻率。這項功能有助於呈現下列內容:
- 遷移前記錄項目的基準速率
NXDOMAIN。 - 遷移後,
NXDOMAIN記錄項目立即出現任何尖峰。 NOERROR記錄項目的速率變化。
如要查看直方圖,請依序點選「偏好設定」、「查看」和「顯示時間軸」。
- 遷移前記錄項目的基準速率
後續步驟
- 進一步瞭解 Compute Engine 的內部 DNS。
- 查看運算執行個體的網路設定。
- 進一步瞭解如何使用 Logs Explorer 查看記錄檔。