Versión de la integración3.1.0
Este check envía las métricas expuestas por NVIDIA DCGM Exporter en formato de Datadog Agent. Para obtener más información sobre NVIDIA Data Center GPU Manager (DCGM), consulta NVIDIA DCGM.
Configuración
Instalación
A partir de la versión 7.47.0 del Agent, el check de DCGM está incluido en el paquete del Datadog Agent. Sin embargo, debes activar el contenedor de DCGM Exporter para exponer las métricas de la GPU a fin de que el Agent pueda recopilar estos datos. Como los contadores predeterminados no son suficientes, Datadog recomienda utilizar la siguiente configuración de DCGM para cubrir lo mismo que la integración de NVML, además de tener métricas útiles.
# Formato
# Si la línea comienza con '#', se considera un comentario
# CAMPO DE DCGM ,Prometheus metric type ,help message
# Relojes
DCGM_FI_DEV_SM_CLOCK ,gauge ,SM clock frequency (in MHz).
DCGM_FI_DEV_MEM_CLOCK ,gauge ,Memory clock frequency (in MHz).
# Temperatura
DCGM_FI_DEV_MEMORY_TEMP ,gauge ,Memory temperature (in C).
DCGM_FI_DEV_GPU_TEMP ,gauge ,GPU temperature (in C).
# Potencia
DCGM_FI_DEV_POWER_USAGE ,gauge ,Power draw (in W).
DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION ,counter ,Total energy consumption since boot (in mJ).
# PCIe
DCGM_FI_DEV_PCIE_REPLAY_COUNTER ,counter ,Total number of PCIe retries.
# Utilización (el período de muestra varía según el producto)
DCGM_FI_DEV_GPU_UTIL ,gauge ,GPU utilization (in %).
DCGM_FI_DEV_MEM_COPY_UTIL ,gauge ,Memory utilization (in %).
DCGM_FI_DEV_ENC_UTIL ,gauge ,Encoder utilization (in %).
DCGM_FI_DEV_DEC_UTIL ,gauge ,Decoder utilization (in %).
# Errores e infracciones
DCGM_FI_DEV_XID_ERRORS ,gauge ,Value of the last XID error encountered.
# Uso de memoria
DCGM_FI_DEV_FB_FREE ,gauge ,Framebuffer memory free (in MiB).
DCGM_FI_DEV_FB_USED ,gauge ,Framebuffer memory used (in MiB).
# NVLink
DCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL ,counter ,Total number of NVLink bandwidth counters for all lanes.
# Estado de la licencia de VGPU
DCGM_FI_DEV_VGPU_LICENSE_STATUS ,gauge ,vGPU License status
# Filas reasignadas
DCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS ,counter ,Number of remapped rows for uncorrectable errors
DCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS ,counter ,Number of remapped rows for correctable errors
DCGM_FI_DEV_ROW_REMAP_FAILURE ,gauge ,Whether remapping of rows has failed
# Métricas de DCP
DCGM_FI_PROF_PCIE_TX_BYTES ,counter ,The number of bytes of active pcie tx data including both header and payload.
DCGM_FI_PROF_PCIE_RX_BYTES ,counter ,The number of bytes of active pcie rx data including both header and payload.
DCGM_FI_PROF_GR_ENGINE_ACTIVE ,gauge ,Ratio of time the graphics engine is active (in %).
DCGM_FI_PROF_SM_ACTIVE ,gauge ,The ratio of cycles an SM has at least 1 warp assigned (in %).
DCGM_FI_PROF_SM_OCCUPANCY ,gauge ,The ratio of number of warps resident on an SM (in %).
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE ,gauge ,Ratio of cycles the tensor (HMMA) pipe is active (in %).
DCGM_FI_PROF_DRAM_ACTIVE ,gauge ,Ratio of cycles the device memory interface is active sending or receiving data (in %).
DCGM_FI_PROF_PIPE_FP64_ACTIVE ,gauge ,Ratio of cycles the fp64 pipes are active (in %).
DCGM_FI_PROF_PIPE_FP32_ACTIVE ,gauge ,Ratio of cycles the fp32 pipes are active (in %).
DCGM_FI_PROF_PIPE_FP16_ACTIVE ,gauge ,Ratio of cycles the fp16 pipes are active (in %).
# Campos adicionales recomendados de Datadog
DCGM_FI_DEV_COUNT ,counter ,Number of Devices on the node.
DCGM_FI_DEV_FAN_SPEED ,gauge ,Fan speed for the device in percent 0-100.
DCGM_FI_DEV_SLOWDOWN_TEMP ,gauge ,Slowdown temperature for the device.
DCGM_FI_DEV_POWER_MGMT_LIMIT ,gauge ,Current power limit for the device.
DCGM_FI_DEV_PSTATE ,gauge ,Performance state (P-State) 0-15. 0=highest
DCGM_FI_DEV_FB_TOTAL ,gauge ,
DCGM_FI_DEV_FB_RESERVED ,gauge ,
DCGM_FI_DEV_FB_USED_PERCENT ,gauge ,
DCGM_FI_DEV_CLOCK_THROTTLE_REASONS ,gauge ,Current clock throttle reasons (bitmask of DCGM_CLOCKS_THROTTLE_REASON_*)
DCGM_FI_PROCESS_NAME ,label ,The Process Name.
DCGM_FI_CUDA_DRIVER_VERSION ,label ,
DCGM_FI_DEV_NAME ,label ,
DCGM_FI_DEV_MINOR_NUMBER ,label ,
DCGM_FI_DRIVER_VERSION ,label ,
DCGM_FI_DEV_BRAND ,label ,
DCGM_FI_DEV_SERIAL ,label ,
Docker
Para configurar el exportador en un entorno Docker:
- Crea el archivo
$PWD/default-counters.csv
que contiene los campos predeterminados de NVIDIA etc/default-counters.csv
, así como otros campos recomendados por Datadog. Para agregar más campos para la recopilación, sigue estas instrucciones. Para obtener la lista completa de campos, consulta el manual de referencia de la API de DCGM. - Ejecuta el contenedor Docker usando el siguiente comando:
sudo docker run --pid=host --privileged -e DCGM_EXPORTER_INTERVAL=5000 --gpus all -d -v /proc:/proc -v $PWD/default-counters.csv:/etc/dcgm-exporter/default-counters.csv -p 9400:9400 --name dcgm-exporter nvcr.io/nvidia/k8s/dcgm-exporter:3.1.7-3.1.4-ubuntu20.04
Kubernetes (chart Helm de DCGM Exporter)
El DCGM Exporter se puede instalar rápidamente en un entorno Kubernetes mediante el chart Helm de NVIDIA DCGM Exporter. Las instrucciones que aparecen a continuación derivan de la plantilla proporcionada por NVIDIA aquí.
- Añade el repositorio Helm de NVIDIA DCGM Exporter y asegúrate de que esté actualizado:
helm repo add gpu-helm-charts https://nvidia.github.io/dcgm-exporter/helm-charts && helm repo update
- Crea un
ConfigMap
que contenga las métricas recomendadas por Datadog de Instalación, así como el RoleBinding
y el Role
utilizados por los pods de DCGM para recuperar el ConfigMap
usando el manifiesto a continuación:apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: dcgm-exporter-read-datadog-cm
namespace: default
rules:
- apiGroups: [""]
resources: ["configmaps"]
resourceNames: ["datadog-dcgm-exporter-configmap"]
verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: dcgm-exporter-datadog
namespace: default
subjects:
- kind: ServiceAccount
name: dcgm-datadog-dcgm-exporter
namespace: default
roleRef:
kind: Role
name: dcgm-exporter-read-datadog-cm
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ConfigMap
metadata:
name: datadog-dcgm-exporter-configmap
namespace: default
data:
metrics: |
# Copy the content from the Installation section.
- Crea tu chart Helm de DCGM Exporter
dcgm-values.yaml
con el siguiente contenido:# Exposing more metrics than the default for additional monitoring - this requires the use of a dedicated ConfigMap for which the Kubernetes ServiceAccount used by the exporter has access thanks to step 1.
# Ref: https://github.com/NVIDIA/dcgm-exporter/blob/e55ec750def325f9f1fdbd0a6f98c932672002e4/deployment/values.yaml#L38
arguments: ["-m", "default:datadog-dcgm-exporter-configmap"]
# Datadog Autodiscovery V2 annotations
podAnnotations:
ad.datadoghq.com/exporter.checks: |-
{
"dcgm": {
"instances": [
{
"openmetrics_endpoint": "http://%%host%%:9400/metrics"
}
]
}
}
# Optional - Disabling the ServiceMonitor which requires Prometheus CRD - can be re-enabled if Prometheus CRDs are installed in your cluster
serviceMonitor:
enabled: false
- Instala el chart Helm de DCGM Exporter en el espacio de nombres
default
con el siguiente comando, mientras te encuentras en el directorio con tu dcgm-values.yaml
:helm install dcgm-datadog gpu-helm-charts/dcgm-exporter -n default -f dcgm-values.yaml
Nota: Puedes modificar el nombre de la versión dcgm-datadog
así como el espacio de nombres, pero debes modificar en consecuencia el manifiesto del paso 1.
Kubernetes (NVIDIA GPU Operator)
El DCGM Exporter se puede instalar en un entorno Kubernetes mediante NVIDIA GPU Operator. Las instrucciones que aparecen a continuación derivan de la plantilla proporcionada por NVIDIA aquí.
- Añade el repositorio Helm de NVIDIA GPU Operator y asegúrate de que esté actualizado:
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
- Sigue las instrucciones de Configuración de métricas personalizadas con el CSV de Instalación:
- Obtén el archivo de métricas y guárdalo como
dcgm-metrics.csv
: curl https://raw.githubusercontent.com/NVIDIA/dcgm-exporter/main/etc/dcp-metrics-included.csv > dcgm-metrics.csv
- Edita el archivo de métricas reemplazando su contenido con la asignación proporcionada por Datadog.
- Crea un espacio de nombres
gpu-operator
si aún no existe: kubectl create namespace gpu-operator
. - Crea un ConfigMap utilizando el archivo editado anteriormente:
kubectl create configmap metrics-config -n gpu-operator --from-file=dcgm-metrics.csv
- Crea tu chart Helm de GPU Operator
dcgm-values.yaml
con el siguiente contenido:# Refer to NVIDIA documentation for the driver and toolkit for your GPU-enabled nodes - example below for Amazon Linux 2 g5.xlarge
driver:
enabled: true
toolkit:
version: v1.13.5-centos7
# Using custom metrics configuration to collect recommended Datadog additional metrics - requires the creation of the metrics-config ConfigMap from the previous step
# Ref: https://docs.nvidia.com/datacenter/cloud-native/gpu-operator/latest/getting-started.html#custom-metrics-config
dcgmExporter:
config:
name: metrics-config
env:
- name: DCGM_EXPORTER_COLLECTORS
value: /etc/dcgm-exporter/dcgm-metrics.csv
# Adding Datadog autodiscovery V2 annotations
daemonsets:
annotations:
ad.datadoghq.com/nvidia-dcgm-exporter.checks: |-
{
"dcgm": {
"instances": [
{
"openmetrics_endpoint": "http://%%host%%:9400/metrics"
}
]
}
}
- Instala el chart Helm de DCGM Exporter en el espacio de nombres
default
con el siguiente comando, mientras te encuentras en el directorio con tu dcgm-values.yaml
:helm install datadog-dcgm-gpu-operator -n gpu-operator nvidia/gpu-operator -f dcgm-values.yaml
Configuración
Host
Recopilación de métricas
Edita el archivo dcgm.d/conf.yaml
(ubicado en la carpeta conf.d/
en la raíz del directorio de configuración de tu Agent) para comenzar a recopilar tus métricas de GPU. Consulta el dcgm.d/conf.yaml de muestra para ver todas las opciones de configuración disponibles.
instances:
## @param openmetrics_endpoint - string - required
## The URL exposing metrics in the OpenMetrics format.
##
## Set this to <listenAddress>/<handlerPath> as configured in your DCGM Server
#
- openmetrics_endpoint: http://localhost:9400/metrics
Utiliza el campo de configuración extra_metrics
para añadir métricas que vayan más allá de las que Datadog admite de forma predefinida. Consulta los documentos de NVIDIA para obtener la lista completa de métricas que dcgm-exporter puede recopilar. Asegúrate de habilitar estos campos en la configuración de dcgm-exporter también.
Docker
Recopilación de métricas
Establece Plantillas de integraciones de Autodiscovery como etiquetas de Docker en tu contenedor de DCGM Exporter:
LABEL "com.datadoghq.ad.check_names"='["dcgm"]'
LABEL "com.datadoghq.ad.init_configs"='[{}]'
LABEL "com.datadoghq.ad.instances"='[{"openmetrics_endpoint": "http://%%host%%:9400/metrics"}]'
Kubernetes
Nota: Si seguiste las instrucciones para el chart Helm de DCGM Exporter o GPU Operator, las anotaciones ya se aplican a los pods y puedes ignorar las siguientes instrucciones.
- Para Configurar este check para un Agent que se ejecuta en Kubernetes:
Recopilación de métricas
Configura plantillas de integraciones de Autodiscovery como anotaciones de pod en el contenedor de tu aplicación. Además de esto, las plantillas también se pueden configurar con un archivo, un ConfigMap o un almacén de clave-valor.
Anotaciones v2 (para el Datadog Agent v7.47 o posterior)
apiVersion: v1
kind: Pod
metadata:
name: '<POD_NAME>'
annotations:
ad.datadoghq.com/dcgm.checks: |
{
"dcgm": {
"init_config": {},
"instances": [
{
"openmetrics_endpoint": "http://%%host%%:9400/metrics"
}
]
}
}
spec:
containers:
- name: dcgm
Cuando hayas terminado de hacer cambios en la configuración, reinicia el Agent.
Validación
Ejecuta el subcomando de estado del Agent y busca dcgm
en la sección Checks.
Ajuste de los monitores
Los monitores predefinidos que vienen con esta integración tienen algunos valores predeterminados según sus umbrales de alerta. Por ejemplo, la temperatura de la GPU se determina según un rango aceptable para dispositivos industriales.
Sin embargo, Datadog recomienda que verifiques que estos valores se ajusten a tus necesidades particulares.
Datos recopilados
Métricas
dcgm.clock_throttle_reasons (gauge) | Current clock throttle reasons (bitmask of DCGMCLOCKSTHROTTLEREASON*) |
dcgm.correctable_remapped_rows.count (count) | Number of remapped rows for correctable errors. Shown as row |
dcgm.dec_utilization (gauge) | Decoder utilization (in %). Shown as percent |
dcgm.device.count (count) | Number of Devices on the node. Shown as device |
dcgm.dram.active (gauge) | Ratio of cycles the device memory interface is active sending or receiving data (in %). Shown as fraction |
dcgm.enc_utilization (gauge) | Encoder utilization (in %). Shown as percent |
dcgm.fan_speed (gauge) | Fan speed for the device in percent 0-100. Shown as percent |
dcgm.frame_buffer.free (gauge) | Free Frame Buffer in MB. Shown as megabyte |
dcgm.frame_buffer.reserved (gauge) | Reserved Frame Buffer in MB. Shown as megabyte |
dcgm.frame_buffer.total (gauge) | Total Frame Buffer of the GPU in MB. Shown as megabyte |
dcgm.frame_buffer.used (gauge) | Used Frame Buffer in MB. Shown as megabyte |
dcgm.frame_buffer.used_percent (gauge) | Percentage used of Frame Buffer: Used/(Total - Reserved). Range 0.0-1.0 Shown as fraction |
dcgm.gpu_utilization (gauge) | GPU utilization (in %). Shown as percent |
dcgm.gr_engine_active (gauge) | Ratio of time the graphics engine is active (in %). Shown as fraction |
dcgm.mem.clock (gauge) | Memory clock frequency (in MHz). Shown as megahertz |
dcgm.mem.copy_utilization (gauge) | Memory utilization (in %). Shown as percent |
dcgm.mem.temperature (gauge) | Memory temperature (in C). Shown as degree celsius |
dcgm.nvlink_bandwidth.count (count) | Total number of NVLink bandwidth counters for all lanes |
dcgm.pcie_replay.count (count) | Total number of PCIe retries. |
dcgm.pcie_rx_throughput.count (count) | PCIe Rx utilization information. |
dcgm.pcie_tx_throughput.count (count) | PCIe Tx utilization information. |
dcgm.pipe.fp16_active (gauge) | Ratio of cycles the fp16 pipes are active (in %). Shown as fraction |
dcgm.pipe.fp32_active (gauge) | Ratio of cycles the fp32 pipes are active (in %). Shown as fraction |
dcgm.pipe.fp64_active (gauge) | Ratio of cycles the fp64 pipes are active (in %). Shown as fraction |
dcgm.pipe.tensor_active (gauge) | Ratio of cycles the tensor (HMMA) pipe is active (in %). Shown as fraction |
dcgm.power_management_limit (gauge) | Current power limit for the device. Shown as watt |
dcgm.power_usage (gauge) | Power draw (in W). Shown as watt |
dcgm.pstate (gauge) | Performance state (P-State) 0-15. 0=highest |
dcgm.row_remap_failure (gauge) | Whether remapping of rows has failed. |
dcgm.slowdown_temperature (gauge) | Slowdown temperature for the device. Shown as degree celsius |
dcgm.sm_active (gauge) | The ratio of cycles an SM has at least 1 warp assigned (in %). Shown as fraction |
dcgm.sm_clock (gauge) | SM clock frequency (in MHz). Shown as megahertz |
dcgm.sm_occupancy (gauge) | The ratio of number of warps resident on an SM (in %). Shown as fraction |
dcgm.temperature (gauge) | GPU temperature (in C). Shown as degree celsius |
dcgm.total_energy_consumption.count (count) | Total energy consumption since boot (in mJ). Shown as millijoule |
dcgm.uncorrectable_remapped_rows.count (count) | Number of remapped rows for uncorrectable errors. Shown as row |
dcgm.vgpu_license_status (gauge) | vGPU License status |
dcgm.xid_errors (gauge) | Value of the last XID error encountered. |
Eventos
La integración de DCGM no incluye ningún evento.
Checks de servicio
Consulta service_checks.json para obtener una lista de los checks de servicio que proporciona esta integración.
Solucionar problemas
Asignación de métricas
Si has añadido algunas métricas que no aparecen en el archivo metadata.csv anterior, pero que aparecen en tu cuenta con el formato DCGM_FI_DEV_NEW_METRIC
, reasigna estas métricas en el archivo de configuración dcgm.d/conf.yaml:
## @param extra_metrics - (lista de cadenas o asignaciones) - opcional
## Esta lista define las métricas que se recopilarán desde `openmetrics_endpoint`, además de
## lo que el check recopila de forma predeterminada. Si el check ya recopila una métrica, entonces
## las definiciones de métricas tienen prioridad aquí. Las métricas pueden definirse de tres maneras:
...
El siguiente ejemplo añade la parte de NEW_METRIC
a espacio de nombres (dcgm.
), lo que da dcgm.new_metric
:
extra_metrics:
- DCGM_FI_DEV_NEW_METRIC: new_metric
¿El campo de DCGM está habilitado, pero no se envía?
Si un campo no se recopila incluso después de habilitarlo en default-counters.csv
y realizar una solicitud curl
a host:9400/metrics
, los desarrolladores de dcgm-exporter recomiendan consultar el archivo de log en var/log/nv-hostengine.log
.
Nota: dcgm-exporter
es un wrapper que contiene las bibliotecas y controladores de nivel inferior que realizan los informes reales.
Mayor consumo de recursos
En algunos casos, la métrica DCGM_FI_DEV_GPU_UTIL
puede provocar un mayor consumo de recursos. Si estás experimentando este problema:
- Deshabilita
DCGM_FI_DEV_GPU_UTIL
en default-counters.csv
. - Asegúrate de que los siguientes campos están habilitados en
default-counters.csv
:DCGM_FI_PROF_DRAM_ACTIVE
DCGM_FI_PROF_GR_ENGINE_ACTIVE
DCGM_FI_PROF_PCIE_RX_BYTES
DCGM_FI_PROF_PCIE_TX_BYTES
DCGM_FI_PROF_PIPE_FP16_ACTIVE
DCGM_FI_PROF_PIPE_FP32_ACTIVE
DCGM_FI_PROF_PIPE_FP64_ACTIVE
DCGM_FI_PROF_PIPE_TENSOR_ACTIVE
DCGM_FI_PROF_SM_ACTIVE
DCGM_FI_PROF_SM_OCCUPANCY
- Reinicia tanto dcgm-exporter como el Datadog Agent.
¿Necesitas ayuda?
Ponte en contacto con el soporte de Datadog.
Referencias adicionales
Más enlaces, artículos y documentación útiles: