Compute Engine プロジェクトで Cloud DNS クエリログを有効にして、これらのログを使用して、ゾーン内部 DNS への移行前後の内部 DNS エラー率をモニタリングして比較できます。ログエントリには、DNS 解決が成功したことと、内部 DNS が特定のドメイン名の解決に失敗したことが記録されます。
概要
Cloud DNS クエリログを使用して内部 DNS の障害率をモニタリングする手順は次のとおりです。
- モニタリングする VM を含む VPC の Virtual Private Cloud(VPC)ネットワーク名を取得します。
- VPC ネットワーク名を使用して、Google Cloud CLI コマンドを実行して DNS クエリ ロギングを有効にします。
- ログ エクスプローラでクエリを実行して、成功率と失敗率を可視化して調査します。
Cloud DNS クエリ ロギングの料金情報
Cloud DNS クエリロギングを有効にすると、大量のログが生成されます。その多くは内部 DNS に関連していません。そのため、この機能を使用すると費用が発生する場合があります。通常、プロジェクトごとに毎月最初の 50 GiB のログ ストレージは無料です。50 GiB を追加するごとに $0.50 USD の費用が発生します。
料金の詳細については、Cloud Logging の料金概要をご覧ください。
Virtual Private Cloud(VPC)ネットワーク名を取得する
DNS クエリデータをキャプチャするには、コンピューティング インスタンスで使用される VPC ネットワークのロギングを有効にする必要があります。多くの場合、 Google Cloud プロジェクトには複数の VPC ネットワークがあります。gcloud CLI コマンドを使用して、モニタリングするコンピューティング インスタンスで使用されている VPC ネットワークを一覧表示できます。
コンソール
Google Cloud コンソールで、[VM インスタンス] ページに移動します。
省略可: [フィルタ] ボックスを使用して、表示されるインスタンス数を制限します。
調べるインスタンスの名前をクリックします。
[ネットワーキング] セクションの [ネットワーク インターフェース] で、インスタンス用に作成されたネットワーク インターフェース(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
特定のコンピューティング インスタンスとその割り当てられた VPC ネットワークのネットワーク インターフェース(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 ロギングは、ネームサーバーが解決する VPC ネットワークのクエリと、外部エンティティから一般公開ゾーンに直接送られるクエリを追跡します。
ログに記録されるクエリは、Compute Engine インスタンス、同じ VPC ネットワーク内の Google Kubernetes Engine コンテナ、ピアリング ゾーン、または受信 DNS 転送を使用するオンプレミス クライアントから届くものです。限定公開 DNS ゾーン、転送 DNS ゾーン、代替ネームサーバー、内部 Google Cloud DNS ゾーン、外部 DNS ゾーンで、最終的にクエリが解決されることもあります。
ログレコードは、リクエストを伝送したネットワークまたは一般公開ゾーンを所有するプロジェクトに属します。共有 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 ロギングを使用するをご覧ください。
ログ エクスプローラを使用してログを表示し、DNS の障害率を可視化する
DNS ロギングを有効にすると、プロジェクトはログ エクスプローラでログの蓄積を開始します。これらのログを表示するには、 Google Cloud コンソールで [ログ エクスプローラ] ページに移動します。
DNS 名前解決の失敗をモニタリングする
NXDOMAIN レスポンス コードを使用して、存在しないドメインの障害を分離します。これらのエラーは、内部 DNS が特定のドメイン名を解決できない場合に発生します。
[ログ エクスプローラ] コンソール ページのクエリ ボックスに、次のテキストを入力します。
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NXDOMAIN"[クエリを実行] をクリックします。
名前解決クエリの成功をモニタリングする
NOERROR レスポンス コードを使用して、DNS 解決の成功を分離します。
[ログ エクスプローラ] コンソール ページのクエリ ボックスに、次のテキストを入力します。
resource.type="dns_query" jsonPayload.queryType="A" jsonPayload.queryName=~"\.internal\.$" jsonPayload.responseCode = "NOERROR"[クエリを実行] をクリックします。
分析期間を設定する
ログの期間セレクタを使用すると、分析対象のログの期間を変更できます。このセレクタは、ログ エクスプローラ ウィンドウの右上隅にあります。
エラー率と成功率を効果的に比較するには、ゾーン DNS の使用に移行する前に DNS クエリログを有効にする必要があります。移行前のベースラインを確立するために、移行の少なくとも 24 時間前に DNS クエリ ロギングを有効にすることをおすすめします。
DNS クエリログで十分なデータを収集したら、ゾーン DNS の移行を実行できます。移行中に DNS 解決率をモニタリングして、移行によって DNS クエリの失敗が増加しないようにすることができます。
DNS 名前解決率を分析して比較する
次の方法で、エラー率と成功率を分析して比較します。
ログ数: ログ エクスプローラには、クエリと期間ごとに検出されたログエントリの数が表示されます。以前に解決された(
NOERRORがあった)DNS 名の移行後にNXDOMAINカウントが大幅に増加した場合は、問題が発生している可能性があります。ヒストグラム: ログ エクスプローラのインターフェースにはヒストグラムが含まれています。クエリが実行されると、ヒストグラムに、選択した期間で一致するログエントリの頻度が表示されます。これは、次の可視化に役立ちます。
- 移行前の
NXDOMAINログエントリのベースライン レート。 - 移行直後の
NXDOMAINログエントリの急増。 NOERRORログエントリのレートの変化。
ヒストグラムを表示するには、[設定]、[表示]、[タイムラインを表示] の順にクリックします。
- 移行前の
次のステップ
- Compute Engine の内部 DNS について詳しく学ぶ。
- コンピューティング インスタンスのネットワーク構成を表示します。
- ログ エクスプローラを使用してログを表示する方法の詳細を確認する。