Datadog Cloud Network Monitoring (CNM) te ofrece visibilidad de tu tráfico de red entre servicios, contenedores, zonas de disponibilidad y cualquier otra etiqueta (tag) en Datadog para que puedas:

  • Localizar dependencias de servicios inesperadas o latentes.
  • Optimizar la costosa comunicación entre regiones o nubes múltiples.
  • Identificar las interrupciones en las regiones proveedoras de la nube y las herramientas de terceros.
  • Solucionar problemas de detección de servicios defectuosos con métricas del servidor DNS.

Cloud Network Monitoring requiere el Datadog Agent v6.14 o posterior. Dado que las métricas se recopilan automáticamente en versiones posteriores del Agent, consulta la sección de configuración de métricas para configurar la monitorización de DNS.

Plataformas compatibles

Sistemas operativos

Sistema operativo Linux

La recopilación de datos se realiza utilizando eBPF, por lo que Datadog requiere mínimamente plataformas que tengan versiones 4.4.0 o posteriores del kernel de Linux subyacente o que tengan backports de las características de eBPF. NPM es compatible con las siguientes distribuciones de Linux:

  • Ubuntu v16.04 o posterior
  • Debian v9 o posterior
  • Fedora v26 o posterior
  • SUSE v15 o posterior
  • Amazon AMI v2016.03 o posterior
  • Amazon Linux v2
  • CentOS/RHEL v7.6 o posterior

Nota: Existe una excepción al requisito del kernel v4.4.0 o posterior para CentOS/RHEL v7.6 o posterior. La función DNS Resolution no es compatible con CentOS/RHEL v7.6.

Sistema operativo Windows

La recopilación de datos se realiza mediante un controlador de dispositivo kernel de red. La compatibilidad está disponible a partir del Datadog Agent versión 7.27.1, para versiones de Windows 2012 R2 (y sistemas operativos de escritorio equivalentes, incluido Windows 10) y posteriores.

macOS

Datadog Cloud Network Monitoring no es compatible con plataformas macOS.

Contenedores

CNM te ayuda a visualizar la arquitectura y el rendimiento de tus entornos en contenedores y orquestados, con compatibilidad con Docker, Kubernetes, ECS y otras tecnologías de contenedor. Las integraciones de contenedores de Datadog te permiten agregar tráfico por entidades significativas, como contenedores, tareas, pods, clústeres y despliegues, con etiquetas predefinidas como container_name, task_name y kube_service.

CNM no es compatible con Autopilot de Google Kubernetes Engine (GKE).

Herramientas de enrutamiento en la red

Istio

Con CNM, puedes asignar la comunicación de red entre contenedores, pods y servicios a través de la malla de servicios de Istio.

Datadog monitoriza todos los aspectos de tu entorno Istio para que también puedas:

  • Evaluar el estado de Envoy y el plano de control de Istio con logs.
  • Desglosar el rendimiento de tu malla de servicios con métricas de solicitudes, ancho de banda y consumo de recursos.
  • Examinar trazas (traces) distribuidas de aplicaciones que realizan transacciones a lo largo de la malla con APM.

CNM admite Istio v1.6.4+ con el Datadog Agent v7.24.1+.

Para obtener más información sobre la monitorización de tu entorno Istio con Datadog, consulta el blog de Istio.

Cilium

Cloud Network Monitoring es compatible con instalaciones Cilium, siempre que se cumplan los siguientes requisitos:

  1. Cilium v1.6 y posteriores
  2. Kernel v5.1.16 y posteriores, o v4.19.57 y posteriores para kernels 4.19.x

Sistemas de aprovisionamiento

Cloud Network Monitoring admite el uso de los siguientes sistemas de aprovisionamiento:

Configuración

Dado que la potencia y el enfoque de esta herramienta se centran en el análisis del tráfico entre endpoints de red y la asignación de dependencias red, recomendamos instalarla en un subconjunto significativo de tu infraestructura y en un mínimo de 2 hosts para maximizar su valor.

Para habilitar Cloud Network Monitoring con el Datadog Agent, utiliza las siguientes configuraciones:

  1. Si utilizas una versión del Agent anterior a v6.14 o posterior, habilita primero la recopilación de procesos en directo; de lo contrario, omite este paso.

  2. Copia la configuración de ejemplo de sonda del sistema:

    sudo -u dd-agent install -m 0640 /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml
    
  3. Edita /etc/datadog-agent/system-probe.yaml para definir el indicador habilitado como 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
    
  4. Si estás ejecutando una versión del Agent anterior a v6.18 o v7.18, inicia manualmente la sonda del sistema y habilítala para que se inicie al arrancar (a partir de v6.18 y v7.18, la sonda del sistema se inicia automáticamente al arrancar el Agent):

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

    Nota: Si el comando systemctl no está disponible en tu sistema, inícialo con el siguiente comando: sudo service datadog-agent-sysprobe start y luego configúralo para que se inicie al arrancar, antes de que se inicie datadog-agent.

  5. Reinicia el Agent.

    sudo systemctl restart datadog-agent
    

    Nota: Si el comando systemctl no está disponible en tu sistema, ejecuta el siguiente comando: sudo service datadog-agent restart.

Sistemas habilitados por SELinux

En sistemas con SELinux habilitado, el binario de la sonda del sistema necesita permisos especiales para utilizar las funciones de eBPF.

El paquete RPM del Datadog Agent para sistemas basados en CentOS incluye una política SELinux para conceder estos permisos al binario de la sonda del sistema.

Si necesitas utilizar Cloud Network Monitoring en otros sistemas con SELinux activado, haz lo siguiente:

  1. Modifica la política SELinux de base para que coincida con tu configuración de SELinux. Dependiendo de tu sistema, algunos tipos o atributos pueden no existir (o pueden tener nombres diferentes).

  2. Compila la política en un módulo; suponiendo que el archivo de tu política se llame 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. Aplica el módulo a tu sistema SELinux:

    semodule -v -i system_probe_policy.pp
    
  4. Cambia el tipo de binario de la sonda del sistema para utilizar el que está definido en la política; suponiendo que el directorio de instalación de tu Agent sea /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. Reinicia el Agent.

Nota: Estas instrucciones requieren tener algunas funciones de SELinux instaladas en el sistema (checkmodule, semodule, semodule_package, semanage y restorecon), disponibles en la mayoría de las distribuciones estándar (Ubuntu, Debian, RHEL, CentOS, SUSE). Consulta tu distribución para ver más detalles sobre cómo instalarlas.

Si estas funciones no existen en tu distribución, sigue el mismo procedimiento pero en este caso utiliza las funciones proporcionadas por tu distribución.

La recopilación de datos de Windows depende de un controlador de filtro para recopilar los datos de red.

Para habilitar Cloud Network Monitoring para hosts de Windows:

  1. Instala el Datadog Agent (versión 7.27.1 o posterior) con el componente del controlador de red habilitado.

    [OBSOLETO] (versión 7.44 o inferior) Durante la instalación, pasa ADDLOCAL="MainApplication,NPM" al comando msiexec, o selecciona “Cloud Network Monitoring” cuando ejecutes la instalación del Agent a través de la GUI.

  2. Edita C:\ProgramData\Datadog\system-probe.yaml para definir el indicador habilitado como true:

    network_config:
        enabled: true
    
  3. Reinicia el Agent.

    Para PowerShell (powershell.exe):

    restart-service -f datadogagent
    

    Para Command Prompt (cmd.exe):

    net /y stop datadogagent && net start datadogagent
    

Nota: Cloud Network Monitoring monitoriza los hosts de Windows solamente, y no contenedores de Windows.

Para habilitar Cloud Network Monitoring con Kubernetes utilizando Helm, añade lo siguiente a tu archivo values.yaml.
Se requiere Helm chart v2.4.39 o posterior. Para obtener más información, consulta la documentación de Datadog Helm chart.

datadog:
  networkMonitoring:
    enabled: true

Nota: Si recibes un error de permisos al configurar CNM en tu entorno de Kubernetes: Error: error enabling protocol classifier: permission denied, añade lo siguiente a tu values.yaml. (Consulta esta sección en el Helm chart):

agents:
  podSecurity:
    apparmor:
      enabled: true

