Cloud DNS 一般公開ゾーンのクエリの視覚化のための、ログベースの指標と Cloud Monitoring の使用
Google Cloud Japan Team
※この投稿は米国時間 2023 年 10 月 20 日に、Google Cloud blog に投稿されたものの抄訳です。
ロギングが有効になっているときは、Cloud DNS によって、外部ソースから一般公開ゾーンに対するすべての DNS クエリのログが記録されます。ログにはクエリ名、クエリの形式、レスポンス コード、送信元 IP アドレスなどの役立つ情報が含まれています。ユーザーは Cloud Logging のデータをクエリして、特定の情報を検索したり、発生している問題を解決したりすることができます。しかしながら、Cloud DNS は一般公開ゾーンの指標を公開していないため、ログデータのすべてを直接視覚化する方法はありません。
このブログ投稿では、Cloud DNS の一般公開ゾーンのログデータを使用して、ログベースの指標を作成する方法を説明します。次に、Cloud Monitoring を使用して、データを表示するカスタム ダッシュボード作成する方法も説明します。


事前構成済みのダッシュボードには、次の情報が表示されます。
すべての一般公開ゾーンに対するクエリ数: 指定された期間内にすべての一般公開ゾーンが受信した DNS クエリの合計数。


ターゲット名ごとのクエリ数: 指定された期間内に各一般公開ゾーンが受信した DNS クエリの数。


レスポンス コード: 指定された期間内にすべての一般公開ゾーンで返された、各レスポンス コードの発生数。


ターゲット名ごとのレスポンス コード: 特定のレスポンス コードが返された回数を、一般公開ゾーンごとにグループ化したもの。


エラー: 指定された期間内にすべての一般公開ゾーンで返された NoError 以外のレスポンス コードの合計数。


ターゲット名ごとのエラー数: NoError 以外のレスポンス コードの合計数を、一般公開ゾーンごとにグループ化したもの。


サーバーのレイテンシ: この分布指標は、個々の値ではなく、リクエストのレイテンシについての統計データをレポートします。ヒートマップ グラフは、サーバー レイテンシの 50 パーセンタイル、95 パーセンタイル、99 パーセンタイルを示します。50 パーセンタイルは、レイテンシの中央値です。95 パーセンタイルはリクエストの 95% が超過したレイテンシを、99 パーセンタイルはリクエストの 99% が超過したレイテンシを示す値です。ヒートマップ グラフを解釈する方法の詳細については、公式ドキュメントをご覧ください。


Cloud DNS のカスタム ダッシュボードを作成する手順
次の手順に沿って行います。
- 一般公開ゾーンでロギングを有効にする
- 一般公開ゾーンのログエントリを理解する
- ログベースの指標を作成する
- カスタム ダッシュボードを作成する
1. 一般公開ゾーンでロギングを有効にする
限定公開ゾーンでのロギングはクライアント ネットワークの DNS サーバー ポリシーによって有効または無効に設定されますが、それとは異なり、一般公開ゾーンのロギングはゾーンレベルでロギングを有効または無効に設定できます。既存の一般公開ゾーンのロギングを有効にするには、次のコマンドを使用します。
コマンド
注: Cloud DNS はネームサーバーに到達したクエリのみを記録します。キャッシュから応答されたクエリはログに記録されません。
2. 一般公開ゾーンのログエントリを理解する
すべてのフィールドの表を Cloud DNS のロギングとモニタリングに関するドキュメントで確認できます。このセクションでは、後でログベースの指標の作成に使用するフィールドについて説明します。
ログベースの指標の作成に使用するフィールドは、次のとおりです。
queryName: DNS クエリ名(例: www.example.com)。
queryType: DNS クエリの形式(例: A、AAAA、SOA、NS)。以下で紹介するログエントリのサンプルは、A レコードのクエリです。
sourceIP: Cloud DNS が受信したクエリの送信元である DNS リゾルバの IP アドレス。
responseCode: DNS レスポンス コード(例: NOERROR、NXDOMAIN、SERVFAIL、REFUSED)。
project_id: 一般公開ゾーンを所有しているプロジェクトの Google Cloud プロジェクト ID。
target_type: DNS クエリを解決するターゲットの種類(public-zone、private-zone、forwarding-zone、forwarding-policy、peering-zone、internal、external)。
target_name: ターゲット名(例: ゾーン名、ポリシー名、内部ゾーン名、外部ドメイン名)。
3. ログベースの指標を作成する
カウンタ指標と分布指標の 2 つのログベースの指標を作成する必要があります。
- カウンタ指標は、特定の DNS クエリ名、クエリの形式、またはレスポンス コードを持つログエントリの数を数えるために使用します。
- 分布指標は、サーバー レイテンシの分布を抽出するために使用します。
ログベースの指標を作成するには、gcloud logging metrics create
コマンドを使用します。ロギング指標の構成は、.yaml
ファイルを使用して、gcloud
に渡すことができます。
注: すべてのユーザー定義のログベースの指標は Cloud Monitoring カスタム指標のクラスであり、課金対象です。料金については、Cloud Logging の料金: ログベースの指標をご覧ください。ログベースの指標の保持期間は、6 週間です。詳しくは、データの保持に関するドキュメントをご覧ください。
カウンタ指標を作成する
- GitHub から
config.yaml
をダウンロードします。
2. カウンタ指標を作成するには、gcloud logging metrics create
コマンドを使用します。
コマンド
分布指標を作成する
- GitHub から
latency-config.yaml
をダウンロードします。
2. カウンタ指標を作成するには、gcloud logging metrics create
コマンドを使用します。
コマンド
4. ダッシュボードを作成する
- GitHub から
dashboard.json
をダウンロードします。このファイルを使用して、事前構成済みのダッシュボードをインポートします。
2. gcloud monitoring dashboards create
コマンドを使用してダッシュボードを作成します。このコマンドを実行すると、gcloud-custom-dashboard という名前のカスタム ダッシュボードが作成されます。
コマンド
ダッシュボードにアクセスする
- Google Cloud コンソールで、[モニタリング]、[ダッシュボード] の順にクリックします。


2. gcloud-custom-dashboard という名前のカスタム ダッシュボードをクリックします。


3. ダッシュボードはグループ条件、フィルタ機能を使用して表示を細かく調整できます。たとえば、以下のスクリーンショットでは、クエリの種類が「A」のレコードのみが表示されています。


考慮事項
- ログベースの指標は、その他の指標よりも取り込みの遅延が大きくなります。そのため、リアルタイム モニタリングや、機密性の高いアラートには不向きです。
- 指標のカウントは遅れる可能性があります。ログベースの指標は、ログの取り込みで 10 分の遅延が生じる可能性があるため、正確なログ数が遅れて表示されることもあります。
- ログベースの指標のアラートを構成するときは、アライメント期間を最低でも 5 分間に設定する必要があります。それにより、わずかな変動により、アラートがトリガーされるのを防ぎます。
詳細
DNS の機能とカスタマイズ オプションについて詳しくは、以下をご覧ください。
- リポジトリ: cloud-dns-public-zone-dashboard
- ドキュメント: Cloud DNS ロギングの使用
- ドキュメント: ログベースの指標の概要
ー ネットワーク スペシャリスト Paarth Mahajan
ー テクニカル ソリューション エンジニア Maddy Soleimanian