본문 바로가기
WIKI 기술 지식 베이스

Cloud Network Monitoring 설정 (Cloud Network Monitoring Setup)

원문 보기 위키 갱신

Datadog Agent로 네트워크 데이터를 수집하는 Cloud Network Monitoring(CNM) 설정 방법을 알아봐요.

출처: 문서

본문

Datadog Cloud Network Monitoring(CNM)은 서비스, 컨테이너, 가용 영역, Datadog의 기타 모든 태그 간 네트워크 트래픽에 대한 가시성을 제공해 다음을 할 수 있게 해 줘요:

  • 예상치 못하거나 잠재된 서비스 종속성 파악
  • 비용이 많이 드는 크로스 리전 또는 멀티클라우드 통신 최적화
  • 클라우드 제공자 리전과 타사 도구의 중단 식별
  • DNS 서버 메트릭으로 잘못된 서비스 발견 문제 해결

Cloud Network Monitoring에는 Datadog Agent v6.14+가 필요해요. 상위 버전의 Agent에서는 메트릭이 자동으로 수집되므로, DNS 모니터링을 구성하려면 메트릭 설정 섹션을 참고해요.

지원 플랫폼 (Supported platforms)

운영 체제 (Operating systems)

Linux OS

데이터 수집은 eBPF를 사용해 이루어지므로, Datadog은 기본 Linux 커널 버전 4.4.0+를 갖거나 eBPF 기능이 백포트된 플랫폼을 최소한으로 요구해요. CNM은 다음 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+에는 4.4.0+ 커널 요구 사항의 예외가 있어요. DNS 확인 (DNS Resolution) 기능은 CentOS/RHEL 7.6에서 지원되지 않아요.

Windows OS

데이터 수집은 네트워크 커널 장치 드라이버를 사용해 이루어져요. Windows 2012 R2(및 Windows 10을 포함한 동등한 데스크톱 OS) 이상 버전에서 Datadog Agent 7.27.1부터 지원돼요.

macOS

Datadog Cloud Network Monitoring은 macOS 플랫폼을 지원하지 않아요.

컨테이너 (Containers)

CNM은 Docker, Kubernetes, ECS 및 기타 컨테이너 기술을 지원하며 컨테이너화·오케스트레이션된 환경의 아키텍처와 성능을 시각화하도록 도와줘요. Datadog의 컨테이너 통합은 container_name, task_name, kube_service 같은 기본 제공 태그로 컨테이너, 작업, 파드, 클러스터, 배포와 같은 의미 있는 엔터티별로 트래픽을 집계할 수 있게 해 줘요.

네트워크 라우팅 도구 (Network routing tools)

Istio

CNM을 사용하면 Istio 서비스 메시를 통해 컨테이너, 파드, 서비스 간 네트워크 통신을 매핑할 수 있어요.

Datadog은 Istio 환경의 모든 측면을 모니터링하므로 다음도 할 수 있어요:

  • 로그 (logs)로 Envoy와 Istio 컨트롤 플레인의 건강 상태 평가
  • 요청, 대역폭, 리소스 소비 메트릭 (metrics)으로 서비스 메시 성능 분류
  • 메시를 통해 거래하는 애플리케이션의 분산 트레이스를 APM으로 검사

CNM은 Datadog Agent v7.24.1+와 함께 Istio v1.6.4+를 지원해요.

Datadog으로 Istio 환경을 모니터링하는 방법에 대해 자세히 알아보려면 Istio 블로그를 참고하세요.

Cilium

Cloud Network Monitoring은 다음 요구 사항이 충족되면 Cilium 설치와 호환돼요:

  1. Cilium 버전 1.6 이상
  2. 커널 버전 5.1.16 이상, 또는 4.19.x 커널의 경우 4.19.57 이상

프로비저닝 시스템 (Provisioning systems)

Cloud Network Monitoring은 다음 프로비저닝 시스템의 사용을 지원해요:

설정 (Setup)

Cloud Network Monitoring은 네트워크 엔드포인트 간 트래픽을 분석하고 네트워크 종속성을 매핑하도록 설계돼요. Datadog은 인프라의 의미 있는 하위 집합과 최소 2개의 호스트 에 CNM을 설치해 가치를 극대화할 것을 권장해요.

