• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

OpenTelemetryを使用したHAProxyのディストリビューティッド(分散)トレーシング

|View as Markdown (English)

HAProxyを、サービス間の単なるブラックボックスとしてではなく、ディストリビューティッド(分散)トレーシングにおける接続されたホップとして確認できます。HAProxy 3.4以降には、ロードバランサーがディストリビューティッド(分散)トレーシングに直接参加できるようにするOpenTelemetryフィルターが含まれているため、New RelicはサービスマップでアプリケーションとHAProxyエンティティ間のサービス関係を自動的にマッピングできます — 手動での設定は必要ありません。

このページでは、トレースデータがNew Relicに到達するように、HAProxy OTelフィルター、そのエクスポーター、およびOTel Collectorを設定する方法について説明します。トレーシングが内部でどのように機能するか — HAProxyを介したW3Cトレースコンテキストの抽出と伝播 — については、以下の仕組みをご覧ください。

使い方

一般的な設定では、トラフィックは次のように流れます:

Instrumented app (frontend) → HAProxy (with OTel filter) → Instrumented app (backend)
  1. フロントエンドアプリケーションは、W3C traceparentヘッダーを含むリクエストを送信します。
  2. HAProxyのOTelフィルターはトレースコンテキストを抽出し、リクエストのライフサイクルをカバーするスパンを作成して、バックエンドに転送されるリクエストに更新されたトレースコンテキストを注入します。
  3. バックエンドアプリケーションは、伝播されたトレースコンテキストとともにリクエストを受信し、トレースを継続します。
  4. フロントエンド、HAProxy、およびバックエンドは、スパンをOpenTelemetry Collectorにエクスポートし、OpenTelemetry CollectorはそれらをNew Relicに転送します。

New Relicは、これらの接続されたスパンを使用してCALLS関係を作成します:

  • フロントエンドサービスがHAProxyエンティティを呼び出します
  • HAProxyエンティティがバックエンドサービスを呼び出します

これらの関係は、サービスマップおよびマップエクスペリエンスで確認できます。

あなたが始める前に

HAProxy OTelフィルターは、次のようなW3Cトレースコンテキスト伝搬をサポートする任意のアプリケーションで機能します:

計装アプローチを混在させることができます。たとえば、OTel SDKフロントエンドがHAProxyを介してNew Relic APMエージェントのバックエンドを呼び出すことができ、関係チェーンはNew Relicに正しく表示されます。

以下も用意されていることを確認してください:

  • 有効なNew Relicライセンスキー
  • OTelフィルターを有効にしたHAProxy 3.4以降。OTelフィルターをサポートするディストリビューションの入手手順については、HAProxy OTelインストレーションガイドを参照してください。
  • HAProxyホストと同じホストで実行されている、またはHAProxyホストからアクセス可能なOpenTelemetry Collector(OTel Collector ContribまたはNRDOT)
  • 上記の互換性のある計装アプローチのいずれかを使用して、HAProxy経由でrequestsを送信するインストゥルメントされたアプリケーション
  • コレクターからNew RelicのOTLPエンドポイントへのネットワークアクセス

ヒント

このガイドでは、単一のOTel Collectorでメトリクス収集とディストリビューティッド(分散)トレーシングの両方を設定します。高度なメトリクス設定やKubernetesデプロイメントについては、セルフホスト型HAProxyのモニターおよびKubernetes上のHAProxyのモニターをご覧ください。

ディストリビューティッド(分散)トレーシングの設定

ヒント

以下のトレースパイプラインは、ディストリビューティッド(分散)トレーシングに参加する任意のサービスで使用するのと同じ標準設定です — 手動の関連付け設定ではありません。トレースがアクティブになると、New Relicは接続されたスパンを自動的に検出し、サービスの関連付けを作成します。関連付けを表示するために追加の設定は必要ありません。

サービスの関連付けの表示

HAProxyとコレクターが稼働したら、インストゥルメントされたアプリケーションを通じてトラフィックを生成します。数分後、データがNew Relicに到着していることを確認します:

-- Verify HAProxy trace spans
FROM Span SELECT count(*)
WHERE service.name = 'YOUR_HAPROXY_SERVICE_NAME'
SINCE 10 minutes ago
-- Verify HAProxy metrics
FROM Metric SELECT count(*)
WHERE metricName LIKE 'haproxy.%'
SINCE 10 minutes ago

トレースデータが流れ始めると、New RelicはサービスとHAProxyエンティティ間のCALLS関係を自動的に作成します。関係が表示されるまでに最大10分かかります。

関連付けを表示するには、次の手順に従います:

  1. one.newrelic.com > All capabilities > All entitiesに移動します。
  2. HAProxyエンティティまたはインストゥルメントされたサービスのいずれかを検索します。
  3. エンティティを選択して、そのサマリーページを開きます。
  4. Service mapをクリックして、エンティティ関係グラフを表示します。

フロントエンドサービスがHAProxyに接続され、HAProxyがバックエンドサービスに接続されていることが表示されるはずです:

[Frontend app] → CALLS → [HAProxy] → CALLS → [Backend app]

NRQLを使用して関連付けをクエリすることもできます:

FROM Relationship SELECT *
WHERE source.entityName = 'YOUR_HAPROXY_SERVICE_NAME'
OR target.entityName = 'YOUR_HAPROXY_SERVICE_NAME'
SINCE 1 day ago

トラブルシューティング

次のステップ

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.