すべてのプロダクト
Search
ドキュメントセンター

Managed Service for OpenTelemetry:OpenTelemetry を使用した NGINX のトレーシング分析

最終更新日:Sep 05, 2026

このトピックでは、OpenTelemetry を使用して NGINX のトレーシング分析を行う方法について説明します。NGINX は、高性能で軽量なオープンソースの Web サーバーおよびリバースプロキシであり、モジュールで機能を拡張できます。ngx_otel_module は NGINX からトレースを収集し、Managed Service for OpenTelemetry に転送します。

制限事項

  • ngx_otel_module は、gRPC 経由でのみ NGINX のトレースデータをレポートできますが、HTTP 経由ではレポートできません。

  • ngx_otel_module のリリースノート:

    • V0.1.2 以降: NGINX トレースを Managed Service for OpenTelemetry に直接転送できます。

    • V0.1.1 以前: ngx_otel_module は gRPC 認証トークンの設定をサポートしていません。そのため、OpenTelemetry Collector をデプロイして、NGINX トレースを Managed Service for OpenTelemetry に転送する必要があります。

前提条件

gRPC エンドポイントと認証トークンの取得

新しいコンソール

  1. Managed Service for OpenTelemetry コンソールにログインします。 左側のナビゲーションペインで、[統合センター] をクリックします。

  2. 統合センターページで、[オープンソースフレームワーク]セクションの [OpenTelemetry] カードをクリックします。

  3. [OpenTelemetry] パネルで、Start Integration タブをクリックし、トレースデータを報告したいリージョンを選択します。

    説明

    初めてアクセスするリージョンでは、リソースが自動的に初期化されます。

  4. [Connection Type][Export Protocol] パラメーターを設定し、エンドポイントをコピーします。

    • [Connection Type]:サービスが Alibaba Cloud にデプロイされ、選択したリージョンに存在する場合は、このパラメーターを [Alibaba Cloud VPC Network] に設定することを推奨します。それ以外の場合は、このパラメーターを [Public Network] に設定します。

    • [Export Protocol]:クライアントがサポートするプロトコルに基づいて、このパラメーターを [gRPC] に設定します。

    87.jpg

旧コンソール

  1. Managed Service for OpenTelemetry コンソールにログインします。

  2. 左側のナビゲーションペインで、[クラスター設定] をクリックします。表示されたページで、[アクセスポイント情報] タブをクリックします。

  3. 上部のナビゲーションバーで、トレースデータを報告するリージョンを選択します。[クラスター情報] セクションで、[トークンの表示] をオンにします。

  4. [クライアント]パラメーターを [OpenTelemetry] に設定します。

    表の[関連情報]列で、「gRPC 経由のデータレポート」セクションのエンドポイントをコピーします。86.jpg

    説明

    アプリケーションが Alibaba Cloud の本番環境にデプロイされている場合は、仮想プライベートクラウド (VPC) エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。

操作手順

ステップ 1: ngx_otel_module のダウンロード

方法 1: パッケージマネージャーの使用

  • Alibaba Cloud Linux、Red Hat Linux、Red Hat Enterprise Linux、またはその派生製品用の ngx_otel_module をダウンロードします。

    sudo yum install nginx-module-otel
  • Debian、Ubuntu、またはその派生製品用の ngx_otel_module をダウンロードします。

    sudo apt install nginx-module-otel

方法 2: ビルド済み Docker イメージの使用

説明

NGINX V1.27.5 以降では、デフォルトで ngx_otel_module V0.1.2 が使用されます。

Docker 公式 Web サイトにアクセスし、末尾に -otel が付く NGINX イメージ (例: nginx:1.23.3-otel) を検索してプルし、Docker の標準的な起動手順に従ってサービスをデプロイします。

Supported tags and respective Dockerfile links

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

ステップ 2: ngx_otel_module の有効化

NGINX のトレース分析機能を有効にするには、NGINX のメイン設定ファイル /etc/nginx/nginx.conf で ngx_otel_module をロードし、ngx_otel_module のパラメーターを設定する必要があります。 ngx_otel_module のパラメーターの詳細については、「ngx_otel_module の公式ドキュメント」をご参照ください。

  • すべての HTTP リクエストのトレーシング分析を有効にする

    ngx_otel_module V0.1.2 以降

    load_module modules/ngx_otel_module.so; # ngx_otel_module をロードします
    ...
    http {
        ...
    
        otel_exporter {
            endpoint "${GRPC_ENDPOINT}"; # 前提条件で取得した gRPC エンドポイント
            header Authentication "${GRPC_TOKEN}"; # 前提条件で取得した認証トークン
        }
    
        otel_trace on;                     # トレーシング分析を有効にします
        otel_service_name ${SERVICE_NAME};  # アプリケーション名
        otel_trace_context propagate;         # トレースコンテキストをダウンストリームサービスに挿入します
        ...
    }

    ngx_otel_module V0.1.1 以前

    説明

    設定内の以下の変数を置き換えてください。

    • ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}: デプロイした OpenTelemetry Collector の gRPC エンドポイントです (例: localhost:4317)。 このエンドポイントは、前提条件で取得した Managed Service for OpenTelemetry のエンドポイントとは異なります。

    • ${SERVICE_NAME}: アプリケーション名です。この名前は、Managed Service for OpenTelemetry コンソールに NGINX アプリケーション名として表示されます。

    load_module modules/ngx_otel_module.so; # ngx_otel_module をロードします
    ...
    http {
        ...
    
        otel_exporter {
            endpoint ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}; # OpenTelemetry Collector のレポートアドレス (例: localhost:4317)
        }
    
        otel_trace on;                     # トレーシング分析を有効にします
        otel_service_name ${SERVICE_NAME};  # アプリケーション名
        otel_trace_context propagate;         # トレースコンテキストをダウンストリームサービスに挿入します
        ...
    }
  • 特定のロケーションへの HTTP リクエストのトレーシング分析を有効にする

    ngx_otel_module V0.1.2 以降

    load_module modules/ngx_otel_module.so; # ngx_otel_module をロードします
    
    ...
    
    http {
    
        otel_exporter {
            endpoint "${GRPC_ENDPOINT}"; # 前提条件で取得した gRPC エンドポイント
            header Authentication "${GRPC_TOKEN}"; # 前提条件で取得した認証トークン
        }
    
        server {
            listen 127.0.0.1:80;
    
            location /hello {
                otel_trace         on;             # 127.0.0.1:80/hello のみトレーシング分析を有効にします
                otel_service_name ${SERVICE_NAME}  # アプリケーション名
                otel_trace_context propagate;         # トレースコンテキストをダウンストリームサービスに挿入します
    
                ...
            }
        }
    }

    ngx_otel_module V0.1.1 以前

    説明

    設定内の 2 つの変数を置き換えてください。

    • ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}: デプロイした OpenTelemetry Collector の gRPC エンドポイントです (例: localhost:4317)。このエンドポイントは、前提条件で取得した Managed Service for OpenTelemetry のエンドポイントとは異なります。

    • ${SERVICE_NAME}: アプリケーション名。この名前は、Managed Service for OpenTelemetry コンソールに NGINX アプリケーション名として表示されます。

    load_module modules/ngx_otel_module.so; # ngx_otel_module をロードします
    
    ...
    
    http {
    
        otel_exporter {
            endpoint ${OTEL_COLLECTOR_GRPC_RECEIVER_ENDPOINT}; # OpenTelemetry Collector のレポートアドレス (例: localhost:4317)
        }
    
        server {
            listen 127.0.0.1:80;
    
            location /hello {
                otel_trace         on;             # 127.0.0.1:80/hello のみトレーシング分析を有効にします
                otel_service_name ${SERVICE_NAME}  # アプリケーション名
                otel_trace_context propagate;         # トレースコンテキストをダウンストリームサービスに挿入します
    
                ...
            }
        }
    }

ステップ 3: (オプション) OpenTelemetry Collector のデプロイ

説明

このステップは、ngx_otel_module V0.1.1 以前の場合にのみ必要です。

方法 1: ACK コンソールでのインストール

  1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[Marketplace] > [Marketplace] を選択します。

  2. 表示されたページで、opentelemetry-collector を見つけてクリックします。表示されたパネルで、右上隅にある [デプロイ] をクリックします。

  3. [デプロイ] パネルで、ターゲットクラスターを選択し、[次へ] をクリックします。

  4. [パラメーター] ステップで、次のパラメーターを追加し、[OK] をクリックします。

    説明

    ${GRPC_ENDPOINT}${GRPC_ENDPOINT_TOKEN} を、前提条件で取得した gPRC エンドポイントと認証トークンに置き換えます。

    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: 手動インストール

