ネットワークパフォーマンスモニタリングのセットアップ
Datadog の ネットワークパフォーマンスモニタリング (NPM) は Datadog 内のサービス、コンテナ、アベイラビリティゾーン、およびその他あらゆるタグ間のネットワークトラフィックを可視化することができます。これは次のような場合に役立ちます。
- 予期しない、または潜在的なサービスの依存関係を特定。
- クロスリージョンやマルチクラウドなど、高コストの通信を最適化。
- クラウドプロバイダーのリージョンやサードパーティーツールの機能停止を特定。
- DNS サーバーメトリクスを使用してサービスディスカバリーの不具合をトラブルシューティング。
ネットワークパフォーマンスモニタリングには Datadog Agent v6.14 以降が必要です。メトリクスは Agent の上位バージョンで自動的に収集されるため、DNS モニタリングを構成するにはメトリクス設定セクションを参照してください。
サポート対象のプラットフォーム
オペレーティングシステム
Linux OS
データ収集は eBPF を使用して行われるため、Datadog は最低限、基盤となる Linux カーネルバージョン 4.4.0 以降または eBPF 機能がバックポートされたプラットフォームを必要とします。NPM は以下の Linux ディストリビューションをサポートしています。
- Ubuntu 16.04 以降
- Debian 9 以降
- Fedora 26 以上
- SUSE 15 以降
- Amazon AMI 2016.03 以降
- Amazon Linux 2
- CentOS/RHEL 7.6 以降
注: CentOS/RHEL 7.6 以降の要件は、kernel 4.4.0 以降では適用外です。DNS 解決機能は CentOS/RHEL 7.6 ではサポートされていません。
Windows OS
データ収集はネットワークカーネルデバイスドライバーを使用して行われます。Datadog Agent バージョン 7.27.1、Windows バージョン 2012 R2 (および Windows 10 を含む同等のデスクトップ OS) 以降でサポートされます。
macOS
Datadog ネットワークパフォーマンスモニタリングは macOS プラットフォームをサポートしていません。
コンテナ
NPM は Docker、Kubernetes、ECS およびその他のコンテナ技術をサポートしており、コンテナ化およびオーケストレーションされた環境のアーキテクチャとパフォーマンスの可視化に役立ちます。Datadog のコンテナインテグレーションでは、コンテナ、タスク、ポッド、クラスター、デプロイなど意味のあるエンティティごとに、システムに内蔵されたタグ (container_name
、task_name
、kube_service
など) を使用してトラフィックを集約することができます。
NPM は Google Kubernetes Engine (GKE) Autopilot ではサポートされていません。
ネットワークルーティングツール
Istio
NPM ではコンテナ、ポッド、サービス間のネットワークコミュニケーションを、Istio のサービスメッシュでマッピングすることができます。
Datadog は、Istio 環境のあらゆる側面を監視するため、以下のことも実現できます。
- ログを使用して、Envoy および Istio の Control Plane の健全性を評価。
- リクエスト、帯域幅、リソース消費のメトリクスでサービスメッシュのパフォーマンスを詳しく確認。
- APM でメッシュを実行してアプリケーションの分散型トレースを調べます。
NPM は Istio v1.6.4 以降および Datadog Agent v7.24.1 以降 でサポートされています。
Datadog を使用した Istio 環境の監視について、詳しくは Istio ブログを参照してください。
Cilium
ネットワークパフォーマンスモニタリングは、次の要件が満たされている場合、Cilium インストールと互換性があります。
- Cilium バージョン 1.6 以降、および
- カーネルバージョン 5.1.16 以降、または 4.19.x カーネルの場合は 4.19.57 以降
プロビジョニングシステム
ネットワークパフォーマンスモニタリングは次のプロビジョニングシステムの使用をサポートしています。
セットアップ
このツールの狙いと強みが、ネットワークエンドポイント間のトラフィック分析とネットワークの依存関係のマッピングであるため、価値を最大化するために、インフラストラクチャーの重要なサブセット、そして**少なくとも 2 つのホスト**にインストールすることが推奨されます。
Datadog Agent を使用してネットワークパフォーマンスのモニタリングを有効化するには、次の構成を使用します。
v6.14+ 以降のバージョンの Agent を使用されている場合は、先にライブプロセスの収集を有効化し、このステップは飛ばします。
下記のシステムプローブの構成の例をコピーします。
sudo -u dd-agent install -m 0640 /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml
/etc/datadog-agent/system-probe.yaml
を編集し、有効フラグを true
に設定します。
network_config: # use system_probe_config for Agent's older than 7.24.1
## @param enabled - boolean - optional - default: false
## Set to true to enable Network Performance Monitoring.
#
enabled: true
v6.18 または 7.18 より古い Agent を実行している場合は、システムプローブを手動で起動しブート時に有効化します (v6.18 および v7.18 以降では、Agent 起動時にシステムプローブが自動的に起動します)。
sudo systemctl start datadog-agent-sysprobe
sudo systemctl enable datadog-agent-sysprobe
注: システムで systemctl
コマンドを利用できない場合は、代わりに sudo service datadog-agent-sysprobe start
のコマンドで実行し、datadog-agent
が起動する前にブート時に実行開始されるよう設定します。
Agent を再起動します。
sudo systemctl restart datadog-agent
注: システムで systemctl
コマンドを利用できない場合は、代わりに次のコマンドを実行します: sudo service datadog-agent restart
。
SELinux 対応のシステム
SELinux が有効化されたシステムでは、システムプローブのバイナリで eBPF 機能を使用するための特殊なアクセス許可が必要です。
CentOS ベースのシステム向けの Datadog Agent RPM パッケージには、システムプローブバイナリに必要なアクセス許可を付与する SELinux ポリシーがバンドルされています。
SELinux を有効にしたその他のシステムでネットワークパフォーマンスモニタリングを使用する場合は、次の手順に従ってください。
ベースとなる SELinux ポリシーを、お使いの SELinux 構成に合わせて修正します。
お使いのシステムによっては、タイプや属性が存在しない (または名前が異なる) 場合があります。
ポリシーをモジュールにコンパイルします。ポリシーのファイル名が system_probe_policy.te
の場合は以下のようになります。
checkmodule -M -m -o system_probe_policy.mod system_probe_policy.te
semodule_package -o system_probe_policy.pp -m system_probe_policy.mod
モジュールを SELinux システムに適用します。
semodule -v -i system_probe_policy.pp
システムプローブバイナリのタイプを、ポリシーで定義されたもののいずれかに変更します。Agent のインストールディレクトリ名が /opt/datadog-agent
の場合は以下のようになります。
semanage fcontext -a -t system_probe_t /opt/datadog-agent/embedded/bin/system-probe
restorecon -v /opt/datadog-agent/embedded/bin/system-probe
Agent を再起動します。
注: これらの手順を実行するには、システムに SELinux ユーティリティ (checkmodule
、semodule
、semodule_package
、semanage
、restorecon
) をインストールしておく必要があります。これらのユーティリティは標準ディストリビューション (Ubuntu、Debian、RHEL、CentOS、SUSE) のほとんどで利用可能です。インストール方法については、お使いのディストリビューションの詳細を確認してください。
お使いのディストリビューション内にこれらのユーティリティが存在しない場合は、現在のディストリビューションで利用可能なユーティリティを使って同じ手順を実行してください。
Windows でのデータ収集は、ネットワークデータ収集用のフィルタードライバに依存します。
Windows ホストのネットワークパフォーマンスモニタリングを有効にするには
Datadog Agent(バージョン 7.27.1 以降)をインストールし、ネットワークドライバコンポーネントを有効にします。
[非推奨] (バージョン 7.44 以下) インストール時に ADDLOCAL="MainApplication,NPM"
を msiexec
コマンドに渡すか、Agent のインストールを GUI で実行する際に “Network Performance Monitoring” を選択します。
C:\ProgramData\Datadog\system-probe.yaml
を編集し、有効フラグを true
に設定します。
network_config:
enabled: true
Agent を再起動します。
PowerShell (powershell.exe
) の場合:
restart-service -f datadogagent
コマンドプロンプト (cmd.exe
) の場合:
net /y stop datadogagent && net start datadogagent
注: ネットワークパフォーマンスモニタリングは、Windows ホストのみを監視し、Windows コンテナは監視しません。
Kubernetes で Helm を使用してネットワークパフォーマンスのモニタリングを有効化するには、以下を values.yaml
ファイルに追加します。Helm チャート v2.4.39+ が必要です。詳細については、Datadog Helm チャートのドキュメントを参照してください。
datadog:
networkMonitoring:
enabled: true
注: Kubernetes 環境で NPM を構成する際に権限エラー (Error: error enabling protocol classifier: permission denied
) が発生する場合は、values.yaml
に以下を追加してください (Helm チャートのこちらのセクションを参照)。
agents:
podSecurity:
apparmor:
enabled: true
Helm をお使いでない場合は、Kubernetes を使用してネットワークパフォーマンスモニタリングを新規で有効化することができます。
datadog-agent.yaml マニフェストテンプレートをダウンロードします。
<DATADOG_API_KEY>
を、ご使用の Datadog API キーに置き換えます。
任意 - Datadog サイトを設定。Datadog EU サイトをご利用中の場合、datadog-agent.yaml
マニフェストで DD_SITE
環境変数を datadoghq.eu
に設定します。
次のコマンドで DaemonSet をデプロイします。
kubectl apply -f datadog-agent.yaml
すでに マニフェストを適用して Agent を稼働させている場合
datadog-agent
テンプレートにアノテーション container.apparmor.security.beta.kubernetes.io/system-probe: unconfined
を追加します。
spec:
selector:
matchLabels:
app: datadog-agent
template:
metadata:
labels:
app: datadog-agent
name: datadog-agent
annotations:
container.apparmor.security.beta.kubernetes.io/system-probe: unconfined
Agent DaemonSet で次の環境変数を使用して、プロセス収集とシステムプローブを有効にします。Agent プロセスごとにコンテナを実行している場合は、次の環境変数を Process Agent コンテナに追加します。それ以外の場合は、環境変数を Agent コンテナに追加します。
# (...)
env:
# (...)
- name: DD_PROCESS_AGENT_ENABLED
value: 'true'
- name: DD_SYSTEM_PROBE_ENABLED
value: 'true'
- name: DD_SYSTEM_PROBE_EXTERNAL
value: 'true'
- name: DD_SYSPROBE_SOCKET
value: /var/run/sysprobe/sysprobe.sock
以下の追加ボリュームを datadog-agent
コンテナにマウントします。
# (...)
spec:
serviceAccountName: datadog-agent
containers:
- name: datadog-agent
image: 'gcr.io/datadoghq/agent:latest'
# (...)
volumeMounts:
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
- name: debugfs
mountPath: /sys/kernel/debug
- name: sysprobe-socket-dir
mountPath: /var/run/sysprobe
新しいシステムプローブを Agent のサイドカーとして追加します。
# (...)
spec:
serviceAccountName: datadog-agent
containers:
- name: datadog-agent
image: 'gcr.io/datadoghq/agent:latest'
# (...)
- name: system-probe
image: 'gcr.io/datadoghq/agent:latest'
imagePullPolicy: Always
securityContext:
capabilities:
add:
- SYS_ADMIN
- SYS_RESOURCE
- SYS_PTRACE
- NET_ADMIN
- NET_BROADCAST
- NET_RAW
- IPC_LOCK
- CHOWN
command:
- /opt/datadog-agent/embedded/bin/system-probe
env:
- name: DD_SYSPROBE_SOCKET
value: /var/run/sysprobe/sysprobe.sock
resources:
requests:
memory: 150Mi
cpu: 200m
limits:
memory: 150Mi
cpu: 200m
volumeMounts:
- name: procdir
mountPath: /host/proc
readOnly: true
- name: cgroups
mountPath: /host/sys/fs/cgroup
readOnly: true
- name: debugfs
mountPath: /sys/kernel/debug
- name: sysprobe-socket-dir
mountPath: /var/run/sysprobe
最後に、お使いのマニフェストに以下のボリュームを追加します。
volumes:
- name: sysprobe-socket-dir
emptyDir: {}
- name: debugfs
hostPath:
path: /sys/kernel/debug
Datadog Operator は `1.0.0` バージョンで一般公開されており、DatadogAgent Custom Resource のバージョン `v2alpha1` と照合しています。
Datadog Operator は Kubernetes や OpenShift にDatadog Agent をデプロイする方法です。カスタムリソースステータスでデプロイ状況、健全性、エラーを報告し、高度な構成オプションで構成ミスのリスクを抑えます。
Operator でネットワークパフォーマンスのモニタリングを有効化するには、次の構成を使用します。
apiVersion: datadoghq.com/v2alpha1
metadata:
name: placeholder
namespace: placeholder
spec:
features:
npm:
enabled: true
Docker でネットワークパフォーマンスのモニタリングを有効化するには、コンテナ Agent を起動する際に、次の構成を使用します。
docker run --cgroupns host \
--pid host \
-e DD_API_KEY="<DATADOG_API_KEY>" \
-e DD_SYSTEM_PROBE_NETWORK_ENABLED=true \
-e DD_PROCESS_AGENT_ENABLED=true \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v /proc/:/host/proc/:ro \
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro \
-v /sys/kernel/debug:/sys/kernel/debug \
--security-opt apparmor:unconfined \
--cap-add=SYS_ADMIN \
--cap-add=SYS_RESOURCE \
--cap-add=SYS_PTRACE \
--cap-add=NET_ADMIN \
--cap-add=NET_BROADCAST \
--cap-add=NET_RAW \
--cap-add=IPC_LOCK \
--cap-add=CHOWN \
gcr.io/datadoghq/agent:latest
<API_キー>
を、ご使用の Datadog API キーに置き換えます。
docker-compose
を使用している場合は、下記を Datadog Agent サービスに書き加えます。
version: '3'
services:
datadog:
image: "gcr.io/datadoghq/agent:latest"
environment:
- DD_SYSTEM_PROBE_NETWORK_ENABLED=true
- DD_PROCESS_AGENT_ENABLED=true
- DD_API_KEY=<DATADOG_API_KEY>
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc/:/host/proc/:ro
- /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
- /sys/kernel/debug:/sys/kernel/debug
cap_add:
- SYS_ADMIN
- SYS_RESOURCE
- SYS_PTRACE
- NET_ADMIN
- NET_BROADCAST
- NET_RAW
- IPC_LOCK
- CHOWN
security_opt:
- apparmor:unconfined
Amazon ECS での設定については、Amazon ECS ドキュメントページを参照してください。
エンハンスドレゾリューション
オプションで、クラウドインテグレーションのリソース収集を有効にして、ネットワークパフォーマンスモニタリングでクラウド管理型エンティティを検出できるようにします。
- Azure ロードバランサーとアプリケーションゲートウェイを可視化するには、Azure インテグレーションをインストールします。
- AWS ロードバランサーを可視化するには、AWS インテグレーションをインストールします。ENI および EC2 のメトリクス収集を有効にする必要があります
これらの機能に関する追加情報は、クラウドサービスエンハンスドレゾリューションを参照してください。
その他の参考資料