【入門編】Datadog Network Performance Monitoring (NPM)で実現するクラウドネイティブなネットワーク可視化 – 運用監視・オブザーバビリティ活用バイブル

こんにちは!クラウドの海原で、目に見えないパケットの奔流に頭を抱えていませんか?

「マイクロサービス化を進めたのはいいけれど、サービスAからサービスBへの通信がなぜかたまにタイムアウトする……」
「Kubernetesクラスターの中で、一体どのPodとどのPodが裏でトラフィックを食い合っているんだ?」

夜中にこんな障害アラートが飛んできて、AWSのVPCフローログの海に溺れかけた経験、あなたにもあるのではないでしょうか。テキストの羅列からIPアドレスを目で追いかけ、タイムスタンプを突き合わせる作業は、もはや「監視」ではなく「苦行」です。

今回は、そんな泥臭いネットワークのトラブルシューティングを過去のものにする、Datadogの秘密兵器「Network Performance Monitoring (NPM)」についてお話しします。

これをマスターすれば、カオスなクラウドネイティブ環境の通信が「ひと目でわかる地図」になり、毎日の運用作業が劇的に楽になりますよ。さあ、一緒に扉を開けましょう。

—

1. なぜ従来の監視ではマイクロサービスを救えないのか?

まず、私たちが直面している敵の正体を整理しましょう。

モダンなインフラ、特にKubernetesやコンテナベースの環境では、仮想IP、Service Mesh、ロードバランサー、Ingressなどが複雑に絡み合っています。ここで問題が起きるたびによく使われるのが「VPCフローログ」です。

しかし、VPCフローログには以下の「3つの罪」があります。
1. 情報量が多すぎてノイズまみれ(パケットの羅列で、アプリケーションの文脈が全く見えない)
2. コストが高い(全トラフィックを保存・解析しようとすると、AWSの請求書を見て冷や汗をかくことになる)
3. リアルタイム性がない(S3やLog Group経由で見ると、インシデント発生時の「今」の通信状態が掴めない)

ここで登場するのが Datadog NPM です。NPMは、カーネルレベル(eBPFなどの技術)でネットワークの通信をキャプチャし、「どのサービスから、どのサービスへ、どれだけのレイテンシーとパケットロスで通信しているか」をアプリケーションのコンテキスト(サービス名やPod名)と紐づけて可視化してくれます。

つまり、「IPアドレスのパズル」を解く必要がなくなるのです。

—

2. Datadog NPMの全体像と仕組み

Datadog NPMを語る上で欠かせないのが、Datadog Agent です。

従来のプロセス監視やメトリクス収集に加え、NPMを有効化したAgentは、ホストのネットワークスタックを監視します。
AWSなどのクラウド環境であれば、VPCフローログに頼るのではなく、各ノード(仮想マシンやK8sワーカーノード)の上で動くエージェントが直接トラフィックを計測します。これにより、クラウドベンダーのログ基盤を通さない、超低遅延で高精度なトポロジーマップが描けるようになります。

—

3. 実践:最短でNPMをセットアップする(HelloWorld)

「難しそうな設定が必要なのでは?」と思うかもしれませんが、ご安心ください。Datadogの美しさは、その圧倒的な導入のしやすさにあります。

ここでは、最も一般的な Kubernetes (Helm) 環境 をベースに、NPMを有効化する手順を解説します。

ステップ1: Helm Valuesの修正

Datadog Agentをデプロイしている `values.yaml` を開きます。ここで、NPMの収集機能(`system_probe`)を有効にするのがポイントです。

datadog-values.yaml
datadog:
apiKey: “”
site: “datadoghq.com” # 契約しているリージョンに合わせて変更

# Network Performance Monitoring を有効化
networkMonitoring:
enabled: true

# eBPFを利用したシステムプローブを有効化(これがNPMの心臓部です)
systemProbe:
enabled: true
# コネクション追跡を有効にする
conntrackEnabled: true

DaemonSetとして動作させ、全ノードでパケットをキャプチャする
agents:
enabled: true

ステップ2: Helmでデプロイ・アップデート

設定ファイルを保存したら、Helmコマンドでクラスタに適用します。

helm repo update
helm upgrade datadog-agent datadog/datadog \
-f datadog-values.yaml

たったこれだけです。これだけで、Datadog Agentは各ノードのカーネルレベルで通信の監視を始めます。

—

4. 動作確認:トラフィックマップで世界が変わる瞬間を体験する

エージェントが起動して数分待ったら、いよいよDatadogのUIを覗いてみましょう。

1. Datadogのダッシュボードメニューから [Network] -> [Network Analytics] または [Service Map] を開きます。
2. フィルターで `env:production` や `service:frontend` などを指定してみましょう。

そこには、私たちが頭の中で想像していた「マイクロサービスの通信相関図」が、リアルタイムにアニメーションとして描かれているはずです。

🔍 現場で役立つ!ボトルネック特定のユースケース

ここで、NPMを使った極上のトラブルシューティングシナリオを一つご紹介します。

  • シチュエーション: 「Checkout(決済)サービスから、Databaseへのレイテンシーが悪化している」というアラートを検知。
  • NPMでのアプローチ:

1. DatadogのNetwork Mapで `checkout` サービスをクリック。
2. 接続先である `database` へのエッジ(線)をクリックすると、TCP再送率(TCP Retransmits)やラウンドトリップタイム(RTT)がグラフで表示されます。
3. もし「TCP再送率」が跳ね上がっていれば、アプリケーションのバグではなく、ネットワーク層(セキュリティグループの設定ミスや、ENIの帯域制限、パケットドロップ)が原因であると一発で特定できます。

わざわざインフラエンジニアに「ネットワークの調子どうですか?」とチャットを投げなくても、NPMの画面を見せるだけで「ここ、再送率が5%を超えてるので、ルーター側のバッファかセキュリティグループを当たりましょう」と秒速で回答できるようになります。この瞬間、あなたはチームのヒーローです。

—

5. 先輩エンジニアからのアドバイス:運用上の注意点

最後に、現場でNPMを運用する上での「知恵」をいくつか授けておきます。

  • カーネルバージョンの確認: eBPFをフル活用するため、Linuxカーネルはなるべく新しいもの(理想はLinux 4.14以上、できれば5.x系以降)を推奨します。古いカーネルだと一部の高度なメトリクスが取れないことがあります。
  • コスト管理: NPMはホスト単位のライセンス体系であることが多いです。開発環境すべてに入れるとコストが膨らむため、まずは「本番環境(Production)」の主要なクラスターから導入し、効果を実感してから横展開するのがスマートなやり方です。

—

まとめ

Datadog Network Performance Monitoring (NPM) は、単なる「ネットワークの監視ツール」ではありません。それは、複雑怪奇なクラウドネイティブの迷宮を照らす羅針盤です。

インフラとアプリの境界線を溶かし、トラブルシューティングの時間を数時間から数秒に縮めてくれるこのツールを導入すれば、あなたの毎日の運用作業は劇的に楽になります。

さあ、今すぐHelmチャートを書き換えて、あなたのシステムの「本当の姿」を覗きに行きましょう!

タイトルとURLをコピーしました