ClickStack を使った Nginx トレースのモニタリング
このガイドでは、既存の Nginx インストールから分散トレースを収集し、ClickStack で可視化する方法を説明します。次の内容を学びます:
- Nginx に OpenTelemetry モジュールを追加する
- Nginx を設定して ClickStack の OTLP エンドポイントにトレースを送信する
- HyperDX にトレースが表示されていることを確認する
- あらかじめ用意されたダッシュボードを使ってリクエスト性能(レイテンシ、エラー、スループット)を可視化する
本番環境の Nginx を設定する前に統合をテストしたい場合のために、サンプルトレースを含むデモ用データセットも用意されています。
所要時間:5〜10 分
既存の Nginx との統合
このセクションでは、OpenTelemetry モジュールをインストールし、ClickStack にトレースを送信するように設定することで、既存の Nginx 環境に分散トレーシングを追加する方法を説明します。 既存の環境を設定する前に統合を試してみたい場合は、次のセクションにある事前構成済みのセットアップとサンプルデータを使ってテストできます。
前提条件
- OTLP エンドポイントにアクセス可能な ClickStack インスタンスが稼働していること(ポート 4317/4318)
- 既存の Nginx インストール(バージョン 1.18 以上)
- Nginx 設定を変更するための root または sudo アクセス権
- ClickStack のホスト名または IP アドレス
OpenTelemetry Nginx モジュールをインストールする
Nginx にトレース機能を追加する最も簡単な方法は、OpenTelemetry 対応が組み込まれた公式 Nginx イメージを使用することです。
nginx:otel イメージを使用する
現在使用している Nginx イメージを、OpenTelemetry 対応バージョンに置き換えます:
このイメージには、ngx_otel_module.so が事前インストールされており、すぐに使用できます。
Docker 以外で Nginx を実行している場合は、手動インストール手順について OpenTelemetry Nginx ドキュメント を参照してください。
Nginx を ClickStack へトレースを送信するように構成する
nginx.conf ファイルに OpenTelemetry の設定を追加します。この設定でモジュールを読み込み、トレースを ClickStack の OTLP エンドポイントへ送信します。
まず、API キーを取得します:
- ClickStack の URL で HyperDX を開く
- Settings → API Keys に移動する
- Ingestion API Key をコピーする
- 環境変数として設定する:
export CLICKSTACK_API_KEY=your-api-key-here
次を nginx.conf に追加します:
Nginx を Docker で実行している場合は、環境変数をコンテナに渡します:
<clickstack-host> を、ClickStack インスタンスのホスト名または IP アドレスに置き換えてください。
- ポート 4317 は、Nginx モジュールが使用する gRPC エンドポイントです
- otel_service_name は、Nginx インスタンスを表すわかりやすい名前にしてください(例: "api-gateway", "frontend-proxy")
- HyperDX で識別しやすくするために、環境に合わせて otel_service_name を変更してください
設定内容の理解
トレースされる内容: Nginx への各リクエストごとに、次を示すトレーススパンが作成されます:
- リクエストメソッドとパス
- HTTP ステータスコード
- リクエストの処理時間
- タイムスタンプ
スパン属性:
otel_span_attr ディレクティブは、各トレースにメタデータを追加し、HyperDX 上でステータスコード、メソッド、ルートなどでリクエストをフィルタリングおよび分析できるようにします。
これらの変更を行った後、Nginx の設定をテストします:
テストに成功したら、Nginx をリロードします:
HyperDX でトレースを検証する
設定が完了したら、HyperDX にログインしてトレースが送信されていることを確認します。次のような表示が見えるはずです。トレースが表示されない場合は、時間範囲の調整を試してください:

デモ用データセット
本番システムを設定する前に nginx トレース連携をテストしたいユーザー向けに、現実的なトラフィックパターンを持つ事前生成済みの nginx トレースのサンプルデータセットを提供しています。
ClickStack を起動する
まだ ClickStack を起動していない場合は、次のコマンドで起動してください:
続行する前に、ClickStack が完全に初期化されるまで約 30 秒待ちます。
- ポート 8080: HyperDX の Web インターフェイス
- ポート 4317: OTLP gRPC エンドポイント (nginx モジュールで使用)
- ポート 4318: OTLP HTTP エンドポイント (デモトレースで使用)
サンプルデータセットをダウンロードする
サンプルトレースファイルをダウンロードし、タイムスタンプを現在時刻に更新します:
このデータセットには以下が含まれます:
- 現実的なタイミングを持つ 1,000 個のトレーススパン
- 多様なトラフィックパターンを持つ 9 種類のエンドポイント
- 約 93% の成功率 (200)、約 3% のクライアントエラー (404)、約 4% のサーバーエラー (500)
- 10ms 〜 800ms の範囲のレイテンシ
- 元のトラフィックパターンを保持したまま、現在時刻にシフト済み
トレースを ClickStack に送信する
API key を環境変数として設定します (まだ設定していない場合):
API key を取得する:
- ClickStack の URL で HyperDX を開きます
- Settings → API Keys に移動します
- Ingestion API Key をコピーします
その後、トレースを ClickStack に送信します:
このデモでは、ClickStack が localhost:4318 上でローカルに動作していることを前提としています。リモート環境の場合は、localhost を ClickStack のホスト名に置き換えてください。
{"partialSuccess":{}} のようなレスポンスが表示されれば、トレースが正常に送信されたことを示しています。すべての 1,000 件のトレースが ClickStack にインジェストされます。
HyperDX でトレースを確認する
- HyperDX を開き、アカウントにログインします (必要に応じてアカウントを作成してください)
- Search ビューに移動し、ソースを
Tracesに設定します - タイムレンジを 2025-10-25 13:00:00 - 2025-10-28 13:00:00 に設定します
Search ビューでは次のように表示されるはずです:
HyperDX はタイムスタンプをブラウザのローカルタイムゾーンで表示します。デモデータは 2025-10-26 13:00:00 - 2025-10-27 13:00:00 (UTC) の範囲をカバーしています。広めのタイムレンジを指定することで、どの場所からアクセスしてもデモトレースを確認できるようにしています。トレースが確認できたら、24 時間の範囲に狭めて、より見やすい可視化にすることができます。

ダッシュボードと可視化
ClickStack でトレースの監視を始めやすくするために、トレースデータ向けの基本的な可視化を提供しています。
あらかじめ用意されたダッシュボードをインポートする
- HyperDX を開き、[Dashboards]セクションに移動します。
- 右上の三点リーダーアイコンから「Import Dashboard」をクリックします。

nginx-traces-dashboard.jsonファイルをアップロードし、「Finish import」をクリックします。

すべての可視化が事前設定された状態でダッシュボードが作成されます。
デモデータセットを使用する場合、時間範囲を 2025-10-26 13:00:00 - 2025-10-27 13:00:00 (UTC) に設定します(ローカルタイムゾーンに応じて調整してください)。インポートしたダッシュボードには、デフォルトでは時間範囲が指定されていません。

トラブルシューティング
HyperDX にトレースが表示されない
nginx モジュールがロードされていることを確認してください:
OpenTelemetry モジュールへの参照が表示されているはずです。
ネットワーク接続を確認する:
これで OTLP の gRPC エンドポイントに正常に接続できるはずです。
API キーが設定されていることを確認する:
空ではない API キーが出力されていることを確認します。
nginx のエラーログを確認する:
OpenTelemetry 関連のエラーが発生していないか確認します。
nginx がリクエストを受信していることを確認する:
次のステップ
さらに深く活用したい場合は、ダッシュボードで次のようなことを試してみてください。
- 重要なメトリクス(エラー率、レイテンシのしきい値)に対するアラートを設定する
- 特定のユースケース向けに追加のダッシュボードを作成する(API モニタリング、セキュリティイベントなど)