ネットワークパフォーマンスのモニタリングのインストール
Dash が新機能を発表!インシデントマネジメント、Continuous Profiler など多数の機能が追加されました! Dash イベントで発表された新機能!

ネットワークパフォーマンスのモニタリングのインストール

ネットワークパフォーマンスのモニタリングには Datadog Agent v6.14 以降が必要です。この製品は eBPF に構築されているため、Datadog では最小要件として基盤プラットフォームに Linux kernel バージョン4.4.0 以降が必要です。

サポート対象のプラットフォーム

  • Ubuntu 16.04 以降
  • Debian 9 以降
  • Fedora 26 以上
  • SUSE 15 以降
  • Amazon AMI 2016.03 以降
  • Amazon Linux 2

CentOS/RHEL 7.6 以降の要件は、kernel 4.4.0 以降では適用外です。DNS 解決機能は CentOS/RHEL 7.6 ではサポートされていません。

: 現在 Datadog では、Windows プラットフォームおよび macOS プラットフォームのネットワークパフォーマンスのモニタリングをサポートしていません。

次のプロビジョニングシステムはサポート対象です。

セットアップ

ネットワークパフォーマンスモニタリングを有効にするには、ご使用中のシステム設定に基づいて、Agent の主要コンフィギュレーションファイルで構成します。

このツールの狙いと強みが、ネットワークエンドポイント間のトラフィック分析とネットワークの依存関係のマッピングであるため、価値を最大化するために、インフラストラクチャーの重要なサブセット、そして少なくとも 2 つのホストにインストールすることが推奨されます。

Datadog Agent を使用してネットワークパフォーマンスのモニタリングを有効化するには、次のコンフィギュレーションを使用します。

  1. v6.14 より前のバージョンの Agent を使用されている場合は、先にライブプロセスの収集を有効化し、このステップは飛ばします。

  2. 下記のシステムプローブのコンフィギュレーションの例をコピーします。

    sudo -u dd-agent cp /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml
  3. /etc/datadog-agent/system-probe.yaml を編集し、有効フラグを true に設定します。

    system_probe_config:
        ## @param enabled - boolean - optional - default: false
        ## Set to true to enable the System Probe.
        #
        enabled: true
  4. 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 が起動する前にブート時に実行開始されるよう設定します。

  5. Agent を再起動します

    sudo systemctl restart datadog-agent

    : システムで systemctl コマンドを利用できない場合は、代わりに次のコマンドを実行します: sudo service datadog-agent restart

SELinux 対応のシステム

SELinux が有効化されたシステムでは、システムプローブのバイナリで eBPF 機能を使用するための特殊なアクセス許可が必要です。

CentOS ベースのシステム向けの Datadog Agent RPM パッケージには、システムプローブバイナリに必要なアクセス許可を付与する SELinux ポリシーがバンドルされています。

SELinux を有効にしたその他のシステムでネットワークパフォーマンスモニタリングを使用する場合は、次の手順に従ってください。

  1. ベースとなる SELinux ポリシーを、お使いの SELinux コンフィギュレーションに合わせて修正します。 お使いのシステムによっては、タイプや属性が存在しない (または名前が異なる) 場合があります。

  2. ポリシーをモジュールにコンパイルします。ポリシーのファイル名が 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
  3. モジュールを SELinux システムに適用します。

    semodule -v -i system_probe_policy.pp
  4. システムプローブバイナリのタイプを、ポリシーで定義されたもののいずれかに変更します。Agent のインストールディレクトリ名が system_probe_policy.te の場合は以下のようになります。

    semanage fcontext -a -t system_probe_t /opt/datadog-agent/embedded/bin/system-probe
    restorecon -v /opt/datadog-agent/embedded/bin/system-probe
  5. Agent を再起動します

: 上記の手順では、システムに複数の SELinux ユーティリティ (checkmodulesemodulesemodule_packagesemanagerestorecon) をインストールする必要があります。これらは標準ディストリビューション (Ubuntu、Debian、RHEL、CentOS、SUSE) のほとんどで利用可能です。インストール方法について、詳しくはお使いのディストリビューションを確認してください。

お使いのディストリビューション内にこれらのユーティリティが存在しない場合は、現在のディストリビューションで利用可能なユーティリティを使って同じ手順を実行してください。

Kubernetes を使用してネットワークパフォーマンスのモニタリングを新規で有効化するには

  1. datadog-agent.yaml マニフェストをダウンロードします。
  2. <API_キー> を、ご使用の Datadog API キーに置き換えます。
  3. 任意 - Datadog サイトを設定。Datadog EU サイトをご利用中の場合、datadog-agent.yaml マニフェストで DD_SITE 環境変数を datadoghq.eu に設定します。
  4. 次のコマンドで DaemonSet をデプロイします。

    kubectl apply -f datadog-agent.yaml

すでに マニフェストを適用して Agent を稼働させている場合

  1. 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
  2. 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/s6/sysprobe.sock

プロセス Agent を別のコンテナで稼働させている場合は、上記の環境変数をそのコンテナに設定する必要があります。

  1. 以下の追加ボリュームを datadog-agent コンテナにマウントします。

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'datadog/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: s6-run
                        mountPath: /var/run/s6
  2. 新しいシステムプローブを Agent のサイドカーとして追加します。

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'datadog/agent:latest'
                    # (...)
                    - name: system-probe
                      image: 'datadog/agent:latest'
                      imagePullPolicy: Always
                      securityContext:
                          capabilities:
                              add:
                                  - SYS_ADMIN
                                  - SYS_RESOURCE
                                  - SYS_PTRACE
                                  - NET_ADMIN
                                  - IPC_LOCK
                      command:
                          - /opt/datadog-agent/embedded/bin/system-probe
                      env:
                          - name: DD_SYSPROBE_SOCKET
                            value: /var/run/s6/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: s6-run
                            mountPath: /var/run/s6
  3. 最後に、お使いのマニフェストに以下のボリュームを追加します。

                volumes:
                    - name: s6-run
                      emptyDir: {}
                    - name: debugfs
                      hostPath:
                          path: /sys/kernel/debug

Docker でネットワークパフォーマンスのモニタリングを有効化するには、コンテナ Agent を起動する際に、次のコンフィギュレーションを使用します。

$ docker run -e DD_API_KEY="<DATADOG_API_キー>" \
-e DD_SYSTEM_PROBE_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=IPC_LOCK \
datadog/agent:latest

<API_キー> を、ご使用の Datadog API キーに置き換えます。

docker-compose を使用している場合は、下記を Datadog Agent サービスに書き加えます。

version: '3'
services:
  ..
  datadog:
    image: "datadog/agent:latest"
    environment:
       DD_SYSTEM_PROBE_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
    - IPC_LOCK
    security_opt:
    - apparmor:unconfined

AWS ECS での設定については、AWS ECS ドキュメントページを参照してください。

その他の参考資料