Configuración de Cloud Network Monitoring
Datadog Cloud Network Monitoring (CNM) te brinda visibilidad sobre el tráfico de tu red entre servicios, contenedores, Availability Zones y cualquier otra etiqueta en Datadog para que puedas:
- Identificar dependencias de servicio inesperadas o latentes.
- Optimizar la comunicación costosa entre regiones o en múltiples nubes.
- Identificar interrupciones en las regiones de proveedores de nube y herramientas de terceros.
- Solucionar problemas de descubrimiento de servicios defectuosos con métricas del servidor DNS.
Cloud Network Monitoring requiere Datadog Agent v6.14+. Debido a que las métricas se recopilan automáticamente en versiones superiores del Agente, consulta la sección de configuración de métricas para configurar el Monitoreo de DNS.
Sistemas operativos
Sistema operativo Linux
La recolección de datos se realiza utilizando eBPF, por lo que Datadog requiere mínimamente plataformas que tengan versiones del núcleo de Linux de 4.4.0+ o que tengan características de eBPF retroportadas. CNM admite las siguientes distribuciones de Linux:
- Ubuntu 16.04+
- Debian 9+
- Fedora 26+
- SUSE 15+
- Amazon AMI 2016.03+
- Amazon Linux 2
- CentOS/RHEL 7.6+
Nota: Hay una excepción al requisito del núcleo 4.4.0+ para CentOS/RHEL 7.6+. La función de Resolución de DNS no es compatible con CentOS/RHEL 7.6.
Sistema operativo Windows
La recolección de datos se realiza utilizando un controlador de dispositivo del núcleo de red. El soporte está disponible a partir de la versión 7.27.1 del Agente de Datadog, para versiones de Windows 2012 R2 (y sistemas operativos de escritorio equivalentes, incluyendo Windows 10) y superiores.
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 contenedorizados y orquestados, con soporte para Docker, Kubernetes, ECS y otras tecnologías de contenedores. Las integraciones de contenedores de Datadog te permiten agregar tráfico por entidades significativas, como contenedores, tareas, pods, clústeres y despliegues, con etiquetas listas para usar como container_name, task_name y kube_service.
Istio
Con CNM, puedes mapear la comunicación de red entre contenedores, pods y servicios a través de la malla de servicios de Istio.
Datadog monitorea cada aspecto de tu entorno de Istio, por lo que también puedes:
- Evaluar la salud de Envoy y el plano de control de Istio con logs.
- Desglosar el rendimiento de tu malla de servicios con solicitudes, ancho de banda y consumo de recursos métricas.
- Examinar trazas distribuidas para aplicaciones que transaccionan a través de la malla con APM.
CNM es compatible con Istio v1.6.4+ con Datadog Agent v7.24.1+.
Para aprender más sobre cómo monitorear tu entorno de Istio con Datadog, consulta el blog de Istio.
Cilium
Cloud Network Monitoring es compatible con instalaciones de Cilium, siempre que se cumplan los siguientes requisitos:
- Versión de Cilium 1.6 y superior, y
- Versión del núcleo 5.1.16 y superior, o 4.19.57 y superior para núcleos 4.19.x
Sistemas de aprovisionamiento
Cloud Network Monitoring admite el uso de los siguientes sistemas de aprovisionamiento:
Configuración
Cloud Network Monitoring está diseñado para analizar el tráfico entre puntos de conexión de red y mapear las dependencias de red. Datadog recomienda instalar CNM en un subconjunto significativo de su infraestructura y un mínimo de 2 hosts para maximizar el valor.
Para habilitar CNM con el Agente de Datadog, use las siguientes configuraciones:
Si está utilizando un Agente anterior a la v6.14, habilite live process collection primero, de lo contrario, omita este paso.
Copie la configuración de ejemplo del sistema-probe:
sudo -u dd-agent install -m 0640 /etc/datadog-agent/system-probe.yaml.example /etc/datadog-agent/system-probe.yaml
Edite /etc/datadog-agent/system-probe.yaml para establecer la bandera de habilitación en 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
Optional: To monitor DNS traffic on non-standard ports (Agent v7.76.0+), add the dns_monitoring_ports option:
network_config:
enabled: true
dns_monitoring_ports:
- 53
- 5353
Si está ejecutando un Agente anterior a la v6.18 o 7.18, inicie manualmente el sistema-probe y habilítelo para que se inicie al arrancar (desde la v6.18 y v7.18 el sistema-probe se inicia automáticamente cuando se inicia el Agente):
sudo systemctl start datadog-agent-sysprobe
sudo systemctl enable datadog-agent-sysprobe
Note: If the systemctl command is not available on your system, start it with following command instead: sudo service datadog-agent-sysprobe start and then set it up to start on boot before datadog-agent starts.
Restart the Agent.
sudo systemctl restart datadog-agent
Note: If the systemctl command is not available on your system, run the following command instead: sudo service datadog-agent restart
Sistemas habilitados para SELinux
En sistemas con SELinux habilitado, el binario del sistema-probe necesita permisos especiales para usar características de eBPF.
El paquete RPM del Agente de Datadog para sistemas basados en CentOS incluye una política de SELinux para otorgar estos permisos al binario del sistema-probe.
Si necesita usar CNM en otros sistemas con SELinux habilitado, haga lo siguiente:
Modifique la política base de SELinux para que coincida con su configuración de SELinux.
Dependiendo de su sistema, algunos tipos o atributos pueden no existir (o tener nombres diferentes).
Compile la política en un módulo; asumiendo que su archivo de política se llama 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
Aplique el módulo a su sistema SELinux:
semodule -v -i system_probe_policy.pp
Cambie el tipo de binario del sistema-probe para usar el definido en la política; asumiendo que su directorio de instalación del Agente es /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
Restart the Agent.
Nota: estas instrucciones requieren tener algunas utilidades de SELinux instaladas en el sistema (checkmodule, semodule, semodule_package, semanage y restorecon) que están disponibles en la mayoría de las distribuciones estándar (Ubuntu, Debian, RHEL, CentOS, SUSE). Consulta tu distribución para obtener detalles sobre cómo instalarlas.
Si estas utilidades no existen en tu distribución, sigue el mismo procedimiento pero usando las utilidades proporcionadas por tu distribución en su lugar.
La recolección de datos para Windows se basa en un controlador de filtro para recopilar datos de red.
Para habilitar Cloud Network Monitoring para hosts de Windows:
Instala el Agente de Datadog (versión 7.27.1 o superior) 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” al ejecutar la instalación del Agente a través de la GUI.
Edita C:\ProgramData\Datadog\system-probe.yaml para establecer la opción habilitada en true:
network_config:
enabled: true
Optional: To monitor DNS traffic on non-standard ports (Agent v7.76.0+), add the dns_monitoring_ports option:
network_config:
enabled: true
dns_monitoring_ports:
- 53
- 5353
Reinicia el Agente.
Para PowerShell (powershell.exe):
restart-service -f datadogagent
For Command Prompt (cmd.exe):
net /y stop datadogagent && net start datadogagent
Nota: Cloud Network Monitoring monitorea solo hosts de Windows, y no contenedores de Windows.
Para habilitar Cloud Network Monitoring con Kubernetes usando Helm, agrega lo siguiente a tu archivo values.yaml.Nota: Se requiere el Helm chart v3.135.3+. Para más información, consulte la documentación del gráfico de Helm de Datadog.
datadog:
...
networkMonitoring:
enabled: true
Opcional: Para monitorear el tráfico DNS en puertos no estándar (Agente v7.76.0+), agregue la opción dnsMonitoringPorts:
datadog:
networkMonitoring:
enabled: true
dnsMonitoringPorts:
- 53
- 5353
Puede requerir uno de los siguientes pasos adicionales dependiendo de su entorno:
Si su clúster está ejecutando el GKE Autopilot de Google, agregue lo siguiente a su archivo de valores:
providers:
gke:
autopilot: true
Si su clúster está ejecutando Google Container-Optimized OS (COS), agregue lo siguiente a su archivo de valores:
providers:
gke:
cos: true
Si su clúster está utilizando la distribución Bottlerocket Linux para sus nodos, agregue lo siguiente a su archivo de valores:
agents:
containers:
systemProbe:
securityContext:
seLinuxOptions:
user: "system_u"
role: "system_r"
type: "super_t"
level: "s0"
Si no está utilizando Helm, puede habilitar Cloud Network Monitoring con Kubernetes desde cero:
Descargue la plantilla del manifiesto datadog-agent.yaml.
Reemplace <DATADOG_API_KEY> con su clave de API de Datadog.
Opcional - Establezca su sitio de Datadog. Si está utilizando el sitio de Datadog de la UE, establezca la variable de entorno DD_SITE en datadoghq.eu en el manifiesto datadog-agent.yaml.
Despliegue el DaemonSet con el comando:
kubectl apply -f datadog-agent.yaml
Si ya tiene el Agente ejecutándose con un manifiesto:
Para versiones de Kubernetes anteriores a 1.30, agregue 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
For Kubernetes versions 1.30+, add the following securityContext on the datadog-agent template:
spec:
selector:
matchLabels:
app: datadog-agent
template:
metadata:
labels:
app: datadog-agent
name: datadog-agent
spec:
serviceAccountName: datadog-agent
securityContext:
appArmorProfile:
type: Unconfined
containers:
# (...)
Habilite la recopilación de procesos y el system probe con las siguientes variables de entorno en el DaemonSet del Agente. Si está ejecutando un contenedor por proceso del Agent, agregue las siguientes variables de entorno al contenedor del Process Agent; de lo contrario, agréguelas 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
Monte los siguientes volúmenes adicionales en el contenedor datadog-agent:
# (...)
spec:
serviceAccountName: datadog-agent
containers:
- name: datadog-agent
image: 'registry.datadoghq.com/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
Agregue un nuevo system probe como sidecar al Agente:
# (...)
spec:
serviceAccountName: datadog-agent
containers:
- name: datadog-agent
image: 'registry.datadoghq.com/agent:latest'
# (...)
- name: system-probe
image: 'registry.datadoghq.com/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
Finalmente, agregue los siguientes volúmenes a su manifiesto:
volumes:
- name: debugfs
hostPath:
path: /sys/kernel/debug
- name: sysprobe-socket-dir
emptyDir: { }
- name: auth-token
emptyDir: { }
Datadog Operator simplifica el despliegue del Agente de Datadog en Kubernetes y OpenShift. Proporciona estado de despliegue, salud e informes de errores a través de su estado de Recurso Personalizado, mientras reduce el riesgo de mala configuración con opciones de configuración de nivel superior.
Para habilitar Cloud Network Monitoring en el Datadog Operator, use 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, use la siguiente configuración al iniciar el contenedor del Agente:
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 \
registry.datadoghq.com/agent:latest
Reemplace <DATADOG_API_KEY> con su clave de API de Datadog.
Si utiliza docker-compose, realice las siguientes adiciones al servicio del Agente de Datadog.
version: '3'
services:
datadog:
image: "registry.datadoghq.com/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 CNM en Amazon ECS, consulte la página de documentación de Amazon ECS.
ECS Fargate para CNM está en Vista Previa. Póngase en contacto con su representante de Datadog para registrarse.
Para habilitar Cloud Network Monitoring en ECS Fargate, use las siguientes instrucciones:
Requiere la versión del Agente 7.58 o superior.
Para un nuevo despliegue de Fargate, configura el Agente de Datadog para monitorear Fargate en ECS habilitando la colección de procesos en tus hosts de Fargate.
Para despliegues existentes, actualiza tu archivo task.json para incluir la siguiente configuración:
{
"containerDefinitions": [
(...)
"environment": [
(...)
{
"name": "DD_SYSTEM_PROBE_NETWORK_ENABLED",
"value": "true"
},
{
"name": "DD_NETWORK_CONFIG_ENABLE_EBPFLESS",
"value": "true"
},
{
"name": "DD_PROCESS_AGENT_ENABLED",
"value": "true"
}
],
"linuxParameters": {
"capabilities": {
"add": [
"SYS_PTRACE"
]
}
},
],
}
Resolución mejorada
Opcionalmente, habilita la colección de recursos para integraciones en la nube para permitir que CNM descubra entidades gestionadas en la nube.
- Instala la integración de Azure para visibilidad en balanceadores de carga de Azure y puertas de enlace de aplicaciones.
- Instala la integración de AWS para visibilidad en el Balanceador de Carga de AWS. debes habilitar la colección de métricas de ENI y EC2
Para información adicional sobre estas capacidades, consulta Resolución mejorada del servicio en la nube.
Conexiones fallidas
Las Conexiones Fallidas permiten la colección e informe de fallos de TCP, incluyendo reinicios, rechazos y tiempos de espera. Esta función está habilitada por defecto en la versión 7.59+ del Agente, y es accesible en la página de Analíticas CNM en el menú Personalizar al activar el interruptor de Fallos.
Nota: Si algunos Agentes en su infraestructura están ejecutando una versión anterior a 7.59, podría darse el caso de que los fallos se informen de manera insuficiente. CNM aconseja mantener la misma versión del Agente en todos los hosts.
Lectura adicional
Más enlaces, artículos y documentación útiles: