Set up GPU Monitoring

#GPU #Datadog #한화시스템

이 페이지는 균일 클러스터(모든 노드에 GPU 장치 있음) 또는 혼합 클러스터(일부 노드에만 GPU 장치 있음)에서 Datadog의 GPU 모니터링을 설정하는 방법에 대한 지침을 제공합니다.

📦 Datadog GPU Monitoring Architecture

├── 🧩 GPU Infrastructure
│ ├─ NVIDIA GPU Hardware (A100, H100 등)
│ ├─ NVIDIA Driver + NVML (Low-level GPU metrics)
│ └─ NVIDIA DCGM (Data Center GPU Manager)

🔽

├── 📡 Metrics Export Layer
│ ├─ ① DCGM Exporter (OpenMetrics 형식)
│ │ → GPU 온도, 전력, 메모리, 오류, NVLink 상태 등 수집
│ └─ ② Datadog Agent GPU Integration
│ → eBPF로 커널 레벨 GPU·CPU·메모리·프로세스 수집
│ → NVML / DCGM 지표 직접 수집 지원

🔽

├── ☁️ Datadog Observability Plane
│ ├─ Metrics Pipeline (OpenMetrics → Datadog Metric Intake)
│ ├─ Log & Trace Correlation (GPU 워크로드와 매핑)
│ ├─ APM / AI Dashboard (LLM, Triton, TorchServe 연동)
│ └─ Cost & Utilization Dashboard

🔽

└── 📊 Visualization & Analysis
├─ GPU Fleet Overview Dashboard
├─ Power & Temperature Trends
├─ Per-Host Utilization & Cost Analysis
├─ Workload Correlation (Slurm, Kubernetes 등)
└─ Alerting (온도, 에러, 언더유틸 등)

필수 구성 요소

Datadog의 GPU 모니터링을 사용하려면 환경이 다음 기준을 충족해야 합니다.

최소 버전 요구 사항

균일한 클러스터에서 GPU 모니터링 설정

균일한 클러스터에서 모든 노드에는 GPU 디바이스가 있습니다.

데이터독 오퍼레이터

  1. 모니터링하려는 모든 GPU 호스트에 최신 버전의 Datadog 에이전트설치 및 배포 되어 있는지 확인합니다.
  2. 다음 매개 변수를 사용하여 리소스를 수정합니다.DatadogAgent
    gpu.enabled: true
    GPU 모니터링을 활성화합니다.
    gpu.privilegedMode: true
    선택 사항. GPU 코어 사용률()과 같은 고급 eBPF 메트릭을 활성화합니다.gpu.core.usage
    gpu.patchCgroupPermissions: true
    GKE에만 해당 됩니다. 에이전트가 GPU 장치에 액세스할 수 있도록 하는 코드 경로를 활성화합니다.system-probe
    gpu.requiredRuntimeClassName:<runtime-name>
    선택 사항. GPU 디바이스에 액세스해야 하는 Pod의 컨테이너 런타임을 지정합니다(예:,, ). 기본값은 NVIDIA GPU Operator에서 정의한 기본 런타임이므로 입니다. EKS 및 Oracle Cloud에서는 기본 런타임 클래스가 이미 GPU 디바이스 액세스를 허용하므로 이 값을 빈 문자열로 설정해야 합니다.nvidia nvidia-cdi nvidia-legacy nvidia
    예: 고급 eBPF 측정항목을 사용 설정한 GKE에서 실행:datadog-agent.yaml
  3. 변경 사항을 적용하고 Datadog 에이전트를 다시 시작합니다.

헬름

  1. 모니터링하려는 모든 GPU 호스트에 최신 버전의 Datadog 에이전트설치 및 배포 되어 있는지 확인합니다.
  2. 다음 매개 변수를 사용하여 구성 파일을 수정합니다.datadog-values.yaml
    gpuMonitoring.enabled: true
    GPU 모니터링을 활성화합니다.
    gpuMonitoring.privilegedMode: true
    선택 사항. GPU 코어 사용률()과 같은 고급 eBPF 메트릭을 활성화합니다.gpu.core.usage
    gpuMonitoring.configureCgroupPerms: true
    GKE에만 해당 됩니다. 에이전트가 GPU 장치에 액세스할 수 있도록 하는 코드 경로를 활성화합니다.system-probe
    gpuMonitoring.runtimeClassName:<runtime-name>
    선택 사항. GPU 디바이스에 액세스해야 하는 Pod의 컨테이너 런타임을 지정합니다(예:,, ). 기본값은 NVIDIA GPU Operator에서 정의한 기본 런타임이므로 입니다. EKS 및 Oracle Cloud에서는 기본 런타임 클래스가 이미 GPU 디바이스 액세스를 허용하므로 이 값을 빈 문자열로 설정해야 합니다.nvidia nvidia-cdi nvidia-legacy nvidia
    예: 고급 eBPF 측정항목을 사용 설정한 GKE에서 실행:datadog-values.yaml
  3. Helm 차트를 업그레이드하고 Datadog 에이전트를 다시 시작합니다.

혼합 클러스터에서 GPU 모니터링 설정

혼합 클러스터에서 일부 노드에는 GPU 디바이스가 있지만 다른 노드에는 없습니다.

오퍼레이터

Datadog Operator를 사용하여 혼합 클러스터에서 GPU 모니터링을 설정하려면 Operator의 에이전트 프로필 기능을 사용하여 GPU가 있는 노드에서만 GPU 모니터링을 선택적으로 활성화합니다.

  1. 모니터링하려는 모든 GPU 호스트에 최신 버전의 Datadog 에이전트설치 및 배포 되어 있는지 확인합니다.
  2. 다음 변경 사항으로 리소스를 수정합니다.DatadogAgent
    spec:
      features:
        oomKill:
          # Only enable this feature if there is nothing else that requires the system-probe container in all Agent pods
          # Examples of system-probe features are npm, cws, usm
          enabled: true
    override:
      nodeAgent:
        volumes:
          - name: nvidia-devices
            hostPath:
              path: /dev/null
          - name: pod-resources
            hostPath:
              path: /var/lib/kubelet/pod-resources
        containers:
          agent:
            env:
              - name: NVIDIA_VISIBLE_DEVICES
                value: "all"
            volumeMounts:
              - name: nvidia-devices
                mountPath: /dev/nvidia-visible-devices
              - name: pod-resources
                mountPath: /var/lib/kubelet/pod-resources
          system-probe:
            env:
              - name: NVIDIA_VISIBLE_DEVICES
                value: "all"
            volumeMounts:
              - name: nvidia-devices
                mountPath: /dev/nvidia-visible-devices
              - name: pod-resources
                mountPath: /var/lib/kubelet/pod-resources
    
  3. 리소스에 변경 내용을 적용합니다. 이러한 변경 사항은 GPU 노드에서 실행되는지 여부에 관계없이 모든 Datadog 에이전트에 안전하게 적용할 수 있습니다.DatadogAgent
  4. GPU 노드를 타겟팅하고 이러한 타깃팅된 노드에서 GPU 모니터링을 활성화하는 Datadog 에이전트 프로필 을 생성합니다.
    다음 예에서 선택기는 레이블이 nvidia.com/gpu.present=true 레이블이 있는 노드를 대상으로 하는데, 이는 이 레이블이 일반적으로 NVIDIA GPU Operator가 있는 노드에 존재하기 때문입니다. 원하는 경우 다른 레이블을 사용할 수 있습니다.profileNodeAffinity
    apiVersion: datadoghq.com/v1alpha1
    kind: DatadogAgentProfile
    metadata:
      name: gpu-nodes
    spec:
      profileAffinity:
        profileNodeAffinity:
          - key: nvidia.com/gpu.present
            operator: In
            values:
              - "true"
      config:
        override:
          nodeAgent:
            runtimeClassName: nvidia  # Only if not in AWS EKS or Oracle Cloud
            containers:
              # Change system-probe environment variables only for advanced
              # eBPF metrics, or if running in GKE
              system-probe:
                env:
                  - name: DD_GPU_MONITORING_ENABLED
                    value: "true"
                  # cgroup permission patching only for GKE
                  - name: DD_GPU_MONITORING_CONFIGURE_CGROUP_PERMS
                    value: "true"
              agent:
                env:
                  - name: DD_GPU_ENABLED
                    value: "true"
                  # Only for advanced eBPF metrics
                  - name: DD_GPU_MONITORING_ENABLED
                    value: "true"
    
  5. 이 새로운 Datadog 에이전트 프로필을 적용한 후 Datadog Operator는 새 데몬셋 을 생성합니다.datadog-agent-with-profile-<namespace>-gpu-nodes

헬름

Helm을 사용하여 혼합 클러스터에서 GPU 모니터링을 설정하려면 GPU 노드에 대한 배포와 비 GPU 노드에 대한 배포의 두 가지 Helm 배포를 생성합니다.

  1. 모니터링하려는 모든 GPU 호스트에 최신 버전의 Datadog 에이전트설치 및 배포 되어 있는지 확인합니다.
  2. GPU가 아닌 노드를 대상으로 구성 파일을 수정합니다.datadog-values.yaml
    다음 예제에서는 이 레이블이 NVIDIA GPU Operator가 있는 노드에 일반적으로 존재하기 때문에 레이블이 없는 노드를 대상으로 합니다. 원하는 경우 다른 레이블을 사용하여 GPU 노드를 제외할 수 있습니다.nvidia.com/gpu.present=true
  3. 새 값 파일. 이 파일을 구성하여 다음을 수행합니다.datadog-gpu-values.yaml
    • GPU 노드만 대상 지정
    • 기존 Datadog 클러스터 에이전트 가입
    • 다음 매개변수를 사용하여 GPU 모니터링을 활성화합니다.
      gpuMonitoring.enabled: true
      GPU 모니터링을 활성화합니다.
      gpuMonitoring.privilegedMode: true
      선택 사항. GPU 코어 사용률()과 같은 고급 eBPF 메트릭을 활성화합니다.gpu.core.usage
      gpuMonitoring.configureCgroupPerms: true
      GKE에만 해당 됩니다. 에이전트가 GPU 장치에 액세스할 수 있도록 하는 코드 경로를 활성화합니다.system-probe
      gpuMonitoring.runtimeClassName:<runtime-name>
      선택 사항. GPU 디바이스에 액세스해야 하는 Pod의 컨테이너 런타임을 지정합니다(예:,, ). 기본값은 NVIDIA GPU Operator에서 정의한 기본 런타임이므로 입니다. EKS 및 Oracle Cloud에서는 기본 런타임 클래스가 이미 GPU 디바이스 액세스를 허용하므로 이 값을 빈 문자열로 설정해야 합니다.nvidia nvidia-cdi nvidia-legacy nvidia
      본보기:datadog-gpu-values.yaml
  4. 수정된.datadog-values.yaml
  5. GPU별 재정의를 사용하여 Helm 차트를 다시 배포합니다.

추가 유용한 문서, 링크 및 문서: