要点OTel の
filelog receiver を使用して、Nginx のアクセスログ (JSON フォーマット) を ClickStack で収集し、可視化します。デモデータセットとあらかじめ用意されたダッシュボードが含まれています。既存のNginxとのインテグレーション
前提条件
- ClickStack インスタンスが稼働していること
- 既存の Nginx インストール環境
- Nginx の設定ファイルを変更するためのアクセス権
1
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 ブロックに追加してください。2
カスタム OTel collector 設定を作成する
ClickStack では、カスタム設定ファイルをマウントし、環境変数を設定することで、ベースの OpenTelemetry Collector 設定を拡張できます。カスタム設定は、HyperDX が OpAMP 経由で管理するベース設定にマージされます。以下の内容で、nginx-monitoring.yaml という名前のファイルを作成します。- 標準的な場所にある Nginx のログを読み取ります
- JSON 形式のログエントリを解析します
- 元のログのタイムスタンプを抽出して保持します
- HyperDX でのフィルタリング用に source: Nginx 属性を追加します
- 専用のパイプラインを通じてログを ClickHouse エクスポーターにルーティングします
- カスタム設定では、新しい receiver とパイプラインのみを定義します
- プロセッサ (memory_limiter、transform、batch) とエクスポーター (clickhouse) は、ベースの ClickStack 設定ですでに定義されているため、ここでは名前で参照するだけです
- time_parser operator は、Nginx の time_local フィールドからタイムスタンプを抽出し、元のログ時刻を保持します
- パイプラインは、既存のプロセッサを介して、receiver から ClickHouse エクスポーターへデータをルーティングします
3
ClickStack でカスタム設定を読み込むように構成する
既存の ClickStack デプロイメントでカスタム collector の設定を有効にするには、以下を行う必要があります。- カスタム設定ファイルを /etc/otelcol-contrib/custom.config.yaml にマウントする
- 環境変数 CUSTOM_OTELCOL_CONFIG_FILE=/etc/otelcol-contrib/custom.config.yaml を設定する
- collector が読み取れるように、Nginx のログディレクトリをマウントする
オプション 1: Docker Compose
ClickStack のデプロイメント設定を更新します。オプション 2: Docker Run (オールインワンイメージ)
オールインワンイメージを docker run で使用する場合:ClickStack collector に、nginx のログファイルを読み取るための適切な権限があることを確認してください。本番環境では、読み取り専用マウント (:ro) を使用し、最小権限の原則に従ってください。
4
HyperDXでログを確認する
設定が完了したら、HyperDX にログインし、ログが取り込まれていることを確認します。- Search view に移動します
- ログソースを Logs に設定し、
request、request_time、upstream_response_timeなどのフィールドを持つログエントリが表示されていることを確認します
デモデータセット
1
サンプルデータセットをダウンロードする
- 実際のトラフィックパターンに近いログエントリ
- さまざまなエンドポイントと HTTP メソッド
- 正常なリクエストとエラーが混在したデータ
- 現実的なレスポンス時間とバイト数
2
3
4
HyperDX でログを確認する
ClickStack が起動したら、次の手順を実行します。- HyperDX を開いてアカウントにログインします (先にアカウントの作成が必要な場合があります)
- Search view に移動し、ログソースを
Logsに設定します - 時間範囲を 2025-10-19 11:00:00 - 2025-10-22 11:00:00 に設定します
タイムゾーン表示HyperDX はタイムスタンプをブラウザーのローカルタイムゾーンで表示します。デモデータの対象期間は UTC の 2025-10-20 11:00:00 - 2025-10-21 11:00:00 です。時間範囲を広めに設定しているため、どの地域からでもデモログを確認できます。ログが表示されたら、より見やすく可視化するために、範囲を 24 時間に絞ることができます。
ダッシュボードと可視化
1
ダッシュボード設定をする
2
あらかじめ用意されたダッシュボードをインポートする
- HyperDX を開き、Dashboards セクションに移動します。
- 右上の三点メニューから「Import Dashboard」をクリックします。
- nginx-logs-dashboard.json ファイルをアップロードし、「finish import」をクリックします。
3
事前設定済みの可視化を含むダッシュボードが作成されます
デモデータセットでは、時間範囲を 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 形式でログを出力していることを確認してください
- collector がログを読み取れることを確認する
- 有効な設定に filelog receiver が含まれていることを確認する
- collector のログにエラーがないか確認する