Si no utilizas Helm, puedes habilitar Cloud Network Monitoring con Kubernetes desde cero:

  1. Descarga la plantilla datadog-agent.yaml manifest.

  2. Sustituye <DATADOG_API_KEY> por tu clave de API Datadog.

  3. (Opcional) Configura tu sitio Datadog. Si utilizas el sitio Datadog EU, configura la variable de entorno DD_SITE como datadoghq.eu en el manifiesto datadog-agent.yaml.

  4. Despliega el DaemonSet con el comando:

    kubectl apply -f datadog-agent.yaml
    

Si el Agent ya se ejecuta con un manifiesto:

  1. Para las versiones de Kubernetes inferiores a 1.30, añade la anotación container.apparmor.security.beta.kubernetes.io/system-probe: unconfined en la plantilla datadog-agent:

    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
    

    Para las versiones de Kubernetes 1.30+, añade el siguiente securityContext en la plantilla datadog-agent:

    spec:
        selector:
            matchLabels:
                app: datadog-agent
        template:
            metadata:
                labels:
                    app: datadog-agent
                name: datadog-agent
            spec:
                serviceAccountName: datadog-agent
                securityContext:
                  appArmorProfile:
                    type: Unconfined
                containers:
                # (...)
    
  2. Habilita el proceso de recopilación y la sonda del sistema con las siguientes variables de entorno en el DaemonSet del Agent. Si estás ejecutando un contenedor por cada proceso del Agent, añade las siguientes variables de entorno al Agent de proceso; de lo contrario, añádelas al contenedor del 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
    
  3. Monta los siguientes volúmenes adicionales en el contenedor datadog-agent:

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'gcr.io/datadoghq/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
    
  4. Añade una nueva sonda del sistema como elemento adicional del Agent:

     # (...)
            spec:
                serviceAccountName: datadog-agent
                containers:
                    - name: datadog-agent
                      image: 'gcr.io/datadoghq/agent:latest'
                    # (...)
                    - name: system-probe
                      image: 'gcr.io/datadoghq/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
    
  5. Por último, añada los siguientes volúmenes a tu manifiesto:

                volumes:
                    - name: debugfs
                      hostPath:
                          path: /sys/kernel/debug
                    - name: sysprobe-socket-dir
                      emptyDir: { }
                    - name: auth-token
                      emptyDir: { }
    
El Datadog Operator está disponible de forma general en la versión `1.0.0` y concilia la versión `v2alpha1` del recurso personalizado del Datadog Agent.

El Datadog Operator permite desplegar el Datadog Agent en Kubernetes y OpenShift e informa sobre la situación y los errores de despliegue en el estado de tu recurso personalizado. Además, sus opciones de configuración de nivel superior limitan el riesgo de configuraciones erróneas.

Para habilitar Cloud Network Monitoring en Operator, utiliza la siguiente configuración:

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

Para habilitar Cloud Network Monitoring en Docker, utiliza la siguiente configuración al iniciar el Agent de contenedor:

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 \
gcr.io/datadoghq/agent:latest

Sustituye <DATADOG_API_KEY> por tu clave de API Datadog.

Si utilizas docker-compose, añade lo siguiente al servicio del Datadog Agent.

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

Para configurar en Amazon ECS, consulta la página de documentación de Amazon ECS.

Resolución mejorada

Opcionalmente, activa la recopilación de recursos para las integraciones de nube para permitir que Cloud Network Monitoring detecte las entidades gestionadas por la nube.

  • Instala la integración Azure para obtener visibilidad de los balanceadores de carga y las pasarelas de aplicaciones de Azure.
  • Instala la integración AWS para obtener visibilidad del balanceador de carga AWS. Debes habilitar la recopilación de métricas ENI y EC2.

Para obtener más información sobre estas funciones, consulta la resolución mejorada de servicios en la nube.

Failed connections

Failed Connections permite recopilar e informar de fallos de TCP incluidos reinicios, rechazos y tiempos de inactividad. Esta función está activada por defecto en el Agent versión 7.59+ y es accesible en la página CNM Analytics en el menú Customize (Personalizar) activando el conmutador Failure (Fallos).

Nota: Si algunos Agents en tu infraestructura están ejecutando una versión anterior a 7.59, podrías encontrarte con fallos que no son reportados. CNM aconseja mantener la misma versión de Agent en todos los hosts.

Captura de pantalla en el menú personalizado de CNM, con el conmutador Fallos resaltado

Para leer más