ClickStack による Nginx ログのモニタリング
このガイドでは、OpenTelemetry collector を構成して Nginx のアクセスログをインジェストし、ClickStack で Nginx をモニタリングする方法を説明します。以下のことを行います:
- Nginx を JSON 形式のログを出力するように設定する
- ログのインジェスト用にカスタム OTel collector 設定を作成する
- カスタム設定を使用して ClickStack をデプロイする
- あらかじめ用意されたダッシュボードを使って Nginx のメトリクスを可視化する
本番環境の Nginx を設定する前に連携をテストしたい場合は、サンプルログを含むデモ データセットを利用できます。
所要時間: 5〜10 分
既存の Nginx との統合
このセクションでは、ClickStack の OTel collector の設定を変更し、既存の Nginx 環境から ClickStack にログを送信するように構成する方法について説明します。 既存環境を設定する前に統合の動作を試してみたい場合は、次のセクションにある事前構成済みの環境とサンプルデータを使用してテストできます。
前提条件
- 稼働中の ClickStack インスタンス
- 既存の Nginx 環境
- Nginx 設定ファイルを編集可能な権限
Nginxログフォーマットの設定
まず、ログの解析を容易にするため、NginxがJSON形式でログを出力するように設定します。nginx.confに次のログフォーマット定義を追加してください:
nginx.conf ファイルは通常、以下の場所に配置されています:
- Linux(apt/yum):
/etc/nginx/nginx.conf - macOS(Homebrew):
/usr/local/etc/nginx/nginx.confまたは/opt/homebrew/etc/nginx/nginx.conf - Docker: 設定は通常、ボリュームとしてマウントされます
このログフォーマット定義を http ブロックに追加します:
この変更を行った後、Nginxをリロードしてください。
カスタムOTel collector設定を作成する
ClickStackでは、カスタム設定ファイルをマウントし環境変数を設定することで、ベースのOpenTelemetry Collector設定を拡張できます。カスタム設定は、HyperDXがOpAMP経由で管理するベース設定にマージされます。
以下の設定で nginx-monitoring.yaml という名前のファイルを作成します:
この設定では:
- 標準の保存場所から Nginx のログを読み取ります
- JSON 形式のログエントリを解析します
- 元のログのタイムスタンプを抽出して保持します
- HyperDX でのフィルタリング用に source: Nginx 属性を追加します
- 専用パイプライン経由でログを ClickHouse エクスポーターに送信する
- カスタム設定では、新しいレシーバーとパイプラインだけを定義します
- processors(memory_limiter、transform、batch)および exporters(clickhouse)は、すでにベースの ClickStack 構成で定義済みなので、名前を指定して参照するだけで済みます
- time_parser オペレーターは、元のログのタイムスタンプを保持するために、Nginx の time_local フィールドからタイムスタンプを抽出します
- パイプラインは、既存のprocessorsを介して、receiversからClickHouse exporterへデータをルーティングします
ClickStackにカスタム設定を読み込むよう構成する
既存のClickStackデプロイメントでカスタムコレクター設定を有効にするには、次の手順を実行してください:
- カスタム設定ファイルを /etc/otelcol-contrib/custom.config.yaml にマウントします
- 環境変数 CUSTOM_OTELCOL_CONFIG_FILE に /etc/otelcol-contrib/custom.config.yaml を設定します
- コレクターが読み込めるように Nginx のログディレクトリをマウントします
オプション1: Docker Compose
ClickStackのデプロイメント設定を更新します:
オプション2:Docker Run(オールインワンイメージ)
docker runでオールインワンイメージを使用する場合:
ClickStackコレクターがnginxログファイルを読み取るための適切な権限を持っていることを確認してください。本番環境では、読み取り専用マウント(:ro)を使用し、最小権限の原則に従ってください。
HyperDXでのログの確認
設定完了後、HyperDXにログインし、ログが正常に取り込まれていることを確認してください:
- 検索ビューに移動します
- ソースを Logs に設定し、
request、request_time、upstream_response_timeなどのフィールドを含むログエントリが表示されていることを確認します。
以下のような表示が確認できます:


デモ用データセット
本番環境を設定する前に nginx 連携をテストしたいユーザー向けに、現実的なトラフィックパターンを持つ事前生成済みの nginx アクセスログのサンプルデータセットを提供しています。
サンプルデータセットをダウンロードする
このデータセットには以下が含まれます:
- 現実的なトラフィックパターンを持つログエントリー
- さまざまなエンドポイントと HTTP メソッド
- 成功したリクエストとエラーの混在
- 実運用に近いレスポンスタイムとバイト数
HyperDX でログを確認する
ClickStack が起動したら、次の手順を実行します。
- HyperDX を開き、アカウントにログインします(まだアカウントがない場合は作成してください)
- 検索ビューに移動し、ソースを
Logsに設定します - 時間範囲を 2025-10-19 11:00:00 - 2025-10-22 11:00:00 に設定します
検索ビューには、次のように表示されるはずです。
HyperDX はタイムスタンプをブラウザのローカルタイムゾーンで表示します。デモデータは 2025-10-20 11:00:00 - 2025-10-21 11:00:00 UTC の期間をカバーしています。広めの時間範囲を指定することで、どのロケーションからでもデモログを確認できるようにしています。ログが確認できたら、可視化を見やすくするために時間範囲を 24 時間程度に絞り込むことができます。


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

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

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

トラブルシューティング
カスタム構成が読み込まれない
- 環境変数 CUSTOM_OTELCOL_CONFIG_FILE が正しく設定されているか確認する
- カスタム設定ファイルが /etc/otelcol-contrib/custom.config.yaml にマウントされていることを確認する
- カスタム設定の内容を表示して、正しく読み取れることを確認する
HyperDX にログが表示されない
- nginx が JSON ログを書き出していることを確認する
- コレクターがログを読み取れていることを確認する
- 実際の有効な構成に
filelogレシーバーが含まれていることを確認する
- コレクターのログにエラーがないか確認する
次のステップ
さらに分析を進めたい場合は、ダッシュボードを使って次のようなことを試してみてください。
- 重要なメトリクス(エラーレート、レイテンシのしきい値)に対するアラートを設定する
- 特定のユースケース向け(API モニタリング、セキュリティイベントなど)に追加のダッシュボードを作成する