Problemas de los contenedores de Windows

En esta página se describen los problemas detectados y no resueltos de monitorización de aplicaciones contenerizadas de Windows.

Problemas frecuentes

La monitorización de aplicaciones contenedorizadas de Windows requiere el Datadog Agent v7.19 o posterior.

Las versiones de sistemas operativos compatibles son:

  • Windows Server 2019 (LTSC /1809)
  • Windows Server 2019 1909 (hasta el Agent 7.39, ya no es compatible con Microsoft)
  • Windows Server 2019 2004 o 20H1 (hasta el Agent 7.39, ya no es compatible con Microsoft)
  • Windows Server 2019 20H2 (Agent 7.33 a 7.39, ya no es compatible con Microsoft)
  • Windows Server 2022 LTSC (Agent v7.34 o posterior)

El modo de aislamiento Hyper-V no es compatible.

Las métricas de host para disco, E/S y red están deshabilitadas. No son compatibles con Windows Server, por lo que los checks del Agent están deshabilitados de forma predeterminada.

Problemas con Docker

Los Live Processes no aparecen en los contenedores (excepto el Datadog Agent).

Problemas con Kubernetes

Los Live Processes no aparecen en los contenedores (excepto el Datadog Agent).

Clústeres mixtos (Linux + Windows)

El método recomendado para desplegar el Datadog Agent en un clúster mixto es realizar dos instalaciones del Helm chart con diferentes targetSystem.

El Datadog Agent utiliza un nodeSelector para seleccionar automáticamente nodos Linux o Windows basados en targetSystem.

Sin embargo, este no es el caso de las métricas de Kube State (que se instala por defecto), lo que lleva a situaciones en las que las métricas de Kube State no se pueden programar en los nodos de Windows.

Para evitar este problema existen tres posibilidades:

  • Usar la función taint en tus nodos Windows. En Windows, el Agent siempre permite el taint node.kubernetes.io/os=windows:NoSchedule.

  • Definir el selector de nodo Kube State Metrics a través del Helm chart values.yaml de Datadog:

    kube-state-metrics:
      nodeSelector:
        beta.kubernetes.io/os: linux // Kubernetes < 1.14
        kubernetes.io/os: linux // Kubernetes >= 1.14
    
  • Desplegar Kube State Metrics por tu cuenta de forma independiente estableciendo datadog.kubeStateMetricsEnabled como false.

Nota: Cuando se utilizan dos instalaciones de Datadog (una con targetSystem: linux, otra con targetSystem: windows), es necesario verificar que la segunda tiene datadog.kubeStateMetricsEnabled definido como false para evitar que se desplieguen dos instancias de Kube State Metrics.

Algunas métricas no están disponibles para los despliegues de Windows. Consulta métricas disponibles.

Clústeres mixtos con el Datadog Cluster Agent

Con Cluster Agent v1.18 y posteriores, el Datadog Cluster Agent admite una configuración con clústeres mixtos.

Para configurar la comunicación entre los Agents desplegados en nodos Windows y el Cluster Agent, utiliza el siguiente archivo values.yaml.

targetSystem: windows
existingClusterAgent:
  join: true
  serviceName: "<EXISTING_DCA_SERVICE_NAME>" # from the first Datadog Helm chart
  tokenSecretName: "<EXISTING_DCA_SECRET_NAME>" # from the first Datadog Helm chart

# Disable datadogMetrics deployment since it should have been already deployed with the first chart.
datadog-crds:
  crds:
    datadogMetrics: false
# Disable kube-state-metrics deployment
datadog:
  kubeStateMetricsEnabled: false

Opciones de configuración limitadas para las implementaciones de Windows

Algunas opciones de configuración no están disponibles en Windows. A continuación se muestra una lista de opciones no compatibles:

ParámetroMotivo
datadog.dogstatsd.useHostPIDEl PID del host no es compatible con los contenedores de Windows
datadog.dogstatsd.useSocketVolumeLos sockets del Unix no son compatibles con Windows
datadog.dogstatsd.socketPathLos sockets del Unix no son compatibles con Windows
datadog.processAgent.processCollectionNo es posible acceder a los procesos del host/otros contenedores
datadog.systemProbe.seccompSystem probe no está disponible para Windows
datadog.systemProbe.seccompRootSystem probe no está disponible para Windows
datadog.systemProbe.debugPortSystem probe no está disponible para Windows
datadog.systemProbe.enableConntrackSystem probe no está disponible para Windows
datadog.systemProbe.bpfDebugSystem probe no está disponible para Windows
datadog.systemProbe.apparmorSystem probe no está disponible para Windows
agents.useHostNetworkLa red del host no es compatible con los contenedores de Windows

HostPort para el APM o DogStatsD

HostPort es compatible parcialmente con Kubernetes, dependiendo de la versión del sistema operativo subyacente y del plugin CNI. Los requisitos para que funcione HostPort son los siguientes:

  • Se requiere la versión de Windows Server 1909 o posterior
  • El plugin CNI debe ser compatible con la función portMappings

Actualmente, al menos dos plugins CNI admiten esta función:

  • Plugin oficial win-bridge (versión 0.8.6 y posteriores), utilizado por GKE
  • Plugin CNI de Azure, utilizado por AKS

Si tu configuración no cumple estos requisitos, APM y DogStatsD solo funcionarán cuando esté configurada la red pod-to-pod entre el Tracer y el Agent.

Check de Kubelet

Según la versión de Kubernetes, es posible que algunas métricas de Kubelet no estén disponibles (o que el check de Kubelet agote el tiempo de espera). Para una experiencia óptima, utiliza cualquiera de las siguientes opciones con el Datadog Agent v7.19.2+:

  • Kubelet v1.16.13+ (v1.16.11+ en GKE)
  • Kubelet v1.17.9+ (v1.17.6+ en GKE)
  • Kubelet v1.18.6+
  • Kubelet v1.19+

Métricas limitadas para despliegues de Windows

Las siguientes métricas de kubernetes.* están disponibles para los contenedores de Windows:

  • kubernetes.cpu.usage.total
  • kubernetes.containers.restarts
  • kubernetes.containers.running
  • kubernetes.cpu.capacity
  • kubernetes.ephemeral_storage.usage
  • kubernetes.kubelet.container.log_filesystem.used_bytes
  • kubernetes.kubelet.network_plugin.latency.count
  • kubernetes.kubelet.network_plugin.latency.quantile
  • kubernetes.kubelet.network_plugin.latency.sum
  • kubernetes.kubelet.runtime.errors
  • kubernetes.kubelet.runtime.operations
  • kubernetes.memory.capacity
  • kubernetes.pods.running
  • kubernetes.rest.client.latency.count
  • kubernetes.rest.client.latency.sum
  • kubernetes.rest.client.requests
  • kubernetes.network.tx_bytes
  • kubernetes.network.rx_bytes
  • kubernetes.cpu.usage.total
  • kubernetes.memory.working_set
  • kubernetes.filesystem.usage
  • kubernetes.filesystem.usage_pct