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.
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# RelojesDCGM_FI_DEV_SM_CLOCK,gauge,SMclockfrequency(inMHz).DCGM_FI_DEV_MEM_CLOCK,gauge,Memoryclockfrequency(inMHz).# TemperaturaDCGM_FI_DEV_MEMORY_TEMP,gauge,Memorytemperature(inC).DCGM_FI_DEV_GPU_TEMP,gauge,GPUtemperature(inC).# PotenciaDCGM_FI_DEV_POWER_USAGE,gauge,Powerdraw(inW).DCGM_FI_DEV_TOTAL_ENERGY_CONSUMPTION,counter,Totalenergyconsumptionsinceboot(inmJ).# PCIeDCGM_FI_DEV_PCIE_REPLAY_COUNTER,counter,TotalnumberofPCIeretries.# Utilización (el período de muestra varía según el producto)DCGM_FI_DEV_GPU_UTIL,gauge,GPUutilization(in%).DCGM_FI_DEV_MEM_COPY_UTIL,gauge,Memoryutilization(in%).DCGM_FI_DEV_ENC_UTIL,gauge,Encoderutilization(in%).DCGM_FI_DEV_DEC_UTIL,gauge,Decoderutilization(in%).# Errores e infraccionesDCGM_FI_DEV_XID_ERRORS,gauge,ValueofthelastXIDerrorencountered.# Uso de memoriaDCGM_FI_DEV_FB_FREE,gauge,Framebuffermemoryfree(inMiB).DCGM_FI_DEV_FB_USED,gauge,Framebuffermemoryused(inMiB).# NVLinkDCGM_FI_DEV_NVLINK_BANDWIDTH_TOTAL,counter,TotalnumberofNVLinkbandwidthcountersforalllanes.# Estado de la licencia de VGPUDCGM_FI_DEV_VGPU_LICENSE_STATUS,gauge,vGPULicensestatus# Filas reasignadasDCGM_FI_DEV_UNCORRECTABLE_REMAPPED_ROWS,counter,NumberofremappedrowsforuncorrectableerrorsDCGM_FI_DEV_CORRECTABLE_REMAPPED_ROWS,counter,NumberofremappedrowsforcorrectableerrorsDCGM_FI_DEV_ROW_REMAP_FAILURE,gauge,Whetherremappingofrowshasfailed# Métricas de DCPDCGM_FI_PROF_PCIE_TX_BYTES,counter,Thenumberofbytesofactivepcietxdataincludingbothheaderandpayload.DCGM_FI_PROF_PCIE_RX_BYTES,counter,Thenumberofbytesofactivepcierxdataincludingbothheaderandpayload.DCGM_FI_PROF_GR_ENGINE_ACTIVE,gauge,Ratiooftimethegraphicsengineisactive(in%).DCGM_FI_PROF_SM_ACTIVE,gauge,TheratioofcyclesanSMhasatleast1warpassigned(in%).DCGM_FI_PROF_SM_OCCUPANCY,gauge,TheratioofnumberofwarpsresidentonanSM(in%).DCGM_FI_PROF_PIPE_TENSOR_ACTIVE,gauge,Ratioofcyclesthetensor(HMMA)pipeisactive(in%).DCGM_FI_PROF_DRAM_ACTIVE,gauge,Ratioofcyclesthedevicememoryinterfaceisactivesendingorreceivingdata(in%).DCGM_FI_PROF_PIPE_FP64_ACTIVE,gauge,Ratioofcyclesthefp64pipesareactive(in%).DCGM_FI_PROF_PIPE_FP32_ACTIVE,gauge,Ratioofcyclesthefp32pipesareactive(in%).DCGM_FI_PROF_PIPE_FP16_ACTIVE,gauge,Ratioofcyclesthefp16pipesareactive(in%).# Campos adicionales recomendados de DatadogDCGM_FI_DEV_COUNT,counter,NumberofDevicesonthenode.DCGM_FI_DEV_FAN_SPEED,gauge,Fanspeedforthedeviceinpercent0-100.DCGM_FI_DEV_SLOWDOWN_TEMP,gauge,Slowdowntemperatureforthedevice.DCGM_FI_DEV_POWER_MGMT_LIMIT,gauge,Currentpowerlimitforthedevice.DCGM_FI_DEV_PSTATE,gauge,Performancestate(P-State)0-15.0=highestDCGM_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,Currentclockthrottlereasons(bitmaskofDCGM_CLOCKS_THROTTLE_REASON_*)DCGM_FI_PROCESS_NAME,label,TheProcessName.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,
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
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:
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/v1kind:Rolemetadata:name:dcgm-exporter-read-datadog-cmnamespace:defaultrules:- apiGroups:[""]resources:["configmaps"]resourceNames:["datadog-dcgm-exporter-configmap"]verbs:["get"]---apiVersion:rbac.authorization.k8s.io/v1kind:RoleBindingmetadata:name:dcgm-exporter-datadognamespace:defaultsubjects:- kind:ServiceAccountname:dcgm-datadog-dcgm-exporternamespace:defaultroleRef:kind:Role name:dcgm-exporter-read-datadog-cmapiGroup:rbac.authorization.k8s.io---apiVersion:v1kind:ConfigMapmetadata:name:datadog-dcgm-exporter-configmapnamespace:defaultdata: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#L38arguments:["-m","default:datadog-dcgm-exporter-configmap"]# Datadog Autodiscovery V2 annotationspodAnnotations: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 clusterserviceMonitor: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:
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.
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:
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.xlargedriver:enabled:truetoolkit: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-configdcgmExporter:config:name:metrics-configenv:- name:DCGM_EXPORTER_COLLECTORSvalue:/etc/dcgm-exporter/dcgm-metrics.csv# Adding Datadog autodiscovery V2 annotationsdaemonsets: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:
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
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:
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.
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:
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.