Todos los productos
Search
Centro de documentos

Managed Service for OpenTelemetry:Usar OpenTelemetry para realizar análisis de trazas en NGINX

Última actualización: Sep 10, 2026

Este tema describe cómo usar OpenTelemetry para realizar análisis de trazas en NGINX. NGINX es un servidor web y proxy inverso de código abierto, ligero y de alto rendimiento, cuya funcionalidad se extiende mediante módulos. El módulo ngx_otel_module recopila las trazas de NGINX y las reenvía a Managed Service for OpenTelemetry.

Límites

  • El módulo ngx_otel_module solo reporta los datos de traza de NGINX mediante gRPC. No admite el reporte de estos datos por HTTP.

  • Notas de la versión del módulo ngx_otel_module:

    • V0.1.2 o posterior: reenvía directamente las trazas de NGINX a Managed Service for OpenTelemetry.

    • V0.1.1 o anterior: el módulo ngx_otel_module no admite configurar tokens de autenticación de gRPC. Por lo tanto, debe deploy an OpenTelemetry Collector para reenviar las trazas de NGINX a Managed Service for OpenTelemetry.

Requisitos previos

Obtener un endpoint de gRPC y un token de autenticación

New console

  1. Inicie sesión en la consola de Managed Service for OpenTelemetry. En el panel de navegación izquierdo, haga clic en Integration Center.

  2. En la página Integration Center, haga clic en la tarjeta OpenTelemetry dentro de la sección Open Source Frameworks.

  3. En el panel OpenTelemetry, haga clic en la pestaña Start Integration y seleccione la región donde desea reportar los datos de traza.

    Nota

    Los recursos se inicializan automáticamente en la región a la que accede por primera vez.

  4. Configure los parámetros Connection Type y Export Protocol, y copie un endpoint.

    • Connection Type: si su servicio está desplegado en Alibaba Cloud y reside en la región seleccionada, se recomienda establecer este parámetro en Alibaba Cloud VPC Network. De lo contrario, establézcalo en Public Network.

    • Export Protocol: establezca este parámetro en gRPC según el protocolo compatible con el cliente.

    87.jpg

Old console

  1. Inicie sesión en la consola de Managed Service for OpenTelemetry.

  2. En el panel de navegación izquierdo, haga clic en Cluster Configurations. En la página que aparece, haga clic en la pestaña Access point information.

  3. En la barra de navegación superior, seleccione la región donde desea reportar los datos de traza. En la sección Cluster Information, habilite Show Token.

  4. Establezca el parámetro Client en OpenTelemetry.

    En la columna Related Information de la tabla, copie un endpoint de la sección Report data through gRPC.86.jpg

    Nota

    Si su aplicación está desplegada en un entorno de producción de Alibaba Cloud, use un endpoint de red privada virtual (VPC). De lo contrario, use un endpoint público.

Procedimiento

Paso 1: Descargar el módulo ngx_otel_module

Método 1: Usar el administrador de paquetes

  • Descargue el módulo ngx_otel_module para Alibaba Cloud Linux, Red Hat Linux, Red Hat Enterprise Linux o sus derivados:

    sudo yum install nginx-module-otel
  • Descargue el módulo ngx_otel_module para Debian, Ubuntu o sus derivados:

    sudo apt install nginx-module-otel

Método 2: Usar la imagen de Docker precompilada

Nota

NGINX V1.27.5 y versiones posteriores usan el módulo ngx_otel_module V0.1.2 de forma predeterminada.

Visite el sitio web oficial de Docker, busque y extraiga las imágenes de NGINX con el sufijo -otel, como nginx:1.23.3-otel. Después, despliegue el servicio siguiendo el procedimiento estándar para iniciar Docker.

Supported tags and respective Dockerfile links