{% tab title="Agent (Linux)" %} Datadog Agent로 Cloud Network Monitoring을 활성화하려면 다음 구성을 사용해요:

  1. v6.14보다 오래된 Agent를 사용 중이면 먼저 실시간 프로세스 수집 (live process collection)을 활성화하고, 그렇지 않으면 이 단계를 건너뛰어요.

  2. system-probe 예시 구성을 복사해요:

    sudo -u dd-agent install -m 0640 /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml
    
  3. /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 Cloud Network Monitoring.
      #
      enabled: true
    

선택 사항: 비표준 포트에서 DNS 트래픽을 모니터링하려면(Agent v7.76.0+) dns_monitoring_ports 옵션을 추가해요:

network_config:
  enabled: true
  dns_monitoring_ports:
    - 53
    - 5353
  1. v6.18 또는 7.18보다 오래된 Agent를 실행 중이면 system-probe를 수동으로 시작하고 부팅 시 시작되도록 활성화해요(v6.18과 v7.18부터 system-probe는 Agent 시작 시 자동으로 시작돼요):

    sudo systemctl start datadog-agent-sysprobe
    sudo systemctl enable datadog-agent-sysprobe
    

참고: 시스템에서 systemctl 명령을 사용할 수 없으면 다음 명령으로 시작해요: sudo service datadog-agent-sysprobe start 그리고 datadog-agent가 시작되기 전에 부팅 시 시작되도록 설정해요.

  1. Agent를 재시작해요.

    sudo systemctl restart datadog-agent
    

참고: 시스템에서 systemctl 명령을 사용할 수 없으면 다음 명령으로 대신 실행해요: sudo service datadog-agent restart

SELinux 활성 시스템 (SELinux-enabled systems)

SELinux가 활성화된 시스템에서 system-probe 바이너리는 eBPF 기능을 사용하려면 특별한 권한이 필요해요.

CentOS 기반 시스템용 Datadog Agent RPM 패키지는 system-probe 바이너리에 이러한 권한을 부여하는 SELinux 정책을 번들로 제공해요.

SELinux가 활성화된 다른 시스템에서 Cloud Network Monitoring을 사용해야 한다면 다음을 수행해요:

  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. system-probe 바이너리 유형을 정책에 정의된 유형으로 변경해요. 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
    
  5. Agent를 재시작해요.

참고: 이 지침에는 시스템에 일부 SELinux 유틸리티(checkmodule, semodule, semodule_package, semanage, restorecon)가 설치되어 있어야 하는데, 이는 대부분의 표준 배포판(Ubuntu, Debian, RHEL, CentOS, SUSE)에서 사용할 수 있어요. 설치 방법에 대한 자세한 내용은 배포판을 확인해요.

배포판에 이러한 유틸리티가 없다면, 배포판에서 제공하는 유틸리티를 사용해 동일한 절차를 따라요. {% /tab %}

{% tab title="Agent (Windows)" %} Windows의 데이터 수집은 네트워크 데이터 수집을 위한 필터 드라이버에 의존해요.

Windows 호스트에서 Cloud Network Monitoring을 활성화하려면:

  1. 네트워크 드라이버 구성 요소가 활성화된 상태로 Datadog Agent(버전 7.27.1 이상)를 설치해요.

[DEPRECATED] (버전 7.44 이하) 설치 중 msiexec 명령에 ADDLOCAL="MainApplication,NPM"을 전달하거나 GUI로 Agent 설치를 실행할 때 "Cloud Network Monitoring"을 선택해요.

  1. C:\ProgramData\Datadog\system-probe.yaml을 편집해 활성화 플래그를 true로 설정해요:

    network_config:
        enabled: true
    

선택 사항: 비표준 포트에서 DNS 트래픽을 모니터링하려면(Agent v7.76.0+) dns_monitoring_ports 옵션을 추가해요:

network_config:
    enabled: true
    dns_monitoring_ports:
        - 53
        - 5353
  1. Agent를 재시작해요.

PowerShell(powershell.exe)의 경우:

restart-service -f datadogagent

명령 프롬프트(cmd.exe)의 경우:

net /y stop datadogagent && net start datadogagent

참고: Cloud Network Monitoring은 Windows 호스트만 모니터링하며 Windows 컨테이너는 모니터링하지 않아요. {% /tab %}

{% tab title="Helm" %} Helm으로 Kubernetes에 Cloud Network Monitoring을 활성화하려면 values.yaml 파일에 다음을 추가해요. 참고: Helm 차트 v3.135.3+가 필요해요. 자세한 내용은 Datadog Helm Chart 문서를 참고해요.

