Elige el archivo .tar correspondiente a la versión de NGINX y a la arquitectura de CPU específicas.
Cada versión incluye dos archivos .tar por cada combinación de la versión de NGINX y la arquitectura de CPU.
El archivo .tar principal contiene un único archivo, ngx_http_datadog_module.so, que es el módulo NGINX de Datadog. El segundo contiene símbolos de depuración y es opcional.
Para simplificar el proceso, el siguiente script sólo descarga el módulo de la última versión:
get_latest_release(){ curl --silent "https://api.github.com/repos/$1/releases/latest"| jq --raw-output .tag_name
}get_architecture(){case"$(uname -m)" in
aarch64|arm64)echo"arm64";; x86_64|amd64)echo"amd64";; *)echo"";;esac}ARCH=$(get_architecture)if[ -z "$ARCH"];thenecho 1>&2"ERROR: Architecture $(uname -m) is not supported."exit1fiNGINX_VERSION="1.26.0"RELEASE_TAG=$(get_latest_release DataDog/nginx-datadog)TARBALL="ngx_http_datadog_module-${ARCH}-${NGINX_VERSION}.so.tgz"curl -Lo ${TARBALL}"https://github.com/DataDog/nginx-datadog/releases/download/${RELEASE_TAG}/${TARBALL}"
Extrae el archivo ngx_http_datadog_module.so del tarball descargado mediante tar y colócalo en el directorio de módulos de NGINX, situado normalmente en /usr/lib/nginx/modules.
Configuración de NGINX con el módulo de Datadog
En la sección superior de configuración de NGINX, carga el módulo de Datadog.
load_modulemodules/ngx_http_datadog_module.so;
La configuración por defecto se conecta a un Datadog Agent local y produce trazas
para todas las localizaciones de NGINX. Especifica una configuración personalizada utilizando las directivas exclusivas
datadog_* descritas en la documentación de la API del módulo de Datadog.
Por ejemplo, la siguiente configuración de NGINX define el nombre del servicio como
usage-internal-nginx y la frecuencia de muestreo en 10%.
Datadog ofrece soporte para monitorizar el controlador Ingress-NGINX en Kubernetes.
Elige entre los siguientes métodos de instrumentación en función de la versión y los requisitos de tu controlador:
Controlador v1.10.0+ con las características de Datadog
Este método de instrumentación utiliza nginx-datadog y aprovecha el mecanismo init-container de Kubernetes
para instalar el módulo dentro de la instancia del controlador Ingress-NGINX.
Para instrumentar Ingress-NGINX v1.10.0+ mediante el módulo de Datadog, sigue estos pasos:
1. Verificar la versión de Ingress-NGINX Comprueba la versión de tu controlador Ingress-NGINX y asegúrate de que dispones de la versión init-container de Datadog correspondiente.
La versión init-container (datadog/ingress-nginx-injection) debe coincidir exactamente con la versión de tu controlador para evitar problemas de inicio.
Por ejemplo, si estás ejecutando Ingress-NGINX v1.11.3, necesitas datadog/ingress-nginx-injection:v1.11.3.
2. Modificar la especificación del pod del controlador Actualiza la especificación del pod del controlador para incluir la variable init-container y configurar la variable de entorno del host del Datadog Agent:
4. Aplicar el ConfigMap Aplica el ConfigMap actualizado para asegurarte de que el módulo de Datadog se cargue correctamente.
Esta configuración asegura que el módulo de Datadog esté cargado y listo para rastrear las solicitudes entrantes.
1. Verificar la versión de Ingress-NGINX Comprueba la versión de tu controlador Ingress-NGINX y asegúrate de que dispones de la versión init-container de Datadog correspondiente.
La versión init-container (datadog/ingress-nginx-injection) debe coincidir exactamente con la versión de tu controlador para evitar problemas de inicio.
Por ejemplo, si estás ejecutando Ingress-NGINX v1.11.3, necesitas datadog/ingress-nginx-injection:v1.11.3.
2. Anular los valores de la tabla de Helm Para personalizar la tabla de Helm de Ingress-NGINX y cargar el módulo de Datadog necesario, crea un archivo YAML o modifica uno existente con la siguiente configuración:
values.yaml
controller:config:main-snippet:"load_module /modules_mount/ngx_http_datadog_module.so;"opentelemetry:enabled:falseextraModules:- name:nginx-datadogimage:registry:docker.ioimage:datadog/ingress-nginx-injection# La etiqueta debe coincidir con la versión del controlador ingress-nginx# Por ejemplo, esto inyectará el módulo de Datadog para ingress v1.10.0# Comprueba <https://hub.docker.com/repository/docker/datadog/ingress-nginx-injection/tags># para obtener la lista de todas las versiones admitidas.tag:"v1.10.0"distroless:falseextraEnvs:- name:DD_AGENT_HOSTvalueFrom:fieldRef:fieldPath:status.hostIP
3. Desplegar Instala o actualiza la versión de Helm mediante el marcador -f para aplicar los valores personalizados creados en el paso anterior.
1. Preparar el Datadog Agent Asegúrate de que tu Datadog Agent tenga habilitada la ingesta de OTLP gRPC para actuar como un recopilador de OpenTelemetry.
2. Configurar el controlador Ingress Para empezar, verifica que la especificación del pod de tu controlador Ingress tenga la variable de entorno HOST_IP configurada. Si no es así, añade la siguiente entrada al bloque env dentro de la especificación del pod:
A continuación, habilita la instrumentación de OpenTelemetry para el controlador. Crea o edita un ConfigMap con los siguientes detalles:
apiVersion:v1kind:ConfigMapmetadata:name:ingress-nginx-controllernamespace:ingress-nginxdata:enable-opentelemetry:"true"otel-sampler:AlwaysOn# Por defecto# otel-service-name: "nginx"# otel-sampler-ratio: 0.01
1. Preparar el Datadog Agent Asegúrate de que tu Datadog Agent tenga habilitada la ingesta de OTLP gRPC para actuar como un recopilador de OpenTelemetry.
2. Anular los valores de la tabla de Helm Para personalizar la tabla de Helm de Ingress-NGINX y cargar el módulo de Datadog necesario, crea un archivo YAML o modifica uno existente con la siguiente configuración:
Para habilitar el rastreo en Datadog, crea o edita un ConfigMap para configurarenable-opentracing: "true" y el datadog-collector-host al que se deben enviar trazas.
El nombre del ConfigMap lo cita explícitamente el argumento de línea de comandos del contenedor del controlador Ingress-NGINX. Por defecto es --configmap=<POD_NAMESPACE>/nginx-configuration.
Si ingress-nginx se ha instalado utilizando el chart Helm, el nombre del ConfigMap seguirá el patrón <RELEASE_NAME>-nginx-ingress-controller.
El controlador Ingress gestiona los archivos nginx.conf y /etc/nginx/opentracing.json. El rastreo está habilitado para todos los bloques de location.
Además, asegúrate de que la especificación del pod de tu controlador tiene definida la variable de entorno HOST_IP. Añade esta entrada al bloque env: que contiene las variables de entorno POD_NAME y POD_NAMESPACE.