OpenResty
設定¶
DDTrace の設定¶
Tracing モジュールのダウンロード¶
https://github.com/DataDog/nginx-datadog/releases にアクセスし、Assets から現在の CPU アーキテクチャーとバージョンに一致するモジュール openresty-ngx_http_datadog_module-<処理器アーキテクチャ>-<バージョン>.so.tgz を探してダウンロードします。
Tracing のインストール¶
- モジュール用のパスを作成します
- 展開します
root@root:/usr/local/openresty/nginx/modules$ tar xzvf openresty-ngx_http_datadog_module-<処理器アーキテクチャ>-<バージョン>.so.tgz
Nginx の設定¶
/usr/local/openresty/nginx/samples/nginx.conf に以下の内容を追加します。
# モジュールを読み込む
load_module modules/ngx_http_datadog_module.so;
worker_processes 1;
events {
worker_connections 1024;
}
http {
# Datakit URL を設定
datadog_agent_url http://localhost:9529;
# サービス名を設定
datadog_service_name openresty-demo;
# 環境名を設定
datadog_environment test;
# バージョン名を設定
datadog_version 1.0.0;
# サンプリング率を設定 0-1.0
datadog_sample_rate 1.0;
# タグを設定
datadog_tag foo bar;
include mime.types;
default_type application/octet-stream;
# $datadog_trace_id と $datadog_span_id により、ログへ trace_id と span_id を追加します。いずれも 16 進数です
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$datadog_trace_id" "$datadog_span_id"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
OpenResty の再起動¶
省略
DataKit 収集の有効化¶
ddtraceを有効にします
- DataKit を再起動します
OpenTelemetry の設定¶
ngx_otel_module モジュールのビルド¶
- ビルドツールと依存関係をインストールします
sudo apt update
sudo apt install cmake build-essential libssl-dev zlib1g-dev libpcre3-dev
sudo apt install pkg-config libc-ares-dev libre2-dev # gRPC 用
- OpenResty が使用している Nginx のバージョンとコンパイル設定を確認します
以下は出力例です。
openresty -V
#nginx version: openresty/1.25.3.2
#built with OpenSSL 1.1.1w 11 Sep 2023
#TLS SNI support enabled
#configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-O2 -DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/zlib/include -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl111/include' --add-module=../ngx_devel_kit-0.3.3 ············
- 対応バージョンの Nginx ソースコードをダウンロードします
git clone https://github.com/nginx/nginx.git
cd nginx
git checkout {OPENRESTY_NGINX_VERSION} # 対応するバージョン Tag に切り替え
{OPENRESTY_NGINX_VERSION} を対応するバージョン Tag に置き換えます。たとえば 1.25.3.2 では、対応するバージョン Tag は release-1.25.3 です。
- Nginx のビルド引数を設定します
nginx ソースコードのルートディレクトリで次のコマンドを実行します。
{NGINX_CONFIGURE_ARGUMENTS} は取得した configure arguments の内容で、--add-module に関連するパラメーター設定を削除したものです。
- ngx_otel_module モジュールのソースコードをダウンロードします
- ngx_otel_module モジュールをビルドします
build ディレクトリを作成してそこに移動してビルドします。ビルド後、build ディレクトリに ngx_otel_module.so ファイルが生成されます。
ngx_otel_module モジュールを有効化する¶
- ngx_otel_module.so モジュールファイルを nginx の modules ディレクトリへコピーします
mkdir -p /usr/local/openresty/nginx/modules/
cp ngx_otel_module.so /usr/local/openresty/nginx/modules/
- nginx.conf を設定します
OpenResty でトレース連携を有効にするには、Nginx のメイン設定ファイル /usr/local/openresty/nginx/conf/nginx.conf で ngx_otel_module モジュールを読み込み、設定項目を追加する必要があります。なお、ngx_otel_module モジュールは現在 gRPC 方式による送信のみをサポートしており、HTTP 方式による送信はサポートしていません。ngx_otel_module モジュールの詳細なパラメーター設定については、ngx_otel_module ドキュメント を参照してください。
load_module modules/ngx_otel_module.so; # ngx_otel_module を読み込む
...
http {
...
otel_exporter {
endpoint "127.0.0.1:4317"; # gRPC エンドポイント
#header Authentication "${GRPC_TOKEN}"; # 前提条件で取得した認証トークン
}
otel_trace on; # トレース連携を有効にする
otel_service_name openresty-otel; # アプリ名
otel_trace_context propagate; # 下流サービスへ Trace コンテキストを注入する
...
}
- nginx.conf の設定が正しいか確認します
- 設定を再読み込みします
# 方法1: openresty コマンドで設定を再読み込みする
openresty -s reload
# 方法2: nginx コマンドで設定を再読み込みする
/usr/local/openresty/nginx/sbin/nginx -s reload
DataKit 収集の有効化¶
- OpenTelemetry コレクターを有効にします
# コレクター設定ファイルのディレクトリへ移動
cd /usr/local/datakit/conf.d/samples
# 設定ファイルを有効化
cp opentelemetry.conf.sample opentelemetry.conf
- Datakit を再起動します