- 1.27.4, mainline, 1, 1.27, latest, 1.27.4-bookworm, mainline-bookworm, 1-bookworm, 1.27-bookworm, bookworm
- 1.27.4-perl, mainline-perl, 1-perl, 1.27-perl, perl, 1.27.4-bookworm-perl, mainline-bookworm-perl, 1-bookworm-perl, 1.27-bookworm-perl, bookworm-perl
- 1.27.4-otel, mainline-otel, 1-otel, 1.27-otel, otel, 1.27.4-bookworm-otel, mainline-bookworm-otel, 1-bookworm-otel, 1.27-bookworm-otel, bookworm-otel
- 1.27.4-alpine, mainline-alpine, 1-alpine, 1.27-alpine, alpine, 1.27.4-alpine3.21, mainline-alpine3.21, 1-alpine3.21, 1.27-alpine3.21, alpine3.21
- 1.27.4-alpine-perl, mainline-alpine-perl, 1-alpine-perl, 1.27-alpine-perl, alpine-perl, 1.27.4-alpine3.21-perl, mainline-alpine3.21-perl, 1-alpine3.21-perl, 1.27-alpine3.21-perl, alpine3.21-perl
- 1.27.4-alpine-slim, mainline-alpine-slim, 1-alpine-slim, 1.27-alpine-slim, alpine-slim, 1.27.4-alpine3.21-slim, mainline-alpine3.21-slim, 1-alpine3.21-slim, 1.27-alpine3.21-slim, alpine3.21-slim

Paso 2: Habilitar el módulo ngx_otel_module

Para habilitar la función de análisis de trazas en NGINX, cargue el módulo ngx_otel_module y configure sus parámetros en el archivo de configuración principal /etc/nginx/nginx.conf de NGINX. Para obtener más información sobre los parámetros del módulo ngx_otel_module, consulte la documentación oficial de ngx_otel_module.

  • Habilitar el análisis de trazas para todas las solicitudes HTTP

    ngx_otel_module V0.1.2 o posterior

    load_module modules/ngx_otel_module.so; # Load ngx_otel_module
    ...
    http {
        ...
    
        otel_exporter {
            endpoint "${GRPC_ENDPOINT}"; # The gRPC endpoint obtained in the prerequisites.
            header Authentication "${GRPC_TOKEN}"; # The authentication token obtained in the prerequisites.
        }
    
        otel_trace on;                     # Enable Tracing Analysis.
        otel_service_name ${SERVICE_NAME};  # The application name.
        otel_trace_context propagate;         # Inject the trace context into downstream services.
        ...
    }

    ngx_otel_module V0.1.1 o anterior

    Nota

    Reemplace las siguientes variables en la configuración:

    • ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}: el endpoint de gRPC del OpenTelemetry Collector que desplegó, por ejemplo, localhost:4317. Este endpoint es distinto del endpoint de Managed Service for OpenTelemetry obtenido en los requisitos previos.

    • ${SERVICE_NAME}: el nombre de la aplicación. Este nombre se muestra como el nombre de la aplicación NGINX en la consola de Managed Service for OpenTelemetry.

    load_module modules/ngx_otel_module.so; # Load the ngx_otel_module.
    ...
    http {
        ...
    
        otel_exporter {
            endpoint ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}; # The reporting address of the OpenTelemetry Collector, such as localhost:4317.
        }
    
        otel_trace on;                     # Enable Tracing Analysis.
        otel_service_name ${SERVICE_NAME};  # The application name.
        otel_trace_context propagate;         # Inject the trace context into downstream services.
        ...
    }
  • Habilitar el análisis de trazas para las solicitudes HTTP enviadas a una sola ubicación

    ngx_otel_module V0.1.2 o posterior

    load_module modules/ngx_otel_module.so; # Load the ngx_otel_module.
    
    ...
    
    http {
    
        otel_exporter {
            endpoint "${GRPC_ENDPOINT}"; # The gRPC endpoint obtained in the prerequisites.
            header Authentication "${GRPC_TOKEN}"; # The authentication token obtained in the prerequisites.
        }
    
        server {
            listen 127.0.0.1:80;
    
            location /hello {
                otel_trace         on;             # Enable Tracing Analysis only for 127.0.0.1:80/hello.
                otel_service_name ${SERVICE_NAME}  # The application name.
                otel_trace_context propagate;         # Inject the trace context into downstream services.
    
                ...
            }
        }
    }

    ngx_otel_module V0.1.1 o anterior

    Nota

    Reemplace las dos variables en la configuración:

    • ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}: el endpoint de gRPC del OpenTelemetry Collector que desplegó, por ejemplo, localhost:4317. Este endpoint es distinto del endpoint de Managed Service for OpenTelemetry obtenido en los requisitos previos.

    • ${SERVICE_NAME}: el nombre de la aplicación. Este nombre se muestra como el nombre de la aplicación NGINX en la consola de Managed Service for OpenTelemetry.

    load_module modules/ngx_otel_module.so; # Load the ngx_otel_module.
    
    ...
    
    http {
    
        otel_exporter {
            endpoint ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}; # The reporting address of the OpenTelemetry Collector, for example, localhost:4317.
        }
    
        server {
            listen 127.0.0.1:80;
    
            location /hello {
                otel_trace         on;             # Enable Tracing Analysis only for 127.0.0.1:80/hello.
                otel_service_name ${SERVICE_NAME}  # The application name.
                otel_trace_context propagate;         # Inject the trace context into downstream services.
    
                ...
            }
        }
    }

Paso 3: (Opcional) Desplegar un OpenTelemetry Collector

Nota

Este paso es obligatorio únicamente para el módulo ngx_otel_module V0.1.1 o anterior.

Método 1: Instalación en la consola de ACK

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Marketplace > Marketplace.

  2. En la página que aparece, busque opentelemetry-collector y haga clic en él. En el panel que se abre, haga clic en Deploy en la esquina superior derecha.

  3. En el panel Deploy, seleccione el clúster de destino y haga clic en Next.

  4. En el paso Parameters, agregue los siguientes parámetros y haga clic en OK.

    Nota

    Reemplace ${GRPC_ENDPOINT} y ${GRPC_ENDPOINT_TOKEN} con el endpoint de gRPC y el token de autenticación que obtuvo en Prerequisites.

    receivers:
      otlp:
        protocols:
          grpc: 
            endpoint: 0.0.0.0:4317
    
    exporters:
      otlp:
        endpoint: ${GRPC_ENDPOINT}
        tls:
          insecure: true
        headers:
          "Authentication": "${GRPC_ENDPOINT_TOKEN}"
    
    processors:
      batch:
      
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlp]

Método 2: Instalación manual

A continuación se muestra un ejemplo de cómo desplegar el OpenTelemetry Collector mediante Docker. Para obtener más información, consulte Install the Collector.

  1. Cree un archivo llamado opentelemetry-config.yaml y copie en él el siguiente contenido.

    Este archivo define y configura el comportamiento y las funciones del OpenTelemetry Collector, incluida la forma de recibir, procesar y exportar datos.

    Nota

    Reemplace ${GRPC_ENDPOINT} y ${GRPC_ENDPOINT_TOKEN} con el endpoint de gRPC y el token de autenticación que obtuvo en la sección Prerequisites de este tema.

    receivers:
      otlp:
        protocols:
          grpc: 
            endpoint: 0.0.0.0:4317
    
    exporters:
      otlp:
        endpoint: ${GRPC_ENDPOINT}
        tls:
          insecure: true
        headers:
          "Authentication": "${GRPC_ENDPOINT_TOKEN}"
    
    processors:
      batch:
      
    service:
      pipelines:
        traces:
          receivers: [otlp]
          processors: [batch]
          exporters: [otlp]
  2. Ejecute el siguiente comando para iniciar el OpenTelemetry Collector:

    docker run -v $(pwd)/opentelemetry-config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:0.105.0

Paso 4: Consultar las trazas de NGINX

Después de completar los pasos anteriores y reiniciar NGINX, envíe solicitudes a NGINX para generar trazas. Luego, inicie sesión en la consola de Managed Service for OpenTelemetry para consultar las trazas de NGINX generadas por OpenTelemetry.

  • En la página Applications, busque la aplicación NGINX y haga clic en su nombre.

  • En la pestaña Trace details, consulte los detalles de la traza, como la duración de la solicitud, la dirección IP del cliente y el código de estado HTTP. Si su servicio de backend también está conectado a Managed Service for OpenTelemetry, las trazas de NGINX y de los servicios de backend se asocian automáticamente para ofrecer una vista integrada. En la página Trace details, la cascada de spans muestra la traza completa de una solicitud que pasa por nginx y por el servicio de backend de Node.js (ot-node-demo). Primero, nginx recibe la solicitud /hello (duración total de 6 ms, HTTP 200) y luego la reenvía a GET /hello en ot-node-demo (5.76 ms), que contiene tres spans internos: middleware-query, middleware-expressInit y request handler-/hello. El panel Span details, ubicado a la derecha, muestra los atributos de la aplicación nginx, entre ellos http.status_code=200, http.route=/hello y http.user_agent=curl/7.61.1.