以下の例では、Docker を使用して OpenTelemetry Collector をデプロイする方法を示します。詳細については、「Install the Collector」をご参照ください。

  1. opentelemetry-config.yaml という名前のファイルを作成し、次の内容をファイルにコピーします。

    このファイルは、データの受信、処理、エクスポート方法など、OpenTelemetry Collector の動作と機能を定義および設定するために使用されます。

    説明

    ${GRPC_ENDPOINT}${GRPC_ENDPOINT_TOKEN} を、このトピックの 前提条件 の項で取得した gRPC エンドポイントと認証トークンで置き換えます。

    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. 次のコマンドを実行して、OpenTelemetry Collector を起動します。

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

ステップ 4: NGINX トレースの表示

前述の手順を完了して NGINX を再起動した後、NGINX にリクエストを送信してトレースを生成します。その後、Managed Service for OpenTelemetry コンソールにログインし、OpenTelemetry によって生成された NGINX トレースを表示します。

  • [アプリケーション] ページで、NGINX アプリケーションを見つけ、アプリケーション名をクリックします。

  • [トレース詳細] タブでは、リクエスト期間、クライアント IP アドレス、HTTP ステータスコードなどのトレース詳細を表示できます。 バックエンドサービスも Managed Service for OpenTelemetry に接続されている場合、NGINX とバックエンドサービスのトレースは自動的に関連付けられ、統合ビューが提供されます。 [トレース詳細] ページでは、スパンウォーターフォールに、nginx と Node.js バックエンドサービス (ot-node-demo) を通過するリクエストの完全なトレースが表示されます。 nginx はまず /hello リクエスト (合計期間 6 ms、HTTP 200) を受信し、次にそれを ot-node-demo の GET /hello (5.76 ms) に転送します。これには、middleware-querymiddleware-expressInitrequest handler-/hello の 3 つの内部スパンが含まれています。 右側のスパン詳細パネルには、http.status_code=200http.route=/hellohttp.user_agent=curl/7.61.1 などの nginx アプリケーションの属性が表示されます。

以下の例では、NGINX とバックエンドサービスのトレースデータを収集し、そのトレースデータを Managed Service for OpenTelemetry にレポートする例を示します。

ステップ 1: 準備

ステップ 2: プロジェクトディレクトリの作成

nginx-otel-demo
│
├── docker-compose.yml          # Docker Compose の設定ファイル
│
├── nginx_conf/                 # NGINX の設定ファイル
│   ├── default.conf
│   └── nginx.conf              
│
├── otel_conf/                  # OpenTelemetry Collector の設定ファイル
│   └── config.yaml           
│
└── backend/                    # Node.js を使用して開発されたバックエンドサービス
    ├── Dockerfile              
    ├── main.js
    ├── package.json
    └── package-lock.json

ディレクトリを作成します。

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

mkdir -p nginx_conf otel_conf backend

ステップ 3: NGINX の設定ファイルの作成

  1. NGINX のメイン設定ファイル nginx.conf を作成します。

    ngx_otel_module V0.1.2 以降

    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 以前

    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. NGINX の設定ファイル default.conf を作成します。

    cat << 'EOF' > nginx_conf/default.conf
    server {
        listen       80;
        server_name  localhost;
    
        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }
        
        # パラメーターを設定します
        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;
        }
    
        # サーバーエラーページを静的ページ /50x.html にリダイレクトします
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
    EOF

ステップ 4: (オプション) OpenTelemetry Collector の設定ファイルの作成

説明

このステップは、ngx_otel_module V0.1.1 以前の場合にのみ必要です。

OpenTelemetry Collector の設定ファイルを作成します。この設定ファイルは、データの受信、処理、レポート方法を定義します。

説明

${GRPC_ENDPOINT}${GRPC_ENDPOINT_TOKEN} を、このトピックの前提条件セクションで取得した gRPC エンドポイントと認証トークンに置き換えます。

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

ステップ 5: Node.js を使用したバックエンドサービスの作成

  1. package.json ファイルを作成します。このファイルには、サービス名、サービスバージョン、依存関係など、バックエンドサービスの設定情報が含まれます。

    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. 基本的な Express Web アプリケーションを定義する main.js ファイルを作成します。

    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. Dockerfile を作成します。

    ngx_otel_module V0.1.2 以降

    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}"
    ENV 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 以前

    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

ステップ 6: Docker Compose の設定ファイルの作成

Docker Compose の設定ファイルは、リバースプロキシとして機能する NGINX、OpenTelemetry Collector、Node.js バックエンドサービスを含むマルチコンテナアプリケーションの設定を定義します。このファイルは、コンポーネント間のネットワーク接続とポートマッピングも定義します。

ngx_otel_module V0.1.2 以降

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

services:
  nginx:
    image: nginx:1.27.5-alpine-otel # ngx_otel_module V0.1.2 を含むデフォルトの NGINX イメージ
    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 以前

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

services:
  nginx:
    image: nginx:1.27.2-alpine-otel # OpenTelemetry モジュールを含むデフォルトの NGINX イメージ
    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 # OpenTelemetry Collector の設定ファイルをマウントします
    ports:
      - "4317:4317" # OTLP gRPC レシーバー
    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

ステップ 7: サービスの起動

  1. nginx-otel-demo ディレクトリで次のコマンドを実行します。

    docker compose up -d

    想定される出力:

    ngx_otel_module V0.1.2 以降

    [+] 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 以前

    [+] 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. バックエンドサービスにアクセスします。

    curl http://localhost:80/hello

    想定される出力:

    {"code":200,"msg":"success"}
  3. Managed Service for OpenTelemetry コンソールにログインして、NGINX とバックエンドサービスのトレースを表示します。

    この例では、[Applications] ページで nginx が NGINX のアプリケーション名として表示され、バックエンドサービスの名前は ot-nodejs-demo です。

よくある質問

  1. Unable to find a match: nginx-module-otel」というエラーメッセージが表示され、nginx-module-otel のダウンロードに失敗した場合はどうすればよいですか?

    NGINX パッケージリポジトリが設定されているかどうかを確認してください。設定されていない場合は、nginx-otel を参照して設定してください。

  2. NGINX の設定ファイルで ngx_otel_module を設定した後、NGINX の起動に失敗した場合はどうすればよいですか?

    nginx -t コマンドを実行して NGINX 設定が有効かどうかを確認するか、NGINX ログでエラーメッセージを確認します。

    sudo tail -n 50 /var/log/nginx/error.log
  3. ngx_otel_module を有効にした後、Managed Service for OpenTelemetry コンソールで NGINX トレースが表示されない場合はどうすればよいですか?

    NGINX の設定ファイルで、otel_exporter.endpoint パラメーターの値が有効かどうかを確認してください。このエンドポイントは、OpenTelemetry Collector がデプロイされているサーバーの IP アドレスと、gRPC 経由で報告されるデータを受信するためのポートから構成されます。例: localhost:4317。設定が有効かどうかは、NGINX ログを表示して確認できます。次のエラーが報告されている場合、エンドポイントは無効です。

    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. NGINX トレースが別のアプリケーションのトレースと関連付けられない場合はどうすればよいですか?

    NGINX の設定ファイルに otel_trace_context propagate; が設定されていること、およびアプリケーションがトレースコンテキストの伝播に使用するプロトコルが NGINX で使用されるプロトコルと同じであることを確認してください。ngx_otel_module は、トレースコンテキストの伝播に OpenTelemetry プロトコルと W3C 仕様を使用します。したがって、アプリケーションもトレースコンテキストの伝播に OpenTelemetry プロトコルと W3C 仕様を使用する場合にのみ、NGINX のトレースをアプリケーションのトレースと関連付けることができます。

  5. ngx_otel_module は NGINX のパフォーマンスに影響しますか?

    ngx_otel_module は NGINX のネイティブモジュールです。NGINX チームによると、このモジュールが NGINX のパフォーマンスに与える影響は 10% から 15% 程度です。詳細については、「NGINX Native OpenTelemetry (OTel) Module」をご参照ください。

関連ドキュメント