Configuración de Network Performance Monitoring
Datadog Network Performance Monitoring (NPM) te ofrece visibilidad del 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.
Network Performance Monitoring requiere el Datadog Agent v6.14 o posterior. Dado que las métricas se recopilan automáticamente en versiones superiores del Agent, consulta la sección de configuración de métricas para configurar la monitorización DNS.
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 del kernel Linux subyacente 4.4.0 o posteriores 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 Network Performance Monitoring no es compatible con plataformas macOS.
Contenedores
NPM te ayuda a visualizar la arquitectura y el rendimiento de tus entornos contenedorizados y orquestados, con compatibilidad para 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
.
NPM no es compatible con Autopilot de Google Kubernetes Engine (GKE).
Herramientas de enrutamiento en la red
Istio
Con NPM, puedes asignar la comunicación de red entre contenedores, pods y servicios a través de la malla de servicios 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.
NPM es compatible con Istio v1.6.4 o posterior con el Datadog Agent v7.24.1 o posterior.
Para obtener más información sobre la monitorización de tu entorno Istio con Datadog, consulta el blog de Istio.
Cilium
Network Performance Monitoring es compatible con instalaciones Cilium, siempre que se cumplan los siguientes requisitos:
- Cilium v1.6 y posteriores, y
- Kernel v5.1.16 y posteriores, o v4.19.57 y posteriores para kernels 4.19.x
Sistemas de aprovisionamiento
Network Performance Monitoring es compatible con 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 Network Performance Monitoring con el Datadog Agent, utiliza las siguientes configuraciones:
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.
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
Edita /etc/datadog-agent/system-probe.yaml
para definir el indicador de habilitación 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 Network Performance Monitoring.
#
enabled: true
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
.
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 Network Performance Monitoring en otros sistemas con SELinux habilitado, haz lo siguiente:
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).
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
Aplica el módulo a tu sistema SELinux:
semodule -v -i system_probe_policy.pp
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
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 Network Performance Monitoring en hosts de Windows:
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 anterior) Durante la instalación, pasa ADDLOCAL="MainApplication,NPM"
al comando msiexec
o selecciona “Network Performance Monitoring” cuando ejecutes la instalación del Agent a través de la GUI.
Edita C:\ProgramData\Datadog\system-probe.yaml
para definir el indicador habilitado como true
:
network_config:
enabled: true
Reinicia el Agent.
Para PowerShell (powershell.exe
):
restart-service -f datadogagent
Para Command Prompt (cmd.exe
):
net /y stop datadogagent && net start datadogagent
Nota: Network Performance Monitoring sólo monitoriza hosts de Windows y no contenedores de Windows.
Para habilitar Network Performance 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 NPM en tu entorno 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 Network Performance Monitoring con Kubernetes desde cero:
Descarga la plantilla datadog-agent.yaml manifest.
Sustituye <DATADOG_API_KEY>
por tu clave de API Datadog.
(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
.
Despliega el DaemonSet con el comando:
kubectl apply -f datadog-agent.yaml
Si el Agent ya se ejecuta con un manifiesto:
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
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
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
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_SYSPROBE_SOCKET
value: /var/run/sysprobe/sysprobe.sock
resources:
requests:
memory: 150Mi
cpu: 200m
limits:
memory: 150Mi
cpu: 200m
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
Por último, añada los siguientes volúmenes a tu manifiesto:
volumes:
- name: sysprobe-socket-dir
emptyDir: {}
- name: debugfs
hostPath:
path: /sys/kernel/debug
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 Network Performance Monitoring en Operator, utiliza la siguiente configuración:
apiVersion: datadoghq.com/v2alpha1
metadata:
name: placeholder
namespace: placeholder
spec:
features:
npm:
enabled: true
Para habilitar Network Performance Monitoring en Docker, utiliza la siguiente configuración al iniciar el Agent 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, habilita la recopilación de recursos para integraciones en la nube para permitir a Network Performance Monitoring detectar 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.
Conexiones fallidas (beta privada)
Las conexiones fallidas están en beta privada. Para empezar a ver
métricas de conexiones fallidas, ponte en contacto con tu representante de Datadog y solicita acceso.
Para permitir que el Agent empiece a recopilar datos sobre conexiones fallidas, añade el siguiente indicador a tu archivo /etc/datadog-agent/system-probe.yaml
(C:\ProgramData\Datadog\system-probe.yaml
para Windows).
network_config: # utilizar la configuración de la sonda del sistema para versiones del Agent anteriores a v7.24.1
## @param habilitado - booleano - opcional - por defecto: falso
## Configurar como verdadero para habilitar Network Performance Monitoring.
#
enabled: true
enable_tcp_failed_connections: true
Referencias adicionales
Additional helpful documentation, links, and articles: