ロギングとモニタリングの使用

このページでは、一般公開ゾーン限定公開ゾーン転送ゾーンを含む Cloud DNS のロギングとモニタリング指標について説明します。また、パブリック DNS の変更の伝播をモニタリングする方法についても説明します。

Cloud DNS ロギングを使用する

Cloud DNS ロギングは、ネームサーバーが解決する Virtual Private Cloud(VPC)ネットワークのクエリと、外部エンティティから一般公開ゾーンに直接送られるクエリを追跡します。

ログに記録されるクエリは、Compute Engine 仮想マシン(VM)インスタンス、同じ VPC ネットワーク内の Google Kubernetes Engine コンテナ、ピアリング ゾーン、または受信 DNS 転送を使用しているオンプレミス クライアントから届くものです。限定公開 DNS ゾーン、転送 DNS ゾーン、代替ネームサーバー、内部 Google Cloud DNS ゾーン、外部 DNS ゾーンで、最終的にクエリが解決されることもあります。

ログレコードは、リクエストを伝送したネットワークまたは一般公開ゾーンを所有するプロジェクトに属します。共有 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: カンマ区切りのリストの 1 つ以上のネットワーク
  • DESCRIPTION ポリシーの説明

既存の DNS ポリシーを持つネットワークのロギングを有効にするには、dns policies update コマンドを実行します。

gcloud

gcloud dns policies update POLICY_NAME \
    --networks=NETWORK \
    --enable-logging

次のように置き換えます。

  • POLICY_NAME: DNS ポリシーの名前
  • NETWORK: カンマ区切りのリストの 1 つ以上のネットワーク

ポリシーを維持したままロギングを止めるには、dns policies update コマンドを実行します。

gcloud

gcloud dns policies update POLICY_NAME \
    --networks=NETWORK \
    --no-enable-logging

次のように置き換えます。

  • POLICY_NAME: DNS ポリシーの名前
  • NETWORK: カンマ区切りのリストの 1 つ以上のネットワーク

ポリシーを完全に削除するには、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 マネージド ゾーンの名前に置き換えます。

ログを表示

Console

Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。

[ログ エクスプローラ] に移動

レコード形式のフィールドを表示する

すべてのログエントリに次のフィールドがあります(ログエントリによっては該当しないものもあります)。一部のフィールドはモニタリング指標と共有されています。

フィールド フィールド タイプ 説明 指標で使用
alias_query_response_code(プレビュー) 文字列 ALIAS レコードの正規名を解決するためにクエリから返されたレスポンス コード。
source_type 文字列 クエリの発行元: inbound-forwardinggce-vm
location 文字列 レスポンスの送信元となる Google Cloud リージョン(us-east1 など)
project_id 文字列 クエリの送信元ネットワークの Google Cloud プロジェクト ID
target_type 文字列 DNS クエリを解決するターゲットの種類: private-zoneforwarding-zoneforwarding-policypeering-zoneinternalexternal
target_name 文字列 ターゲット名(ゾーン名、ポリシー名、内部ゾーン名、外部ドメイン名など)
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 バイトで切り捨て ×
authAnswer ブール値 / DNS 権威ある回答、RFC 1035 ×
sourceNetwork 文字列 / ソース システムに到達したクエリの発信元ネットワーク ×
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 によって開始されたクエリにのみ適用されます。 ×
sourceIP 文字列 / ソース クエリの発信元の IP ×
destinationIP 文字列 / ターゲット ターゲットの IP。転送の場合にのみ該当します。 ×
protocol 文字列 / DNS TCP | UDP ×
healthyIps 文字列

クエリ時に HEALTHY として Cloud DNS に認識されている ResourceRecordSet 内の IP アドレスのセット

×
unHealthyIps 文字列

クエリ時に UNHEALTHY として Cloud DNS に認識されている ResourceRecordSet 内の IP アドレスのセット

×
egressError 文字列

下り(外向き)プロキシエラー。オンプレミス DNS サーバーから受信した下り(外向き)プロキシから報告された実際のエラー。

このフィールドは、オンプレミス DNS が返した実際の SERVFAIL と、下り(外向き)プロキシが検出したネットワーク エラーを区別するために使用できます。

×

料金

すべての 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 にエクスポートします。

限定公開ゾーン、転送ゾーン、ポリシー転送、内部 Google Cloud ゾーン、インターネットを指す DNS クエリとレスポンスの割合をモニタリングできます。Monitoring は、Google Cloud Console の [Monitoring] ページCloud Monitoring API で利用できます。

限定公開 DNS は、response_code ラベルを含む dns.googleapis.com/query/response_count デルタ指標をエクスポートし、レスポンス コードあたりのクエリ数をカウントします。

response_code ラベルは string 型で、NOERRORFORMERRSERVFAILNXDOMAINNOTIMPUNKNOWN のいずれかになります。コードの定義については、IANA DNS RCODE をご覧ください。

この指標は、ログのレコード形式の該当するフィールドを使用して、dns_query リソースタイプの下にエクスポートされます。

DNS 伝搬をモニタリングする

Google Cloud CLI または REST API を使用して変更を行うと、その変更はオペレーションが完了するまで「保留」としてマーク付けされます。変更ステータスの確認や、変更履歴の取得には、gcloud CLI か REST API を使用できます。

Cloud DNS が、サーバーを制御するシステムを正常に更新すると、オペレーションが完了します(ステータス: done)。すべてのネームサーバーが更新されるまでに時間がかかる場合があります。

マネージド ゾーンの変更を一覧表示する

マネージド ゾーンの変更をリスト表示するには、dns record-sets changes list コマンドを実行します。

gcloud

dns record-sets changes list コマンドを実行します。

gcloud dns record-sets changes list --zone=ZONE

ZONE は、レコードセットを管理するマネージド ゾーンの名前に置き換えます。

DNS 伝播を検証する

DNS ネームサーバーで変更が反映されたことを監視して確認するには、watch コマンドと dig コマンドを使用します。次の例は、ネームサーバーを検索し、マネージド ゾーンのネームサーバーの 1 つが MX レコードの変更を受け取ったことを確認する方法を示しています。

ゾーンのネームサーバーを検索するには、dns managed-zones describe コマンドを実行します。

gcloud dns managed-zones describe ZONE_NAME

ZONE_NAME は、Cloud DNS ゾーンの名前に置き換えます。

レコードが権威ネームサーバー上で利用可能かどうかを確認するには、次の dig コマンドを実行します。

watch dig example.com in MX @ZONE_NAME_SERVER

ZONE_NAME_SERVER は、マネージド ゾーンのいずれかのネームサーバーに置き換えます。

watch コマンドは、デフォルトでは 2 秒ごとに dig コマンドを実行します。権威ネームサーバーはユーザーが加えた変更を 120 秒以内にピックアップしますが、このコマンドを使用すれば実際に変更がピックアップされたタイミングを知ることができます。権威ネームサーバーが変更をピックアップすると、DNS リゾルバが新しいレコードのピックアップを開始できるようになります。前のレコードをすでにキャッシュに保存しているリゾルバは、レコードの以前の TTL 値の期限が切れるまで待機します。

システムのネームサーバーに対して dig を実行するには、dig コマンドから @<address> を削除します。他のネームサーバーへの伝播をモニタリングするには、address を変更して他のネームサーバーを指定します。

次のステップ