このドキュメントでは、GKE DNS 指標を使用して DNS トラフィックをモニタリングする方法について説明します。GKE DNS 指標は、次のバージョンを実行しているクラスタの Google Cloud コンソールで使用できます。
拡張 KubeDNS の場合、GKE バージョン 1.36 以降
NodeLocalDNS の場合、GKE バージョン 1.35.2-gke.1090000 以降
DNS 指標を表示する
GKE DNS 指標は、 Google Cloud コンソールの Metrics Explorer で次の方法で表示できます。
GKE DNS オブザーバビリティ ダッシュボードを使用する
Google は、[Monitoring] > [ダッシュボード] > [GKE DNS Observability - クラスタビュー] に事前定義された DNS ダッシュボードを提供しています。このダッシュボードには、KubeDNS と NodeLocalDNS の指標が表示されます。ダッシュボードを表示するには、NodeLocalDNS または KubeDNS を使用するクラスタが必要です。
GKE DNS Observability ダッシュボードの使用例:
まず、次の図に示すように、[Monitoring] > [ダッシュボード] に移動します。

このスクリーンショットは、左側に Google Cloud コンソールのナビゲーション メニューを示しています。[モニタリング] セクションが展開され、[ダッシュボード] がハイライト表示されます。
次に、ダッシュボード GKE DNS Observability - Cluster View に移動します。

このスクリーンショットは、[ダッシュボード] ディレクトリ ページを示しています。利用可能なダッシュボードのリストで、[GKE DNS Observability - Cluster View] ダッシュボードがハイライト表示されています。このリンクをクリックすると、クラスタレベルの DNS 指標の可視化が開きます。
カスタマイズされたダッシュボードを作成する
カスタム ダッシュボードを作成して、モニタリングしている指標のいずれかと同様のアラートを設定する場合は、Google Cloud Observability ツール(Cloud Monitoring の Metrics Explorer など)を使用できます。
DNS オブザーバビリティ指標をクエリする
クラスタの GKE DNS 指標を表示するには、 Google Cloud コンソールの Metrics Explorer で次の操作を行います。
[Monitoring] > [Metrics Explorer] ページに移動します。
[指標を選択] フィールドで、
kubernetes.io/networking/dns/をフィルタします。KubeDNS 指標は Kubernetes コンテナ リソースに、NodeLocalDNS 指標は Kubernetes ノードリソースにあります。
(省略可)[ラベル] に基づいて必要なフィルタを選択します。
Google Cloud コンソールの [Monitoring] > [Metrics Explorer] に表示される KubeDNS 指標と NodeLocalDNS 指標の例:

このスクリーンショットは、KubeDNS 指標をクエリするように構成された [Metrics Explorer] ページを示しています。[指標を選択] フィールドに、フィルタされたパス kubernetes.io/networking/dns/kubedns/ が表示されます。結果のグラフには、KubeDNS リクエストとキャッシュ ステータスのアクティブな時系列グラフが表示されます。

このスクリーンショットは、NodeLocalDNS 指標をクエリするように構成された [Metrics Explorer] ページを示しています。クエリは、Kubernetes ノードリソースの下の kubernetes.io/networking/dns/node_local_dns/ 指標パスを指定します。グラフには、ローカル DNS リクエストとレイテンシ データを表すアクティブな時系列グラフがハイライト表示されます。
GKE DNS 指標のリスト
GKE DNS のパフォーマンスと健全性のモニタリングには、次の指標を使用できます。
KubeDNS 指標
GKE バージョン 1.36 以降では、KubeDNS で次の指標を使用できます。
| 指標タイプ | 説明 |
|---|---|
kubernetes.io/networking/dns/kubedns/dns_request_count |
KubeDNS が受信した DNS リクエストの合計数。 |
kubernetes.io/networking/dns/kubedns/dns_request_latencies |
各リクエストの解決にかかった時間のヒストグラム。 |
kubernetes.io/networking/dns/kubedns/dns_cache_request_count |
キャッシュ ステータス(ヒットまたはミス)でフィルタされた DNS リクエストのカウンタ。 |
kubernetes.io/networking/dns/kubedns/forwarding_request_latencies |
転送された各リクエストにかかった時間のヒストグラム。 |
kubernetes.io/networking/dns/kubedns/max_concurrent_rejected_request_count |
同時実行クエリ数が最大に達したため、クエリが拒否されました。 |
forwarding_request_count 指標を計算するには、次のクエリで kubernetes.io/networking/dns/kubedns/forwarding_request_latencies 指標を使用します。sum by (cluster_name) (rate({"kubernetes.io/networking/dns/kubedns/forwarding_request_latencies_count"}[${__interval}]))
デフォルトでは、 Google Cloud コンソールは request_count 指標にレート オペレーションを適用します。これは PromQL ソースから無効にできます。
NodeLocalDNS の指標
GKE バージョン 1.35.2-gke.1090000 以降では、NodeLocal DNSCache で次の指標を使用できます。
| 指標タイプ | 説明 |
|---|---|
kubernetes.io/networking/dns/node_local_dns/dns_request_count |
NodeLocal DNSCache が受信した DNS リクエストの合計数。 |
kubernetes.io/networking/dns/node_local_dns/dns_request_latencies |
各リクエストの解決にかかった時間のヒストグラム。 |
kubernetes.io/networking/dns/node_local_dns/dns_cache_request_count |
キャッシュ ステータス(ヒットまたはミス)でフィルタされた DNS リクエストのカウンタ。 |
kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies |
転送された各リクエストにかかった時間のヒストグラム。 |
kubernetes.io/networking/dns/node_local_dns/max_concurrent_rejected_request_count |
同時実行クエリ数が最大に達したため、クエリが拒否されました。 |
forwarding_request_count 指標の値を計算するには、次のクエリで kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies 指標を使用します。sum by (cluster_name) (rate({"kubernetes.io/networking/dns/node_local_dns/forwarding_request_latencies_count"}[${__interval}]))
これらの指標を表示すると、Google Cloud コンソールは request_count 指標にレート オペレーションを自動的に適用します。これは PromQL ソースから無効にできます。