OpenTelemetry Collectorを使用してホスト上で実行されている NGINX Plus サーバーを監視し、メトリクスとテレメトリーデータをNew Relicに送信します。
この統合では、 OpenTelemetry prometheusreceiverとnginx-prometheus-exporterを利用して、NGINX Plus のパフォーマンス メトリクス、接続統計、サーバーの健全性を監視します。 NGINX Plus の豊富な HTTP API 、標準の NGINX の基本的なスタブ ステータス モジュールと比較して、はるかに詳細なメトリックを提供します。

ダッシュボードは、 New Relic NGINX OpenTelemetryモニター クイックスタートから入手できます。
あなたが始める前に
始める前に、次のものを用意してください。
設定を確認する
NGINX Plusのバージョンを確認します。
$nginx -V 2>&1 | grep -o "nginx/[0-9.]*"
期待される出力: nginx/1.25.0以上 (R13+)
OpenTelemetry Collector を確認します。
$otelcol-contrib --version
期待される出力: バージョン情報 (最低 v0.88.0 が必要)
ネットワーク接続をテストします。
$curl -I https://otlp.nr-data.net:4318/v1/metrics
$curl -I https://otlp.eu01.nr-data.net:4318/v1/metrics
期待される出力: HTTP/2 405 (許可されていないメソッドが期待されます)
NGINX Plus サーバーからメトリクスを公開するようにHTTP APIモジュールを構成して有効にします。
HTTP API設定をnginx.confファイルに追加します。 通常、これをhttpブロック内に追加します。
nginx.confを更新した後、サービスをテストして再読み込みします。
$sudo nginx -t && sudo nginx -s reload
設定内に公開されているAPIエンドポイントのパス(バージョン含む)を確認してください。 完全なAPIエンドポイント パス (先頭のスラッシュを除く) とそれにサービスを提供するポートを記録します。 一般的なデフォルトはポート8080のapi/9です。
curlを使用して、 APIエンドポイントに到達できることを確認します。
$curl -I http://127.0.0.1:8080/api/9 2>/dev/null | head -n 1 | cut -d$' ' -f1,2
期待される出力:
異なる応答が表示された場合は、NGINX Plus の設定を確認し、API モジュールが適切に有効になっていることを確認してください。
NGINX Plus Prometheus エクスポーターからメトリクスを取得し、 New Relicに送信するようにOpenTelemetry Collector構成します。
NGINX Prometheus エクスポーターをインストールして構成し、NGINX Plus APIメトリクスを Prometheus 形式で公開します。
$wget https://github.com/nginx/nginx-prometheus-exporter/releases/latest/download/nginx-prometheus-exporter_linux_amd64.tar.gz
$tar -xzf nginx-prometheus-exporter_linux_amd64.tar.gz
$sudo mv nginx-prometheus-exporter /usr/local/bin/
$nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1:8080/api
デフォルトでは、エクスポータはポート9113で実行され、メトリクスを/metricsで公開します。
OpenTelemetry Collector設定を更新します (通常は/etc/otelcol-contrib/config.yamlにあります)。 以下の設定スニペット内:
New Relic アカウントでこの NGINX Plus サーバーを識別するために、 nginx.deployment.name値を一意の名前で更新します。
Prometheus エクスポーターのホストとポートに合わせてtargets値を更新します (デフォルトは127.0.0.1:9113です)
APIステータスパスとポートに合わせてnginx.server.endpoint値を更新してください
追加のメトリクスを取り込むには、要件に応じてfilter/nginx_metricsを更新します。
以下のスニペットからのレシーバー、プロセッサー、エクスポーター、およびサービス パイプラインを現在の設定にマージします。
- targets: ['127.0.0.1:9113']
- "nginxplus_connections_.*"
- "nginxplus_http_requests_.*"
- "nginxplus_location_zone_.*"
- "nginxplus_stream_server_.*"
- "nginxplus_upstream_.*"
- "nginxplus_stream_upstream_.*"
- "nginxplus_stream_zone_sync_zone_.*"
- "nginxplus_resolver_.*"
- "nginxplus_limit_request_.*"
- "nginxplus_limit_connection_.*"
- "nginxplus_stream_limit_connection_.*"
- key: nginx.server.endpoint
- key: nginx.deployment.name
- set(attributes["nginx.display.name"], Concat(["server", attributes["nginx.deployment.name"]], ":"))
- delete_key(attributes, "service.name")
endpoint: ${env:NEWRELIC_OTLP_ENDPOINT}
api-key: ${env:NEWRELIC_LICENSE_KEY}
processors: [batch, filter/nginx_metrics, resourcedetection, resource/nginx, transform/nginx]
exporters: [otlphttp/newrelic]
ファイルを保存し、 otelcol-contribシステム ユーザーが読み取れることを確認します。
ステップ3: コレクターの環境変数を設定する
エクスポーターが認証できるように、New Relic と OTLP エンドポイントをコレクター サービスに挿入します。
systemd オーバーライド ディレクトリを作成します。
$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d
OTLP エンドポイントを使用してenvironment.confを書き込みます。YOUR_LICENSE_KEY New Relicライセンスキーに置き換え、 YOUR_OTLP_ENDPOINT地域の適切なエンドポイントに置き換えます。 適切なエンドポイントを選択するには、OTLP エンドポイント設定ドキュメントを参照してください。
$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf
$Environment="NEWRELIC_OTLP_ENDPOINT=YOUR_OTLP_ENDPOINT"
$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY"
systemd をリロードし、コレクターを再起動します。
$sudo systemctl daemon-reload
$sudo systemctl restart otelcol-contrib.service
ステップ4: データ収集を確認する
OpenTelemetry Collector NGINX Plus メトリックを正常に収集し、 New Relicに送信していることを確認します。
コレクター ログを監視して、エラーなしで実行されていることを確認します。
$sudo journalctl -u otelcol-contrib.service -n 20
次の成功指標に注目してください。
- ✅
"Everything is ready. Begin running and processing data." - ✅
"Scraping metrics" - Prometheus エクスポーターから正常に収集しました - ✅
"Exporting metrics" - New Relic への送信に成功しました
メトリクスを作成するためのテスト トラフィックを生成します。
ステップ 5: (オプション) NGINX ログを転送する
メトリクスと一緒にログイベントが必要な場合は、コレクター設定を拡張してアクセスとエラーログを含めます。
NGINX Plusのログ形式を設定する
ログを転送する前に、構造化されたログ形式を使用するように NGINX Plus を構成します。 アクセス ログとエラー ログの構成に関するガイダンスについては、 NGINX ログのドキュメントを参照してください。
ログ転送用に OpenTelemetry Collector を構成する
NGINX アクセスとエラーログファイルへのフルパスをメモします。 デフォルトは通常/var/log/nginx/access.logと/var/log/nginx/error.logです。
/etc/otelcol-contrib/config.yamlを更新して、 filelogレシーバーとログ パイプラインを追加します。
filelog/nginx_access_logs:
- /var/log/nginx/access.log
filelog/nginx_error_logs:
- /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: [batch, filter/nginx_metrics, resourcedetection, resource/nginx, transform/nginx_metrics]
exporters: [otlphttp/newrelic]
receivers: [filelog/nginx_access_logs]
processors: [batch, resource/nginx, transform/nginx_access_logs]
exporters: [otlphttp/newrelic]
receivers: [filelog/nginx_error_logs]
processors: [batch, resource/nginx, transform/nginx_error_logs]
exporters: [otlphttp/newrelic]
otelcol-contribユーザーにログファイルへの読み取りアクセスを許可します。
$sudo usermod -a -G adm otelcol-contrib
$sudo chmod 644 /var/log/nginx/access.log
$sudo chmod 644 /var/log/nginx/error.log
変更を適用するには、コレクターを再起動します。
$sudo systemctl restart otelcol-contrib
データを見つけて使用する
- one.newrelic.com > Integrations & Agentsに移動します。
- Dashboardsを選択し、 NGINX OTel overview [NGINX OTel 概要]ダッシュボード をクリックします。
- ポップアップウィンドウでアカウントを選択します。
- 「ダッシュボードの表示」をクリックし、New Relic で NGINX Plus データを表示します。
NGINX Plus メトリクスは、 Metricイベント タイプに関連付けられています。 このデータは、トラブルシューティングの目的で、またはカスタム チャートやダッシュボードを作成するために書き込むことができます。
メトリクスが収集されました
OpenTelemetry Collector 、 NGINX Prometheus エクスポーターからメトリクスを取得し、NGINX Plus HTTP APIメトリクスを Prometheus 形式で公開します。
以下は、利用可能な NGINX Plus メトリクスです。
メトリック | 説明 | タイプ |
|---|
nginxplus_connections_accepted
| 承認されたクライアント接続 | サム |
nginxplus_connections_active
| アクティブなクライアント接続 | ゲージ |
nginxplus_connections_dropped
| クライアント接続が切断されました | サム |
nginxplus_connections_idle
| アイドル状態のクライアント接続 | ゲージ |
メトリック | 説明 | タイプ |
|---|
nginxplus_http_requests_total
| 合計HTTP requests | サム |
nginxplus_http_requests_current
| 現在のHTTP requests | ゲージ |
メトリック | 説明 | タイプ |
|---|
nginxplus_ssl_handshakes
| SSLハンドシェイクが成功しました | サム |
nginxplus_ssl_handshakes_failed
| SSLハンドシェイクの失敗 | サム |
nginxplus_ssl_session_reuses
| SSLハンドシェイク中のセッションの再利用 | サム |
メトリック | 説明 | タイプ |
|---|
nginxplus_server_zone_processing
| 現在処理中のクライアントrequests | ゲージ |
nginxplus_server_zone_requests
| クライアントrequestsの合計 | サム |
nginxplus_server_zone_responses
| クライアントに送信された回答の総数 | サム |
nginxplus_server_zone_responses_codes
| コード別にクライアントに送信された応答の合計数 | サム |
nginxplus_server_zone_discarded
| 応答を送信せずに完了したリクエスト | サム |
nginxplus_server_zone_received
| クライアントから受信したバイト数 | サム |
nginxplus_server_zone_sent
| クライアントに送信されたバイト数 | サム |
nginxplus_server_ssl_handshakes
| SSLハンドシェイクが成功しました | サム |
nginxplus_server_ssl_handshakes_failed
| SSLハンドシェイクの失敗 | サム |
nginxplus_server_ssl_session_reuses
| SSLハンドシェイク中のセッションの再利用 | サム |
メトリック | 説明 | タイプ |
|---|
nginxplus_location_zone_requests
| クライアントrequestsの合計 | サム |
nginxplus_location_zone_responses
| クライアントに送信された回答の総数 | サム |
nginxplus_location_zone_responses_codes
| コード別にクライアントに送信された応答の合計数 | サム |
nginxplus_location_zone_discarded
| 応答を送信せずに完了したリクエスト | サム |
nginxplus_location_zone_received
| クライアントから受信したバイト数 | サム |
nginxplus_location_zone_sent
| クライアントに送信されたバイト数 | サム |
メトリック | 説明 | タイプ |
|---|
nginxplus_cache_size
| キャッシュの合計サイズ | ゲージ |
nginxplus_cache_max_size
| キャッシュの最大サイズ | ゲージ |
nginxplus_cache_cold
| キャッシュはコールドとみなされますか | ゲージ |
nginxplus_cache_hit_responses
| キャッシュのヒット総数 | サム |
nginxplus_cache_hit_bytes
| キャッシュのヒットから返された合計バイト数 | サム |
nginxplus_cache_stale_responses
| 古いキャッシュのヒット総数 | サム |
nginxplus_cache_stale_bytes
| 古いキャッシュのヒットから返された総バイト数 | サム |
nginxplus_cache_updating_responses
| キャッシュ更新中のキャッシュのヒット総数 | サム |
nginxplus_cache_updating_bytes
| キャッシュの更新中にキャッシュから返されたバイトの総数 | サム |
nginxplus_cache_revalidated_responses
| キャッシュ再検証の総数 | サム |
nginxplus_cache_revalidated_bytes
| キャッシュ再検証から返されたバイトの総数 | サム |
nginxplus_cache_miss_responses
| キャッシュミスの総数 | サム |
nginxplus_cache_miss_bytes
| キャッシュミスから返されたバイトの総数 | サム |
nginxplus_cache_expired_responses
| TTL が期限切れになったキャッシュのヒットの合計数 | サム |
nginxplus_cache_expired_bytes
| 期限切れの TTL でキャッシュのヒットから返された合計バイト数 | サム |
nginxplus_cache_expired_responses_written
| 期限切れの TTL がキャッシュに書き込まれたキャッシュのヒットの総数 | サム |
nginxplus_cache_expired_bytes_written
| TTL が期限切れになったキャッシュのヒットからキャッシュに書き込まれた合計バイト数 | サム |
nginxplus_cache_bypass_responses
| キャッシュバイパスの総数 | サム |
nginxplus_cache_bypass_bytes
| キャッシュバイパスから返されたバイトの総数 | サム |
nginxplus_cache_bypass_responses_written
| キャッシュに書き込まれたキャッシュバイパスの合計数 | サム |
nginxplus_cache_bypass_bytes_written
| キャッシュバイパスからキャッシュに書き込まれたバイトの総数 | サム |
属性 | 説明 | 値の例 |
|---|
server_zone
| サーバー ゾーンの名前 (HTTP サーバー ゾーン メトリクスに適用) | example.com, api.example.com
|
code
| HTTP 応答ステータス コード (応答メトリクスに適用) | 1xx、 2xx 、 3xx 、 4xx 、 5xx 、 200 、 404 、 500
|
location_zone
| ロケーションゾーンの名前 | /api、 /images 、 /static
|
cache
| キャッシュの名前 | my_cache, static_cache
|
nginx.server.endpoint
| NGINX Plus APIエンドポイントURL | http://localhost:8080/api
|
nginx.deployment.name
| この NGINX Plus デプロイメントを識別するための一意の名前 | production-web-01, staging-api
|
nginx.display.name
| 「サーバー」プレフィックスとデプロイメント名を組み合わせた表示フレンドリーな名前 | server:production-web-01
|
host.name
| NGINX Plusが稼働しているシステムのホスト名 | web-server-01.example.com
|
host.id
| ホストシステムの一意の識別子 | i-1234567890abcdef0
|
logtype
| 収集されるログのタイプ (ログのみに適用されます)。 New Relic の組み込み解析ルールによって使用されます。この属性は、ログ転送が有効になっている場合にのみ使用できます。 | nginx (アクセスログの場合)、 nginx-error (エラーログの場合)
|
次のステップ
データについて詳しくはこちらをご覧ください:
関連する監視を調べます:
NGINX Plus リソース: