このガイドでは、OpenTelemetry を使用してセルフホスト型 NGINX を監視するための完全なセットアップ手順を説明します。以下の手順に従って、NGINX サーバー、 OpenTelemetry Collector 、およびNew Relicインテグレーションを設定します。
/* <Calloutariant=" important"> **始める前に**: [NGINX OpenTelemetry概要](/docs/OpenTelemetry/nginx/nginx-otel-overview/) を参照して、監視対象とこの統合の利点を理解してください。 **その他の NGINX 監視オプション:** - **NGINX Plus** を監視するには、[ OpenTelemetryで NGINX Plus を監視する](/docs/OpenTelemetry/nginx-plus/nginx-plus-otel/) を参照してください。 - ** Kubernetes上の NGINX を監視するには **、[ OpenTelemetryを使用してKubernetes上の NGINX を監視する](/docs/OpenTelemetry/nginx/nginx-otel- Kubernetes /) を参照してください。 </Callout> <Callout variant="tip"> **セットアップ時間**: 約 20 分 | **スキルレベル**: 中級 (Linux/NGINX の基本的な知識が必要) </Callout> */
あなたが始める前に
始める前に、次のものを用意してください。
設定を確認する
NGINX ステータス モジュールを確認します。
$nginx -V 2>&1 | grep -o with-http_stub_status_module
期待される出力: with-http_stub_status_module
OpenTelemetry Collector を確認します。
$otelcol-contrib --version
期待される出力: バージョン情報 (最低 v0.88.0 が必要)
ネットワーク接続をテストします。
$curl -I https://otlp.nr-data.net:443
期待される出力: HTTP 応答ヘッダー (接続拒否ではない)
NGINX サーバーからメトリクスを公開するようにstub_statusモジュールを構成します。 このモジュールは、OpenTelemetry が収集する基本的なパフォーマンス統計を提供します。
この設定を NGINX 設定ファイル (/etc/nginx/nginx.conf) に追加します。
NGINX 設定をテストします。
テストに合格したら、NGINX をリロードします。
エンドポイントをテストします。
$curl http://127.0.0.1:8080/nginx_status
期待される出力:
server accepts handled requests
Reading: 0 Writing: 1 Waiting: 0
HTTP 応答をテストします。
$curl -I http://127.0.0.1:8080/nginx_status
期待される出力: 次のように始まる必要があります HTTP/1.1 200 OK
NGINX スタブ ステータス エンドポイントからメトリクスを取得し、 New Relicに送信するようにOpenTelemetry Collector設定します。
OpenTelemetry Collector は、NGINX 監視に 3 つの主要コンポーネントを使用します。
- レシーバー- NGINXスタブステータスエンドポイントに接続してメトリクスを収集します
- プロセッサ- 効率的な転送のためにサーバ識別とバッチメトリクスを追加します
- エクスポーター- 処理されたメトリクスを OTLP HTTP 経由で New Relic アカウントに送信します。
設定を編集する前に、次の 2 つの重要な情報が必要です。
スタブ ステータス URL - ステップ 1 から (デフォルト: http://127.0.0.1:8080/nginx_status)
一意のデプロイメント名- この特定の NGINX サーバーを識別する名前を選択します (例: production-web-01 、 staging-api 、 prod-lb-01)
デプロイメント名は New Relic ダッシュボードに表示され、複数の NGINX インスタンスがある場合に特定のサーバーを識別するのに役立ちます。
重要
編集する前に:既存の設定をバックアップします: sudo cp /etc/otelcol-contrib/config.yaml /etc/otelcol-contrib/config.yaml.backup
Collector設定ファイル (通常は/etc/otelcol-contrib/config.yaml) を編集し、次のセクションを追加します。 すでにレシーバー、プロセッサ、またはエクスポーターのセクションがある場合は、これらを既存の設定とマージします。
1. NGINX レシーバーを設定します。
endpoint: http://127.0.0.1:8080/nginx_status
nginx.connections_accepted:
nginx.connections_handled:
nginx.connections_current:
2. メタデータとバッチ処理用のプロセッサを構成します。
- key: nginx.server.endpoint
value: "http://127.0.0.1:8080/nginx_status"
- key: nginx.deployment.name
value: "production-web-01"
- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))
3. New Relic エクスポーターを設定します。
endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}
api-key: ${env:NEWRELIC_LICENSE_KEY}
4. すべてをパイプラインで接続します。
processors: [resourcedetection, resource, batch, transform/nginx_metrics]
exporters: [otlphttp/newrelic]
上記の設定で以下の値を置き換えます。
エンドポイント URL : http://127.0.0.1:8080/nginx_statusステップ 1 のスタブステータス設定に合わせて変更します
デプロイメント名: production-web-01この NGINX サーバーの一意の識別子に置き換えます
適切なデプロイメント名の選択:
production-web-01 、 staging-api 、または prod-lb-01- New Relic アカウント内のすべての NGINX サーバーで一意である必要があります
- この名前はダッシュボードに表示され、特定のサーバーを識別するのに役立ちます
- フィルタリングやアラートを簡単に行えるよう、短くても意味のあるものにしましょう。
ステップ3: 認証を設定する
OpenTelemetry Collector が New Relic アカウントにデータを送信できるように、安全な認証を構成します。この手順では、資格情報を安全に保つために環境変数を設定します。
認証を構成する前に、次の 2 つの情報を収集します。
** ライセンスキー:**
- one.newrelic.com → API Keysにアクセスしてください
- 「Ingest - License」セクションを見つけます → Show key [キーを表示]をクリックします
- ライセンスキーをコピーします(「NRAK-...」で始まります)。
** OTLP エンドポイント:** New Relicリージョンに適切なエンドポイントを使用します。 お住まいの地域でエンドポイントとサポートされているポートの完全なリストについては、「エンドポイント、ポート、およびプロトコルの構成」を参照してください。 例えば:
- 米国地域:
https://otlp.nr-data.net:4318 - EU地域:
https://otlp.eu01.nr-data.net:4318
systemd オーバーライド ディレクトリを作成します。
$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d
環境設定ファイルを作成します。
$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf
$Environment="NEWRELIC_OTLP_ENDPOINT=https://otlp.nr-data.net:4318"
$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY_HERE"
資格情報を使用して設定を更新します。
https://otlp.nr-data.net:4318リージョンのエンドポイントに置き換えますYOUR_LICENSE_KEY_HERE上記の実際のライセンスキーに置き換えます
ステップ4: 監視を開始する
すべての設定が完了したら、OpenTelemetry Collector を起動し、データが New Relic に流れていることを確認します。
設定の変更を適用します。
$sudo systemctl daemon-reload
$sudo systemctl restart otelcol-contrib.service
サービスが実行されていることを確認します。
$sudo systemctl status otelcol-contrib.service
期待される出力: Active: active (running) (最近のエラーなし)
起動ログを確認します。
$sudo journalctl -u otelcol-contrib.service -n 20
次の成功指標に注目してください。
- ✅
"Everything is ready. Begin running and processing data." - ✅
"Scraping metrics" - NGINX からの収集に成功しました - ✅
"Exporting metrics" - New Relic への送信に成功しました
テスト トラフィックを生成します (メトリクスを作成するため)。
初期データが New Relic に表示されるまで待ってから、 NGINX ダッシュボードにアクセスしてデータ収集を確認します。
ステップ 5: (オプション) NGINX ログを転送する
メトリクスに加えて、NGINX のアクセスとエラー ログをNew Relicに送信して、包括的な監視とトラブルシューティングを行うことができます。 これらのログはコア NGINX メトリクスを補完し、詳細なリクエスト レベルのインサイトを提供します。
ヒント
次の場合は、この手順をスキップしてください。基本的な NGINX メトリクスのみが必要で、詳細なリクエスト ログは必要ありません。
まず、解析やクエリが簡単に行える JSON 形式のログを出力するように NGINX を構成します。
これを NGINX 設定 (/etc/nginx/nginx.conf) に追加します:
log_format json_combined escape=json
'"remote_addr":"$remote_addr",'
'"bytes_sent":$body_bytes_sent,'
'"request_time":$request_time,'
'"referer":"$http_referer",'
'"user_agent":"$http_user_agent"'
access_log /var/log/nginx/access.log json_combined;
error_log /var/log/nginx/error.log warn;
変更を適用するには、NGINX をリロードします。
$sudo nginx -t && sudo nginx -s reload
これらのセクションを/etc/otelcol-contrib/config.yamlに追加します:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
transform/nginx_access_logs:
- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))
- set(attributes["logtype"], "nginx")
transform/nginx_error_logs:
- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))
- set(attributes["logtype"], "nginx-error")
processors: [resourcedetection, resource, batch, transform/nginx_metrics]
exporters: [otlphttp/newrelic]
receivers: [filelog/nginx_access]
processors: [resource, batch, transform/nginx_access_logs]
exporters: [otlphttp/newrelic]
receivers: [filelog/nginx_error]
processors: [resource, batch, transform/nginx_error_logs]
exporters: [otlphttp/newrelic]
Collector NGINX ログ ファイルを読み取ることを許可します。
$sudo usermod -a -G adm otelcol-contrib
$sudo chmod 644 /var/log/nginx/access.log
$sudo chmod 644 /var/log/nginx/error.log
Collectorを再起動します:
$sudo systemctl restart otelcol-contrib.service
New Relic でデータを表示する
セットアップが完了し、データが流れるようになると、 New Relicダッシュボードで NGINX メトリクスにアクセスし、カスタム アラートを作成できます。
ダッシュボードへのアクセス、NRQL を使用したデータのクエリ、アラートの作成に関する詳細な手順については、 「NGINX データの検索とクエリ」を参照してください。
トラブルシューティング
セットアップ中に問題が発生した場合は、このトラブルシューティング ガイドを使用して一般的な問題を診断し、解決してください。
404 Not Found が表示される場合:
$curl http://127.0.0.1:8080/nginx_status
解決策:
- ロケーションパスがリクエストURLと一致していることを確認してください
- 設定が正しいサーバーブロックに追加されたことを確認します
sudo nginx -T | grep -A5 nginx_statusを実行して設定が読み込まれていることを確認します
403 Forbidden が表示される:
- ローカルホスト(127.0.0.1)からテストしていることを確認してください
- NGINX 設定の
allow / denyディレクティブを確認してください - 他のアクセス制限によってリクエストがブロックされていないことを確認します
接続拒否:
- NGINX が実行されているかどうかを確認します。
sudo systemctl status nginx - ポート 8080 がブロックされていないことを確認します。
sudo netstat -tlnp | grep :8080 - 該当する場合はファイアウォールルールを確認してください
サービスステータスを確認します:
$sudo systemctl status otelcol-contrib.service
$sudo journalctl -u otelcol-contrib.service -n 50
一般的な原因と修正方法:
- YAML 構文エラー- インデントと構文の問題を修正
- 環境変数が見つかりません- 環境ファイルに資格情報が設定されていることを確認してください
- ファイル権限の問題- 実行
sudo chown otelcol-contrib:otelcol-contrib /etc/otelcol-contrib/config.yaml - 無効なエンドポイント URL - NGINX エンドポイントと New Relic OTLP エンドポイントを確認してください
- 不足しているコンポーネント設定- サービス パイプライン セクションで参照されているすべてのレシーバー、プロセッサ、およびエクスポーターが、上記のそれぞれの設定セクションで実際に定義されていることを確認します。
修正後に再起動します:
$sudo systemctl restart otelcol-contrib.service
ステップバイステップの診断:
NGINX スタブ ステータスが機能していることを確認します。
$curl http://127.0.0.1:8080/nginx_status
接続統計を返す必要があります。
Collectorが実行中であり正常であることを確認します。
$sudo systemctl status otelcol-contrib.service
$sudo journalctl -u otelcol-contrib -n 20
ログには、 OpenTelemetry Collectorの設定または実行時の問題がある場合の詳細なコンテキストが提供されます。
NRQL でデータを確認します。
FROM Metric SELECT * WHERE nginx.deployment.name LIKE '%production%' LIMIT 1
New Relic にログが表示されない:
$sudo journalctl -u otelcol-contrib -f | grep -i "filelog\|error"
よくある問題:
- ファイル権限エラー- コレクターを adm グループに追加:
sudo usermod -a -G adm otelcol-contrib - ファイルパスが間違っています- 設定内のログファイルの場所を確認してください
ヘルプを受ける
問題が引き続き発生する場合:
- New RelicのOpenTelemetryのベストプラクティスを確認する
- 同様の問題については、 New Relic Explorer Hub で検索してください。
次のステップ
データについて詳しくはこちらをご覧ください:
関連する監視を調べます: