「 OpenTelemetry 」と「 Instana for HAProxy 」を連携させる
HAProxy の OpenTelemetry 機能は、 IBM の Instana® Observabilityと組み合わせて利用できます。
HAProxy サードパーティ製のオープンソースコンポーネントです。 HAProxy OpenTelemetry のフィルターは、それぞれのオープンソースコミュニティまたはベンダーによってメンテナンスされています。 Instana® 分散トレーシングの可観測性を実現するため、 Instana を備えた HAProxy の OpenTelemetry フィルターから発信される OpenTelemetry シグナルの取り込みをサポートしています。 HAProxy 設定、アップストリームのコード、および一般的なサポートについては、 Instana のサポート対象外となります。 HAProxy のドキュメントおよびサポートについては、『 HAProxy 』のドキュメントを参照してください。
サポート対象のオペレーティング・システム
Instana Linux オペレーティングシステムでのみ、 OpenTelemetry との連携に対応しています。
前提条件
OpenTelemetry を Instana と連携させるには、以下のコンポーネントが必要です:
- HAProxy バージョン 3.4 以降で、 HAProxy の OpenTelemetry フィルターを使用してビルドされたもの
- OpenTelemetry C ラッパーライブラリのバージョン 2.2.0 以降に基づいて構築された、 HAProxy OpenTelemetry フィルター (
haproxy‑opentelemetry) - 有効な IBM の Instana Observabilityアカウント
概要
OpenTelemetry フィルターは、 HAProxy からテレメトリデータを生成し、 OpenTelemetry コレクターの Instana ディストリビューション( IDOT )がそのデータを Instana に転送します。
OpenTelemetry フィルターを使用した HAProxy の構築
HAProxy デフォルトでは、 OpenTelemetry フィルターは含まれていません。 OpenTelemetry のトレース機能を使用するには、 HAProxy OpenTelemetry フィルター(haproxy‑opentelemetry)を指定して、 HAProxy をビルドする必要があります。
詳細なビルド手順および Docker イメージの完全なビルドリファレンスについては、サンプルリポジトリ内の HAProxy のREADME を参照してください。
OpenTelemetry を使用した HAProxy の設定
HAProxy OTel フィルターは、2つのファイルからなる設定モデルを採用しています:
| 構成ファイル | 目的 |
|---|---|
OTel 設定ファイル (.cfg) |
計測モデル(計測設定、スコープ、グループ、スパン、属性、メトリクス、ログレコードなど)を定義します。 |
YAML 設定ファイル (.yml) |
OpenTelemetry SDKのパイプライン(エクスポーター、サンプラー、プロセッサー、プロバイダー、および信号ルーティングを含む)を定義します。 |
トレース・コンテキスト伝達
HAProxy OTel フィルターは、分散トレーシングのための「 W3C 」トレースコンテキスト標準を採用しています。 以下の標準的な HTTP ヘッダーを使用して、トレースコンテキストを伝播します:
traceparent: トレースID、親スパンのID、およびトレースフラグが含まれています
このフィルターは、トレース伝播のための Instana 固有のヘッダーをサポートしていません。
X-Instana-T(トレースID)X-Instana-S(Span ID)X-Instana-L(サンプリングレベルまたは判定)
下流のサービスが Instana ネイティブのヘッダー伝播を使用している場合、 HAProxy の設定でそれらのヘッダーを削除することで、下流サービスの Instana エージェントに読み取り専用 traceparent モードを強制することができます:
http-request del-header X-INSTANA-T
http-request del-header X-INSTANA-S
http-request del-header tracestate
OpenTelemetry コレクターの統合
OpenTelemetry と Instana を連携させるには、 IBM Instana 版「 OpenTelemetry Collector 」( IDOT )をご利用ください。
IDOT これは、 OpenTelemetry コレクターのフルマネージドかつ事前設定済みのバージョンであり、 Instana の可観測性プラットフォームとシームレスに統合されます。
HAProxy の基本的な設定の詳細や例については、 HAProxy OpenTelemetry tracing を参照してください。
OpenTelemetry コレクターとの連携を設定するには、「 OpenTelemetry コレクターの設定」を参照してください。
インフラストラクチャー相関
YAML プロバイダーの設定にある「 service.name resource」属性は、インフラストラクチャの相関付けに使用されます。これにより、 HAProxy のアプリケーショントレースを、 Instana によって監視されている基盤となるインフラストラクチャエンティティ(ホスト、コンテナ、 Kubernetes ポッド、およびプロセス)と関連付けることができます。
Instana では、この設定を行うと service.name、はこのサービス名を使用して以下のタスクを実行します
- HAProxy のトレースとインフラストラクチャのメトリクス(CPU、メモリ、ネットワーク)を関連付ける
- マップサービスの依存関係と呼び出し関係
- アプリケーションビューとインフラストラクチャビュー間の双方向ナビゲーションを有効にする
- 根本原因分析のために、完全な背景情報を提供してください
インフラストラクチャの相関分析および OpenTelemetry との統合に関する詳細については、以下のトピックを参照してください
技術の特定
デフォルトでは、 OpenTelemetryC++ SDK は を に telemetry.sdk.name 設定します opentelemetry。 Instana この属性を使用して、サービスの技術種別を識別します。 Instana が HAProxy を正しく識別できるようにするには、 IDOT コレクターパイプラインにリソースプロセッサを追加して haproxy 、 を telemetry.sdk.name に上書きしてください:
processors:
resource:
attributes:
- key: telemetry.sdk.name
value: haproxy
action: upsert