datadog:
  ...
  networkMonitoring:
    enabled: true

선택 사항: 비표준 포트에서 DNS 트래픽을 모니터링하려면(Agent v7.76.0+) dnsMonitoringPorts 옵션을 추가해요:

datadog:
  networkMonitoring:
    enabled: true
    dnsMonitoringPorts:
      - 53
      - 5353

환경에 따라 다음 추가 단계 중 하나가 필요할 수 있어요:

{% collapsible-section %}

Google GKE Autopilot

클러스터가 Google의 GKE Autopilot에서 실행 중이면 values 파일에 다음을 추가해요:

providers:
  gke:
    autopilot: true

{% /collapsible-section %}

{% collapsible-section %}

Google Container-Optimized OS (COS)

클러스터가 Google Container-Optimized OS(COS)에서 실행 중이면 values 파일에 다음을 추가해요:

providers:
  gke:
    cos: true

{% /collapsible-section %}

{% collapsible-section %}

Bottlerocket Linux

클러스터가 노드에 Bottlerocket Linux 배포판을 사용 중이면 values 파일에 다음을 추가해요:

agents:
  containers:
    systemProbe:
      securityContext:
        seLinuxOptions:
          user: "system_u"
          role: "system_r"
          type: "super_t"
          level: "s0"

{% /collapsible-section %}

{% /tab %}

{% tab title="Kubernetes without Helm" %} Helm을 사용하지 않는다면 Kubernetes에서 Cloud Network Monitoring을 처음부터 활성화할 수 있어요:

  1. datadog-agent.yaml 매니페스트 템플릿을 다운로드해요.

  2. <DATADOG_API_KEY>를 Datadog API 키로 바꿔요.

  3. 선택 사항 - Datadog 사이트를 설정하세요. Datadog EU 사이트를 사용 중이라면 datadog-agent.yaml 매니페스트에서 DD_SITE 환경 변수를 datadoghq.eu로 설정해요.

  4. 다음 명령으로 DaemonSet을 배포해요:

    kubectl apply -f datadog-agent.yaml
    

이미 매니페스트로 Agent를 실행 중이라면:

  1. 1.30 미만의 Kubernetes 버전에서는 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
    

Kubernetes 버전 1.30+에서는 datadog-agent 템플릿에 다음 securityContext를 추가해요:

spec:
    selector:
        matchLabels:
            app: datadog-agent
    template:
        metadata:
            labels:
                app: datadog-agent
            name: datadog-agent
        spec:
            serviceAccountName: datadog-agent
            securityContext:
              appArmorProfile:
                type: Unconfined
            containers:
            # (...)
  1. 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
                          - name: DD_AUTH_TOKEN_FILE_PATH
                            value: /etc/datadog-agent/auth/token
    
  2. datadog-agent 컨테이너에 다음 추가 볼륨을 마운트해요:

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'registry.datadoghq.com/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
                      - name: auth-token
                        mountPath: /etc/datadog-agent/auth
                        readOnly: false # needs RW to write auth token
    
  3. Agent에 사이드카로 새 system-probe를 추가해요:

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'registry.datadoghq.com/agent:latest'
                    # (...)
                    - name: system-probe
                      image: 'registry.datadoghq.com/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_SYSTEM_PROBE_ENABLED
                            value: 'true'
                          - name: DD_SYSPROBE_SOCKET
                            value: /var/run/sysprobe/sysprobe.sock
                          - name: DD_AUTH_TOKEN_FILE_PATH
                            value: /etc/datadog-agent/auth/token
                      resources:
                          requests:
                              memory: 150Mi
                              cpu: 200m
                          limits:
                              memory: 300Mi
                              cpu: 400m
                      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
                          - name: auth-token
                            mountPath: /etc/datadog-agent/auth
                            readOnly: true
    
  4. 마지막으로 매니페스트에 다음 볼륨을 추가해요:

                volumes:
                    - name: debugfs
                      hostPath:
                          path: /sys/kernel/debug
                    - name: sysprobe-socket-dir
                      emptyDir: { }
                    - name: auth-token
                      emptyDir: { }
    

{% /tab %}

{% tab title="Operator" %} Datadog Operator는 Kubernetes와 OpenShift에 Datadog Agent를 배포하는 것을 단순화해요. Custom Resource 상태를 통해 배포 상태, 건강, 오류 보고를 제공하고, 더 높은 수준의 구성 옵션으로 잘못된 구성의 위험을 줄여요.

Datadog Operator에서 Cloud Network Monitoring을 활성화하려면 다음 구성을 사용해요:

apiVersion: datadoghq.com/v2alpha1
metadata:
  name: placeholder
  namespace: placeholder
spec:
  features:
    npm:
      enabled: true

{% /tab %}

{% tab title="Docker" %} Docker에서 Cloud Network Monitoring을 활성화하려면 컨테이너 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 \
registry.datadoghq.com/agent:latest

<DATADOG_API_KEY>를 Datadog API 키로 바꿔요.

docker-compose를 사용한다면 Datadog Agent 서비스에 다음을 추가해요.

version: '3'
services:
  datadog:
    image: "registry.datadoghq.com/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

{% /tab %}

{% tab title="ECS" %} Amazon ECS에서 CNM을 설정하려면 Amazon ECS 문서 페이지를 참고해요. {% /tab %}

{% tab title="ECS Fargate" %}

{% alert level="info" %} CNM용 ECS Fargate는 프리뷰 상태예요. 가입하려면 Datadog 담당자에게 문의하세요. {% /alert %}

ECS Fargate에서 Cloud Network Monitoring을 활성화하려면 다음 지침을 사용해요:

Agent 버전 7.58 이상이 필요해요.

  • 새 Fargate 배포의 경우 프로세스 수집 (process collection)을 활성화해 Fargate 호스트에서 Datadog Agent가 Fargate를 모니터링하도록 구성해요.

  • 기존 배포의 경우 task.json 파일을 업데이트해 다음 구성 설정을 포함해요:

{
 "containerDefinitions": [
   (...)
     "environment": [
       (...)
       {
         "name": "DD_SYSTEM_PROBE_NETWORK_ENABLED",
         "value": "true"
       },
       {
          "name": "DD_NETWORK_CONFIG_ENABLE_EBPFLESS",
          "value": "true"
       },
       {
          "name": "DD_PROCESS_AGENT_ENABLED",
          "value": "true"
       }      
     ],
     "linuxParameters": {
      "capabilities": {
        "add": [
          "SYS_PTRACE"
        ]
      }
    },
 ],
}

{% /tab %}

{% callout %}

다음 Datadog 사이트 사용자에게 중요한 안내: app.datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, app.datadoghq.eu, uk1.datadoghq.com

강화된 해석 (Enhanced resolution)

선택 사항으로, 클라우드 통합에 대한 리소스 수집을 활성화해 Cloud Network Monitoring이 클라우드 관리 엔터티를 발견하도록 해요.

  • Azure 로드 밸런서와 애플리케이션 게이트웨이에 대한 가시성을 위해 Azure 통합을 설치해요.
  • AWS Load Balancer에 대한 가시성을 위해 AWS 통합을 설치해요. ENI와 EC2 메트릭 수집을 활성화해야 해요.

이러한 기능에 대한 추가 정보는 클라우드 서비스 강화 해석 (Cloud service enhanced resolution)을 참고해요.

{% /callout %}

실패한 연결 (Failed connections)

Failed Connections를 사용하면 재설정(resets), 거부(refusals), 시간 초과(timeouts)를 포함한 TCP 실패의 수집·보고가 가능해요. 이 기능은 Agent 버전 7.59+에서 기본적으로 활성화되며, CNM Analytics 페이지의 Customize 메뉴에서 Failures 토글을 켜서 접근할 수 있어요.

참고: 인프라의 일부 Agent가 7.59보다 이전 버전을 실행 중이라면 실패가 과소 보고될 수 있어요. CNM은 모든 호스트에서 동일한 Agent 버전을 유지할 것을 권장해요.

{% image source="https://docs.dd-static.net/images/network_performance_monitoring/setup/cnm_tcp_failures_toggle.ff74a865702da66aeaf5be45f988c1c8.png?auto=format&fit=max&w=850 1x, https://docs.dd-static.net/images/network_performance_monitoring/setup/cnm_tcp_failures_toggle.ff74a865702da66aeaf5be45f988c1c8.png?auto=format&fit=max&w=850&dpr=2 2x" alt="Screenshot of the CNM customize menu, highlighting the Failures toggle" /%}

더 알아보기 (Learn more)

도움이 되는 추가 문서, 링크, 아티클이에요: