ロギングとモニタリング

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

限定公開 DNS のロギング

限定公開 DNS のロギングは、Virtual Private Cloud ネットワークのネームサーバーによって解決されるクエリを追跡します。外部エンティティから一般公開ゾーンに直接送られるクエリは、パブリック ネームサーバーによって処理されるため、ログに記録されません。

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

ログレコードは、リクエストを伝送したネットワークを所有するプロジェクトに属します。共有 VPC の場合はホスト プロジェクトがネットワークを所有しているため、ログレコードはホスト プロジェクトに属します。

ロギングの有効化と無効化

DNS ポリシーを使用してネットワークのロギングを有効にします。

DNS ポリシーを持たないネットワークのロギングを有効にする

gcloud dns policies create policy-name \
    --networks=network \
    --enable-logging \
    --description=description

次のコマンド オプションを置き換えます。

  • networks: カンマ区切りのリストの 1 つ以上のネットワーク
  • description: ポリシーの説明

既存の DNS ポリシーを持つネットワークのロギングを有効にする

gcloud dns policies update policy-name \
    --networks=network \
    --enable-logging

次のコマンド オプションを置き換えます。

  • networks: カンマ区切りのリストの 1 つ以上のネットワーク

ロギングを無効にする

この操作では、ポリシーを維持しながらロギングをオフにします。ポリシーを完全に削除することもできます。

gcloud dns policies update policy-name \
    --networks=network \
    --no-enable-logging

次のコマンド オプションを置き換えます。

  • networks: カンマ区切りのリストの 1 つ以上のネットワーク

ログの表示

Google Cloud Console で Cloud DNS のログビューア ページに移動します。
ログビューア ページに移動

レコードの形式

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

フィールド フィールド タイプ 説明 指標で使用
source_type 文字列 クエリの送信元: 'inbound-forwarding'、'gce-vm'
location 文字列 レスポンスを返した GCP のリージョン('us-east1' など)。
project_id 文字列 受信したクエリの発信元ネットワークの GCP プロジェクト 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 文字列 / ソース クエリの送信元ネットワークの GCP プロジェクト ID。Compute Engine VM によって開始されたクエリにのみ適用されます。 ×
vmZoneName 文字列 / ソース クエリの送信元 VM ゾーンの名前。Compute Engine VM によって開始されたクエリにのみ適用されます。 ×
sourceIP 文字列 / ソース クエリの発信元の IP ×
destinationIP 文字列 / ターゲット ターゲットの IP。転送の場合にのみ該当。 ×
protocol 文字列 / DNS 'TCP' | 'UDP' ×
egressError 文字列 下り(外向き)プロキシエラー。オンプレミス DNS サーバーから受信した下り(外向き)プロキシから報告された実際のエラー。このフィールドは、オンプレミス DNS が返した実際の SERVFAIL と、下り(外向き)プロキシが検出したネットワーク エラーを区別するために使用できます。 ×

送信転送

SERVFAIL が含まれているログを受信したものの、destinationIPegressIPegressError など特定のフィールドが欠落している場合は、トラブルシューティング ドキュメントの関連するセクションをご覧ください。

モニタリング指標

Cloud DNS は、モニタリング指標を Cloud Monitoring にエクスポートします。

限定公開ゾーン、転送ゾーン、ポリシー転送、内部 GCP ゾーン、インターネットをターゲットにした DNS クエリとレスポンスのレートをモニタリングできます。モニタリングは Cloud MonitoringMonitoring API で利用できます。

指標とリソースタイプ

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

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

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

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

コマンドライン ツールまたは REST API を使用して変更を行うと、その変更内容は、オペレーションが完了するまで「保留」としてマーク付けされます。変更のステータスや変更履歴を確認するには、gcloud コマンドライン ツールまたは REST API を使用します。

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

マネージド ゾーンの変更のリスト表示

コマンドライン

gcloud dns record-sets changes list --zone="myzonename"

Python

def list_changes(project_id, zone_name):
    client = dns.Client(project=project_id)
    zone = client.zone(zone_name)

    changes = zone.list_changes()

    return [(change.started, change.status) for change in changes]

DNS 伝播の確認

watch コマンドと dig コマンドを使用すると、変更が DNS ネームサーバーに反映されているかどうかを確認できます。次の例では、ネームサーバーを検索し、MX レコードへの変更がいずれかのマネージド ゾーンのネームサーバーによってピックアップされているタイミングを確認する方法を示しています。

ゾーンのネームサーバーを次のように検索します。

gcloud dns managed-zones describe zone-name

次のコマンド オプションを置き換えます。

  • zone-name: Cloud DNS ゾーンの名前

レコードが権威ネームサーバー上でまだ利用可能かどうかを確認します。your-zone-nameserver は、マネージド ゾーンのいずれかのネームサーバーに置き換えます。

watch dig example.com in MX @your-zone-nameserver

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

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

次のステップ