Ejemplo

El siguiente ejemplo muestra cómo recopilar los datos de traza de NGINX y de un servicio de backend, y reportarlos a Managed Service for OpenTelemetry.

Paso 1: Preparar el entorno

Paso 2: Crear los directorios del proyecto

nginx-otel-demo
│
├── docker-compose.yml          # The configuration file of Docker Compose.
│
├── nginx_conf/                 # The configuration files of NGINX.
│   ├── default.conf
│   └── nginx.conf              
│
├── otel_conf/                  # The configuration file of the OpenTelemetry Collector.
│   └── config.yaml           
│
└── backend/                    # The backend service developed by using Node.js.
    ├── Dockerfile              
    ├── main.js
    ├── package.json
    └── package-lock.json

Cree los directorios.

mkdir nginx-otel-demo && cd nginx-otel-demo

mkdir -p nginx_conf otel_conf backend

Paso 3: Crear los archivos de configuración de NGINX

  1. Cree el archivo de configuración principal nginx.conf de NGINX.

    ngx_otel_module V0.1.2 o posterior

    cat << 'EOF' > nginx_conf/nginx.conf
    load_module modules/ngx_otel_module.so;
    
    user  nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        otel_exporter {
            endpoint "${GRPC_ENDPOINT}";
            header Authentication "${GRPC_TOKEN}";
        }
    
        otel_trace on;
    
        otel_trace_context propagate;
    
        otel_service_name nginx;
    
        include /etc/nginx/conf.d/*.conf;
    
    }
    EOF

    ngx_otel_module V0.1.1 o anterior

    load_module modules/ngx_otel_module.so;
    
    user  nginx;
    worker_processes  auto;
    
    error_log  /var/log/nginx/error.log notice;
    pid        /var/run/nginx.pid;
    
    events {
        worker_connections  1024;
    }
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        otel_exporter {
            endpoint otel-collector:4317;
        }
    
        otel_trace on;
    
        otel_trace_context propagate;
    
        otel_service_name nginx;
    
        include /etc/nginx/conf.d/*.conf;
    
    }
    EOF
    
  2. Cree el archivo de configuración default.conf de NGINX.

    cat << 'EOF' > nginx_conf/default.conf
    server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        
        # Configure parameters.
        location /hello {
            proxy_pass http://backend-api:7001/hello;
            proxy_http_version 1.1;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    EOF

Paso 4: (Opcional) Crear el archivo de configuración del OpenTelemetry Collector

Nota

Este paso es obligatorio únicamente para el módulo ngx_otel_module V0.1.1 o anterior.

Cree el archivo de configuración del OpenTelemetry Collector. Este archivo define los métodos para recibir, procesar y reportar datos.

Nota

Reemplace ${GRPC_ENDPOINT} y ${GRPC_ENDPOINT_TOKEN} con el endpoint de gRPC y el token de autenticación que obtuvo en la sección Prerequisites de este tema.

cat << 'EOF' > otel_conf/config.yaml
receivers:
  otlp:
    protocols:
      grpc: 
        endpoint: 0.0.0.0:4317

exporters:
  otlp:
    endpoint: ${GRPC_ENDPOINT}
    tls:
      insecure: true
    headers:
      "Authentication": "${GRPC_ENDPOINT_TOKEN}"

processors:
  batch:
  
service:
  pipelines:
    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [otlp]
EOF

Paso 5: Crear un servicio de backend con Node.js

  1. Cree el archivo package.json. Este archivo contiene la información de configuración del servicio de backend, incluido el nombre del servicio, la versión del servicio y las dependencias.

    cat << 'EOF' > backend/package.json
    {
      "name": "backend",
      "version": "1.0.0",
      "main": "index.js",
      "scripts": {},
      "keywords": [],
      "author": "",
      "license": "ISC",
      "description": "",
      "dependencies": {
        "@opentelemetry/api": "^1.9.0",
        "@opentelemetry/auto-instrumentations-node": "^0.52.0",
        "axios": "^1.7.7",
        "express": "^4.21.1"
      }
    }
    EOF
  2. Cree el archivo main.js que define una aplicación web básica de Express.

    cat << 'EOF' > backend/main.js
    "use strict";
    const axios = require("axios").default;
    const express = require("express");
    const app = express();
    app.get("/", async (req, res) => {
      const result = await axios.get("http://localhost:7001/hello");
      return res.status(201).send(result.data);
    });
    app.get("/hello", async (req, res) => {
      console.log("hello world!")
      res.json({ code: 200, msg: "success" });
    });
    app.use(express.json());
    app.listen(7001, () => {
      console.log("Listening on http://localhost:7001");
    });
    EOF
  3. Cree el Dockerfile.

    ngx_otel_module V0.1.2 o posterior

    cat << 'EOF' > backend/Dockerfile
    FROM node:20.16.0
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    ENV OTEL_TRACES_EXPORTER="otlp"
    ENV OTEL_LOGS_EXPORTER=none
    ENV OTEL_METRICS_EXPORTER=none
    ENV OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc
    ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="${GRPC_ENDPOINT}"
      export OTEL_EXPORTER_OTLP_HEADERS=Authentication=${GRPC_TOKEN}
    ENV OTEL_NODE_RESOURCE_DETECTORS="env,host,os"
    ENV OTEL_SERVICE_NAME="ot-nodejs-demo"
    ENV NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"
    EXPOSE 7001
    CMD ["node", "main.js"]
    EOF

    ngx_otel_module V0.1.1 o anterior

    cat << 'EOF' > backend/Dockerfile
    FROM node:20.16.0
    WORKDIR /app
    COPY package*.json ./
    RUN npm install
    COPY . .
    ENV OTEL_TRACES_EXPORTER="otlp"
    ENV OTEL_LOGS_EXPORTER=none
    ENV OTEL_METRICS_EXPORTER=none
    ENV OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc
    ENV OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="http://otel-collector:4317"
    ENV OTEL_NODE_RESOURCE_DETECTORS="env,host,os"
    ENV OTEL_SERVICE_NAME="ot-nodejs-demo"
    ENV NODE_OPTIONS="--require @opentelemetry/auto-instrumentations-node/register"
    EXPOSE 7001
    CMD ["node", "main.js"]
    EOF

Paso 6: Crear el archivo de configuración de Docker Compose

El archivo de configuración de Docker Compose define los ajustes de una aplicación de múltiples contenedores, incluidos NGINX como proxy inverso, el OpenTelemetry Collector y un servicio de backend de Node.js. También establece las conexiones de red y las asignaciones de puertos entre los componentes.

ngx_otel_module V0.1.2 o posterior

cat << 'EOF' > docker-compose.yml
version: "3"

services:
  nginx:
    image: nginx:1.27.5-alpine-otel # The default NGINX image that contains the ngx_otel_module V0.1.2.
    volumes:
      - ./nginx_conf/nginx.conf:/etc/nginx/nginx.conf:ro 
      - ./nginx_conf/default.conf:/etc/nginx/conf.d/default.conf:ro 
    ports:
      - "80:80"
    networks:
      - nginx-otel-demo

  backend-api:
    build:
      context: ./backend
      dockerfile: Dockerfile
    environment:
      - NODE_ENV=production
    ports:
      - "7001:7001"
    networks:
      - nginx-otel-demo

networks:
  nginx-otel-demo:
    driver: bridge
EOF

ngx_otel_module V0.1.1 o anterior

cat << 'EOF' > docker-compose.yml
version: "3"

services:
  nginx:
    image: nginx:1.27.2-alpine-otel # The default NGINX image that contains the OpenTelemetry module.
    volumes:
      - ./nginx_conf/nginx.conf:/etc/nginx/nginx.conf:ro 
      - ./nginx_conf/default.conf:/etc/nginx/conf.d/default.conf:ro 
    ports:
      - "80:80"
    networks:
      - nginx-otel-demo

  otel-collector:
    image: otel/opentelemetry-collector-contrib:latest
    volumes:
      - ./otel_conf/config.yaml:/etc/otelcol-contrib/config.yaml # Mount the configuration file for the OpenTelemetry Collector.
    ports:
      - "4317:4317" # OTLP gRPC receiver
    networks:
      - nginx-otel-demo

  backend-api:
    build:
      context: ./backend
      dockerfile: Dockerfile
    environment:
      - NODE_ENV=production
    ports:
      - "7001:7001"
    networks:
      - nginx-otel-demo

networks:
  nginx-otel-demo:
    driver: bridge
EOF

Paso 7: Iniciar el servicio

  1. Ejecute el siguiente comando en el directorio nginx-otel-demo:

    docker compose up -d

    Resultado esperado:

    ngx_otel_module V0.1.2 o posterior

    [+] Running 4/4
     ✔ Network nginx-otel-demo_nginx-otel-demo       Created
     ✔ Container nginx-otel-demo-nginx-1             Started
     ✔ Container nginx-otel-demo-backend-api-1        Started

    ngx_otel_module V0.1.1 o anterior

    [+] Running 4/4
     ✔ Network nginx-otel-demo_nginx-otel-demo       Created
     ✔ Container nginx-otel-demo-nginx-1              Started
     ✔ Container nginx-otel-demo-backend-api-1         Started
     ✔ Container nginx-otel-demo-otel-collector-1      Started
  2. Acceda al servicio de backend.

    curl http://localhost:80/hello

    Resultado esperado:

    {"code":200,"msg":"success"}
  3. Inicie sesión en la consola de Managed Service for OpenTelemetry para consultar las trazas de NGINX y del servicio de backend.

    En este ejemplo, nginx se muestra como el nombre de la aplicación NGINX en la página Applications, mientras que el nombre del servicio de backend es ot-nodejs-demo.

Preguntas frecuentes

  1. ¿Qué debo hacer si no puedo descargar nginx-module-otel y aparece el mensaje de error "Unable to find a match: nginx-module-otel"?

    Compruebe si configuró el repositorio de paquetes de NGINX. Si no lo hizo, configúrelo con base en nginx-otel.

  2. ¿Qué debo hacer si NGINX no inicia después de configurar el módulo ngx_otel_module en su archivo de configuración?

    Ejecute el comando nginx -t para comprobar si la configuración de NGINX es válida, o revise el mensaje de error en los registros de NGINX.

    sudo tail -n 50 /var/log/nginx/error.log
  3. ¿Qué debo hacer si no hay trazas de NGINX disponibles en la consola de Managed Service for OpenTelemetry después de habilitar el módulo ngx_otel_module?

    Compruebe si el valor del parámetro otel_exporter.endpoint es válido en el archivo de configuración de NGINX. Este endpoint se compone de la dirección IP del servidor donde se desplegó el OpenTelemetry Collector y del puerto que dicho colector usa para recibir los datos reportados por gRPC. Ejemplo: localhost:4317. Revise los registros de NGINX para comprobar si la configuración es válida. Si aparecen los siguientes errores, el endpoint no es válido.

    2024/11/01 15:21:48 [notice] 137091#137091: worker process 137093 exited with code 0
    2024/11/01 15:21:48 [notice] 137091#137091: signal 29 (SIGIO) received
    2024/11/01 15:22:02 [error] 137644#137653: OTel export failure: failed to connect to all addresses
    2024/11/01 15:22:07 [error] 137645#137652: OTel export failure: failed to connect to all addresses
    2024/11/01 15:22:42 [error] 137644#137653: OTel export failure: failed to connect to all addresses
    2024/11/01 15:22:47 [error] 137644#137653: OTel export failure: failed to connect to all addresses
    2024/11/01 15:23:37 [error] 137644#137653: OTel export failure: failed to connect to all addresses
    2024/11/01 15:25:23 [error] 137644#137653: OTel export failure: failed to connect to all addresses
    2024/11/01 15:25:28 [error] 137644#137653: OTel export failure: failed to connect to all addresses
  4. ¿Qué debo hacer si las trazas de NGINX no se pueden asociar con las de otra aplicación?

    Compruebe si otel_trace_context propagate; está configurado en el archivo de configuración de NGINX. Verifique también si el protocolo que usa la aplicación para propagar el contexto de traza coincide con el de NGINX. El módulo ngx_otel_module utiliza el protocolo OpenTelemetry y la especificación W3C para propagar el contexto de traza. Por lo tanto, las trazas de NGINX solo se asocian con las de la aplicación si esta última también emplea el protocolo OpenTelemetry y la especificación W3C para dicha propagación.

  5. ¿El módulo ngx_otel_module afecta el rendimiento de NGINX?

    El módulo ngx_otel_module es un módulo nativo de NGINX. Según el equipo de NGINX, el impacto de este módulo en el rendimiento se limita a entre un 10 % y un 15 %. Para obtener más información, consulte NGINX Native OpenTelemetry (OTel) Module.

Referencias