このページでは、一般公開ゾーン、限定公開ゾーン、転送ゾーンを含む 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 マネージド ゾーンの名前に置き換えます。
ログを表示
コンソール
Google Cloud Console で、[ログ エクスプローラ] ページに移動します。
レコード形式のフィールドを表示する
すべてのログエントリに次のフィールドがあります(ログエントリによっては該当しないものもあります)。一部のフィールドはモニタリング指標と共有されています。
フィールド | フィールド タイプ | 説明 | 指標で使用 |
---|---|---|---|
alias_query_response_code (プレビュー) |
文字列 | ALIAS レコードの正規名を解決するためにクエリから返されたレスポンス コード。 | ○ |
source_type |
文字列 | クエリの発行元: inbound-forwarding 、gce-vm |
○ |
location |
文字列 | レスポンスの送信元となる Google Cloud リージョン(us-east1 など) |
○ |
project_id |
文字列 | クエリの送信元ネットワークの Google Cloud プロジェクト ID | ○ |
target_type |
文字列 | DNS クエリを解決するターゲットの種類: private-zone 、forwarding-zone 、forwarding-policy 、peering-zone 、internal 、external |
○ |
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 |
文字列 | クエリ時に |
× |
unHealthyIps |
文字列 | クエリ時に |
× |
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
が含まれているログを受信したものの、destinationIP
、egressIP
、egressError
など特定のフィールドが欠落している場合は、トラブルシューティング ドキュメントの関連するセクションをご覧ください。
指標をモニタリングする
Cloud DNS は、モニタリング指標を Cloud Monitoring にエクスポートします。
限定公開ゾーン、転送ゾーン、ポリシー転送、内部 Google Cloud ゾーン、インターネットを指す DNS クエリとレスポンスの割合をモニタリングできます。Monitoring は、Google Cloud コンソールの [Monitoring] ページと Cloud Monitoring API で利用できます。
限定公開 DNS は、response_code
ラベルを含む dns.googleapis.com/query/response_count
デルタ指標をエクスポートし、レスポンス コードあたりのクエリ数をカウントします。
response_code
ラベルは string
型で、NOERROR
、FORMERR
、SERVFAIL
、NXDOMAIN
、NOTIMP
、UNKNOWN
のいずれかになります。コードの定義については、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
を変更して他のネームサーバーを指定します。
次のステップ
- レコードの追加、削除、更新については、レコードの追加、変更、削除をご覧ください。
- マネージド ゾーンの作成、更新、一覧表示、削除については、ゾーンの管理をご覧ください。
- Cloud DNS の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。
- API のリファレンスについては、Cloud DNS REST API をご覧ください。
- Cloud DNS の概要については、Cloud DNS の概要をご覧ください。