Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模システムへの OpenTelemetry Collector 導入の勘所と OpAMP ...

逆井(さかさい)
November 29, 2024
720

大規模システムへの OpenTelemetry Collector 導入の勘所と OpAMP に見る未来 / getting-started-opentelemetry-collector-with-opamp

CloudNative Days Winter 2024 の登壇スライドです。
https://event.cloudnativedays.jp/cndw2024/talks/2440

逆井(さかさい)

November 29, 2024
Tweet

More Decks by 逆井(さかさい)

Transcript

  1. 逆 井 啓 佑 さかさい • 所属:Datadog Japan • コミュニティ: ◦

    OpenTelemetry Meetup ◦ Google Cloud Champion Innovators • 2022 と 2023 に OTel ネタで登壇しました 自己紹介 ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー CNDT2022 CNDT2023
  2. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー 話すこと / 話さないこと

    補足(ネタバレ) 本セッション後半は OpenTelemetry Collector の Remote Configuration に関する話 • Remote Configuration は "リモート設定" と本セッションでは記述 • また、OpenTelemetry や Collector は "OTel" や "Col" と略記することもあり 本日、お話しできないこと - OpenTelemetry の計装自体や、OpenTelemetry Collector のコンポーネントの詳細 - OpAMP の詳細な仕様 本日、お話しすること - OpenTelemetry Collector の幅広な内容と、運用時の構成について - OpenTelemetry Collector をリモート設定可能にする OpAMP(オペアンプ)について
  3. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ OpAMP デモ
  4. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、

    OpenTelemetry) • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  5. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー イントロダクション(オブザーバビリティ) オブザーバビリティとは 「外部シグナルから推測されるシステムの状態を推論する能力」

    入力 出力 システム ? 外部シグナル 主要なシグナル(Primary Signals) • ログ • トレース • メトリクス • プロファイル これらを総称して、 テレメトリーシグナル と呼ぶ Ref: tag-observability / whitepaper.md
  6. 入力 出力 システム 特定ツールの 計装ライブラリ ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー イントロダクション(OpenTelemetry) テレメトリーは基本的に "計装(インスツルメンテーション)" することで収集する ツール A ツール B ツール C 特定ツール仕様の テレメトリーシグナル
  7. 入力 出力 システム 特定ツールの 計装ライブラリ ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー イントロダクション(OpenTelemetry) 入力 出力 システム ツール A ツール A ツール B ツール C ツール B ツール C OTel ※ モニタリングツールが OpenTelemetry 対応している前提 特定ツール仕様の テレメトリーシグナル OTel 仕様の テレメトリーシグナル テレメトリーは基本的に "計装(インスツルメンテーション)" することで収集する
  8. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー イントロダクション(OpenTelemetry) Ref: https://opentelemetry.io/

    OpenTelemetry とは • Cloud Native Computing Foundation(CNCF) の Incubating プロジェクト ◦ cncf/toc には Graduation に向けた Issue が既に立っている #1271 • テレメトリー(Primary Signals)のデータモデルや送信プロトコルの標準仕様(OTLP)策定 • 様々な言語向けに計装ライブラリの提供 ◦ Go、Java、Python、C++、JavaScript、... https://opentelemetry.io/docs/instrumentation/ ◦ 言語によっては(コードに手を加えないで計装できる)ゼロコード計装ツールも提供 • OpenTelemetry Collector の仕様策定、開発
  9. OpenTelemetry とは • Cloud Native Computing Foundation(CNCF) の Incubating プロジェクト

    ◦ cncf/toc には Graduation に向けた Issue が既に立っている #1271 • テレメトリー(Primary Signals)のデータモデルや送信プロトコルの標準仕様(OTLP)策定 • 様々な言語向けに計装ライブラリの提供 ◦ Go、Java、Python、C++、JavaScript、... https://opentelemetry.io/docs/instrumentation/ ◦ 言語によっては(コードに手を加えないで計装できる)ゼロコード計装ツールも提供 • OpenTelemetry Collector の仕様策定、開発 ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー イントロダクション(OpenTelemetry) Ref: https://opentelemetry.io/ 割愛。今回は OTel Collector にフォーカス メインテーマ
  10. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  11. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について

    テレメトリーの受信・送信・処理を行うエージェント • レシーバー、プロセッサー、エクスポーター、コネクターなどのコンポーネントで構成されている • どのような種類のコンポーネントがあるかは Registry を参照 :https://opentelemetry.io/ecosystem/registry/?s=&component=all&language=collector https://opentelemetry.io/docs/collector/ レシーバー ・テレメトリーを受信するコンポーネント ・e.g. OTLP Receiver、Kafka Receiver、... エクスポーター ・テレメトリーを送信するコンポーネント ・e.g. OTLP Exporter、Debug Exporter、... プロセッサー ・テレメトリーを処理するコンポーネント ・e.g. Batch Processor、Attribute Processor、... コネクター ・異なるテレメトリーパイプラインを繋ぐ ・e.g. Count Connector、Span Metrics Connector、...
  12. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について

    著:@IT 「OpenTelemetry」とは――「Observability」(可観測性:オブザーバビリティ)とテレメトリーの基礎知識 より テレメトリーの受信・送信・処理を行うエージェント • レシーバー、プロセッサー、エクスポーター、コネクターなどのコンポーネントで構成されている • どのような種類のコンポーネントがあるかは Registry を参照 :https://opentelemetry.io/ecosystem/registry/?s=&component=all&language=collector Processor Exporter Receiver Collector モニタリング サービス B C A テレメトリー ラベリング サンプリング etc… by Attribute Processor CloudNativeDays:CNDW2024 OTLP by Tail Sampling Processor 600ms > のみサンプリング
  13. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について

    OpenTelemetry Collector は 公式に 4 つのディストリビューション(distro)が配布 されている(2024/11) ◆ コアディストリビューション(core) ................................................... OTel Collector のコアとなるコンポーネントを含む distro ◆ コントリビューションディストリビューション(contrib) ....... ベンダーコンポーネントなど、全てのコンポーネントを含む distro ◆ Kubernetes ディストリビューション(otelcol-k8s) ............... Kubernetes 環境に特化したコンポーネントを含む distro ◆ OTLP ディストリビューション(otelcol-otlp) ............................ OTLP コンポーネントのみを含む最小構成の distro
  14. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について

    OpenTelemetry Collector は 公式に 4 つのディストリビューション(distro)が配布 されている(2024/11) ◆ カスタム OTel Collector • contrib の商用利用はイメージサイズやアタックサーフェースの観点で非推奨 • contrib のみに含まれるコンポーネントを使いたい場合はカスタムビルドが必要 • OTel では ocb(OpenTelemetry Collector Builder) というビルドツールを使用 ◆ コアディストリビューション(core) ................................................... OTel Collector のコアとなるコンポーネントを含む distro ◆ コントリビューションディストリビューション(contrib) ....... ベンダーコンポーネントなど、全てのコンポーネントを含む distro ◆ Kubernetes ディストリビューション(otelcol-k8s) ............... Kubernetes 環境に特化したコンポーネントを含む distro ◆ OTLP ディストリビューション(otelcol-otlp) ............................ OTLP コンポーネントのみを含む最小構成の distro
  15. ◆ コアディストリビューション(core) ................................................... OTel Collector のコアとなるコンポーネントを含む distro ◆ コントリビューションディストリビューション(contrib) .......

    ベンダーコンポーネントなど、全てのコンポーネントを含む distro ◆ Kubernetes ディストリビューション(otelcol-k8s) ............... Kubernetes 環境に特化したコンポーネントを含む distro ◆ OTLP ディストリビューション(otelcol-otlp) ............................ OTLP コンポーネントのみを含む最小構成の distro ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について OpenTelemetry Collector は 公式に 4 つのディストリビューション(distro)が配布 されている(2024/11) ◆ カスタム OTel Collector • contrib の商用利用はイメージサイズやアタックサーフェースの観点で非推奨 • contrib のみに含まれるコンポーネントを使いたい場合はカスタムビルドが必要 • OTel では ocb(OpenTelemetry Collector Builder) というビルドツールを使用 ◆ ベンダー配布の OTel Collector ベンダーによっては、カスタム OTel Collector が配布 されているケースもある • ADOT Collector(AWS) / Grafana Alloy / etc...
  16. receivers: otlp: protocols: grpc: endpoint: 0.0.0.0:4317 http: endpoint: 0.0.0.0:4318 processors:

    batch: exporters: otlp: endpoint: o11y-backend:4317 service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [otlp] metrics: ... logs: ... config.yaml ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について 設定(config) を与え、OTel Collector を起動 Batch Processor OTLP Exporter OTLP Receiver Collector Trace Pipeline ./otelcol --config=config.yaml OTel Collector のバイナリ。 ここに含まれていないコンポーネントを config で指定した場合はエラーが発生
  17. extensions: health_check: pprof: endpoint: :1888 zpages: endpoint: :55679 opamp: server:

    ws: endpoint: "ws://127.0.0.1:4320/v1/opamp" … service: extensions: [pprof, zpages, health_check, opamp] pipelines: • Extensions はテレメトリーデータのパイプラインに直接的に 寄与しない OTel Collector の拡張機能 • Extensions のコンポーネント(一例) config.yaml ※ extensions 部抜粋 ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について OTel Collector の Extensions につい て 後半のリモート設定 においては、 OTel Collector の Opamp Agent Extension を利用 Extensions 概要 ❶ zPages OTel Col のパイプラインの処理情報、UI を提供 ❷ Performance Profiler pprof エンドポイント拡張 ❸ Health Check ヘルスチェックエンドポイント拡張 ❹ OpAMP Agent OTel Col で OpAMP Agent を起動する拡張
  18. ◆ 本セッションの後半パートに関わってくる OTel Collector のまとめ • OTel Collector には core、contrib

    などの distro や、カスタム OTel Collector がある 商用でカスタム OTel Collector を使っている場合、コンポーネント追加にはイメージをビルドして OTel Collector を再実行 する必要がある • OTel Collector には config という設定を渡して実行をする OTel Collector の構成変更が必要な場合は、config を更新して OTel Collector を再実行 する必要があ る • Extensions を使って OTel Collector を拡張可能 後半パートの OTel Collector のリモート設定には、OpAMP Agent Extensions を利用 する ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector について
  19. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  20. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    OpenTelemetry Collector の立て方はいくつか考えられる   ❶ (そもそも) OTel Collector がない 構成   ❷ 各ノードに OTel Collector を立てる構成   ❸ 多段に OTel Collector を立てる構成 Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly).    Copyright 2024 Austin Parker and Ted Young, 9781098147181. Ref ❷: https://opentelemetry.io/docs/collector/deployment/
  21. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ❶ (そもそも) OTel Collector がない 構成 監視 ツール アプリ アプリ アプリ テレメトリー OTel SDK から直接、監視バックエンドに送信 • システムがシンプルで、 テレメトリー管理が不可欠ではない場合 • OTel Collector は後からでも追加可能 Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: https://opentelemetry.io/docs/collector/deployment/ 欠けているポイント • ホストメトリクスの収集 • テレメトリーの加工や処理、インフラ属性のタグ付け • エクスポート先変更にアプリが依存
  22. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ◆ 1 つの OTel Collector を立てる構成 アプリ アプリ アプリ 監視 ツール OTel Col • どこかのノードに OTel Col を配置し、 テレメトリーを集約 • テレメトリーの加工、エンリッチが可能 • ただし、複数ノード構成の場合、前者同様以 下は取得できない ◦ ホスト情報、ホストメトリクス Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: https://opentelemetry.io/docs/collector/deployment/ テレメトリー
  23. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ❷ 各ノードに OTel Collector を立てる構成 ノード ノード ノード OTel Col OTel Col OTel Col アプリ アプリ アプリ 監視 ツール Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: https://opentelemetry.io/docs/collector/deployment/ テレメトリー 各ノードに OTel Col を配置し、 アプリのテレメトリーやインフラメトリクスを集約 • ホスト名などの環境属性のテレメトリーへの付与を、 OTel Collector に委譲可能 • アプリクラッシュにおけるデータ損失の可能性を低減 「ノードごとの OTel Col 配置」で十分なことが多い が、 より高いスケーラビリティを実現のためには、 "OTel Collector の多段構成" が有効
  24. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ❸ 多段に OTel Collector を立てる構成 ※ アプリは省略 ノード ノード ノード OTel Col OTel Col OTel Col LB OTel Col OTel Col OTel Col 監視 ツール Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: https://opentelemetry.io/docs/collector/deployment/ テレメトリー 各ノードの OTel Col(前段)から、LBを挟み、 OTel Col(後段)のプールに繋ぎこむ • テレメトリーパイプラインのリソース増幅が容易 • 前段の OTel Col はアプリリソースを使っているため、 なるべく負荷を小さくし、後段の OTel Col プールに委譲 ◦ 前段 Col では、下記がメインタスク ▪ アプリからテレメトリー退避 ▪ インフラメトリクス収集 ▪ インフラ属性のテレメトリーへの付与 ◦ 他の処理は後段に委譲
  25. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ❸ 多段に OTel Collector を立てる構成 ※ アプリは省略 ノード OTel Col OTel Col OTel Col LB OTel Col OTel Col OTel Col 監視 ツール テレメトリー Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: OTel Collector (多段構成)で TailsamplingとSpanMetricsを両立させる , @gumamon33 テールベースサンプリングの実現 • トレースを構成するスパンを同じ OTel Col で収集し、 サンプリングを決定する必要がある • 前段で Load Balancing Exporter を使い、 トレース ID が同じスパンは同一の OTel Col に送信 • 後段で Tail Sampling Processor を使い、サンプリング処理
  26. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について

    ❸ 多段に OTel Collector を立てる構成 ※ アプリは省略 ノード ノード ノード OTel Col OTel Col OTel Col LB OTel Col OTel Col OTel Col 監視 ツール テレメトリー OTel Meetup 2024-11 の @gumamon さんの事例登壇が 参考になります。 Ref ❶: Learning OpenTelemetry by Ted Young and Austin Parker (O’Reilly). 9781098147181. Ref ❷: OTel Collector (多段構成)で TailsamplingとSpanMetricsを両立させる , @gumamon33 テールベースサンプリングの実現 • トレースを構成するスパンを同じ OTel Col で収集し、 サンプリングを決定する必要がある • 前段で Load Balancing Exporter を使い、 トレース ID が同じスパンは同一の OTel Col に送信 • 後段で Tail Sampling Processor を使い、サンプリング処理
  27.  このように運用においては、  いくつかのパターンの OTel Collector 配置構成が考えられる。  大規模システム運用のために テレメトリーパイプラインをより高度にすると、  管理すべき OTel Collector

    の数も増えていく 傾向がある。  効率的な OTel Collector の管理をしたい... ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について
  28.  このように運用においては、  いくつかのパターンの OTel Collector 配置構成が考えられる。  大規模システム運用のために テレメトリーパイプラインをより高度にすると、  管理すべき OTel Collector

    の数も増えていく 傾向がある。  効率的な OTel Collector の管理をしたい... ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpenTelemetry Collector を運用する際の構成について OpAMP に見る未来
  29. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  30. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector https://opentelemetry.io/docs/collector/management/#opamp OpAMP とは Open Agent Management Protocol(OpAMP) • 大規模なデータ収集エージェント群を リモートで管理するためのネットワークプロトコル ◦ spec のステータスは Beta ◦ 実装は現状 Go のみ open-telemetry/opamp-go • OpAMP はクライアントサーバープロトコル(HTTP / WebSocket) ◦ OpAMP サーバー  :コントロールプレーンとしてエージェント群をリモート管理する役割 ◦ OpAMP クライアント:データ収集エージェントに構成される。エージェントを制御(構成変更など)する役割 ※ エージェントは OTel Collector だけではなく、Fluent Bit など任意のエージェント
  31. OpAMP のサポートしている機能(spec) • エージェントのリモート設定 • エージェントステータスのレポート ◦ エージェントの種別、バージョン、動作している OS など

    • エージェントの稼働状態のレポート(ハートビート) • エージェント固有のパッケージ管理(e.g. OTel Col イメージ) • エージェントの自動更新 • エージェントの接続認証情報の失効とローテーション ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Ref: https://opentelemetry.io/docs/specs/opamp/ https://opentelemetry.io/docs/collector/management/#opamp OpAMP とは Control plane (OpAMP サーバー) データ収集エージェント OTel Collector など (OpAMP クライアン ト) OpAMP
  32. extensions: opamp: server: ws: endpoint: "ws://[OpAMP Server]/v1/opamp" tls: insecure: true

    service: extensions: [opamp] config.yaml OTel Collector における OpAMP クライアントは、 Extensions の拡張機能 でサポート(ステータスは alpha) OpAMP と OTel Collector ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Control plane (OpAMP サーバー) OpAMP OTel Col OpAMP Extension (OpAMP クライアント) ※ OpAMP サーバーのポートは 4320 がよく使われる
  33. OTel Col における OpAMP のコミュニケーションモデル ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー OpAMP と OpenTelemetry Collector 「❶ OpAMP サーバーと直接やり取り」 または、「❷ OpAMP Supervisor を介してやり取り」 OpAMP サーバー OpAMP ❶ OpAMP サーバーと直接やり取り OTel Col OpAMP クライアント OpAMP サーバー ❷ OpAMP Supervisor を介してやり取り OTel Col OpAMP クライアント Supervisor OpAMP サーバー OpAMP クライアント OpAMP OpAMP Ref: opentelemetry-collector-contrib/blob/main/cmd/opampsupervisor/specification/README.md
  34. OTel Col における OpAMP のコミュニケーションモデル ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー OpAMP と OpenTelemetry Collector ❶ OpAMP サーバーと直接やり取り • OpAMP Extensions では、OpAMP の一部の機能のみ実装(後述) ◦ ステータスレポート ◦ エージェントの稼働状態のレポート • このモデルでは、OpAMP を介した OTel Col のレポートのみが動作 する ◦ 他のリモート設定などの OpAMP 機能はサポートされない OpAMP サーバー OpAMP ❶ OpAMP サーバーと直接やり取り OTel Col OpAMP クライアント Ref: opentelemetry-collector-contrib/blob/main/cmd/opampsupervisor/specification/README.md
  35. OTel Col における OpAMP のコミュニケーションモデル ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー OpAMP と OpenTelemetry Collector ❷ OpAMP Supervisor を介してやり取り Supervisor に OpAMP の多くの機能が実装され動作する(後述) • OTel Col プロセスの開始と停止 • リモート設定をサポートし、OpAMP サーバーから config を受け取り、OTel Col にロードし構成更新 • ❶ の動作同様に、OpAMP Extensions から レポートを受け取り、OpAMP サーバーに報告 Ref:opentelemetry-collector-contrib/blob/main/cmd/opampsupervisor/specification/README.md Ref:open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor OpAMP サーバー ❷ OpAMP Supervisor を介してやり取り OTel Col OpAMP クライアント Supervisor OpAMP サーバー OpAMP クライアント OpAMP OpAMP  The supervisor is currently undergoing heavy development  and is not ready for any serious use. Supervisor は現在開発中で、本格的な使用には至っていないことに留意 exec/kil l
  36. root@93c4e3564544:/app# ps aux USER PID %CPU %MEM VSZ RSS ...

    COMMAND root 1 ... /app/opampsupervisor --config /app/supervisor-config.yaml root 43 ... /app/./otelcontribcol_linux_amd64 ./otelcontribcol_linux_amd64 --config /tmp/effective.yaml ... # directory of Collector contrib repository ❯ cd cmd/opampsupervisor ❯ go run . –config supervisor-config.yaml OpAMP Supervisor for the OTel Collector ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Ref:opentelemetry-collector-contrib/blob/main/cmd/opampsupervisor/specification/README.md Ref:open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor • OTel Collector Contrib リポジトリで開発 • Supervisor の設定ファイルを用意して実行 OTel Col OpAMP クライアント Supervisor OpAMP サーバー OpAMP クライアント OpAMP exec/kill supervisor-config config read write read • Supervisor を実行すると、Supervisor と一緒に、 OTel Collector(OpAMP Extensions は自動で有効化)が実行
  37. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector Ref: open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor supervisor-config で設定する項目について  ❶ server:OpAMP バックエンドの接続情報  ❷ capabilities:Supervisor の OpAMP 機能設定  ❸ agent:実行する OTel Collector のバイナリへのパス  ❹ storage:OTel Collector の config などのマウント先 server: endpoint: ws://[OpAMP Server]/v1/opamp capabilities: accepts_remote_config: true reports_effective_config: true accepts_packages: true reports_packages_statuses: true reports_own_traces: true reports_own_metrics: true reports_own_logs: true accepts_opamp_connection_settings: true accepts_other_connection_settings: true accepts_restart_command: true reports_status: true reports_remote_config: true agent: executable: ./otelcontribcol_linux_amd64 storage: directory: /tmp supervisor-config ❶ ❷ ❸ ❹ OpAMP Supervisor for the OTel Collector
  38. server: endpoint: ws://[OpAMP Server]/v1/opamp capabilities: accepts_remote_config: true reports_effective_config: true accepts_packages:

    true reports_packages_statuses: true reports_own_traces: true reports_own_metrics: true reports_own_logs: true accepts_opamp_connection_settings: true accepts_other_connection_settings: true accepts_restart_command: true reports_status: true reports_remote_config: true agent: executable: ./otelcontribcol_linux_amd64 storage: directory: /tmp supervisor-config ❷ capabilities:Supervisor の OpAMP 機能設定 ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Ref: open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor ❷ OpAMP Capability 内容 accepts_remote_config リモート設定の受け入れ reports_effective_config 動作している OTel Col の config レポート accepts_packages OTel Col の PKG 更新の受け入れ reports_package_statuses OTel Col の PKG のステータスを報告 reports_own_traces/metrics/logs OTel Col のトレース/メトリクス/ログを監視 ツールへ報告 accepts_opamp_connection_settings OpAMP の接続設定の受け入れ accepts_other_connection_settings エクスポーターの接続設定の受け入れ accepts_restart_command 再起動コマンドの受け入れ reports_health OTel Col のヘルスステータスレポート reports_remote_config リモート設定レポート OpAMP Supervisor for the OTel Collector
  39. (補足)OpAMP Extensions に実装されている OpAMP 機能は以下 ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー OpAMP と OpenTelemetry Collector Ref: open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor OpAMP Capability 内容 accepts_remote_config リモート設定の受け入れ reports_effective_config 動作している OTel Col の config レポート accepts_packages OTel Col の PKG 更新の受け入れ reports_package_statuses OTel Col の PKG のステータスを報告 reports_own_traces/metrics/logs OTel Col のトレース/メトリクス/ログを監視 ツールへ報告 accepts_opamp_connection_settings OpAMP の接続設定の受け入れ accepts_other_connection_settings エクスポーターの接続設定の受け入れ accepts_restart_command 再起動コマンドの受け入れ reports_health OTel Col のヘルスステータスレポート reports_remote_config リモート設定レポート OpAMP サーバー OpAMP ❶ OpAMP サーバーと直接やり取り OTel Col OpAMP クライアント OpAMP Supervisor for the OTel Collector
  40. ステータス server: endpoint: ws://[OpAMP Server]/v1/opamp capabilities: accepts_remote_config: true reports_effective_config: true

    accepts_packages: true reports_packages_statuses: true reports_own_traces: true reports_own_metrics: true reports_own_logs: true accepts_opamp_connection_settings: true accepts_other_connection_settings: true accepts_restart_command: true reports_status: true reports_remote_config: true agent: executable: ./otelcontribcol_linux_amd64 storage: directory: /tmp supervisor-config ❷ capabilities:Supervisor の OpAMP 機能設定 ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Ref: open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor ❷ OpAMP Capability 内容 accepts_remote_config リモート設定の受け入れ ✅ reports_effective_config 動作している OTel Col の config レポート ✅🚨 accepts_packages OTel Col の PKG 更新の受け入れ reports_package_statuses OTel Col の PKG のステータスを報告 reports_own_traces/metrics/logs OTel Col のトレース/メトリクス/ログを監視 ツールへ報告 mixed accepts_opamp_connection_settings OpAMP の接続設定の受け入れ ✅🚨 accepts_other_connection_settings エクスポーターの接続設定の受け入れ ✅🚨 accepts_restart_command 再起動コマンドの受け入れ ✅🚨 reports_health OTel Col のヘルスステータスレポート ✅🚨 reports_remote_config リモート設定レポート Planned Planned ※ 2024/11 時点 Planned ✅  :実装済み ✅🚨:実装済み(留意事項あり) OpAMP Supervisor for the OTel Collector
  41. ステータス server: endpoint: ws://[OpAMP Server]/v1/opamp capabilities: accepts_remote_config: true reports_effective_config: true

    accepts_packages: true reports_packages_statuses: true reports_own_traces: true reports_own_metrics: true reports_own_logs: true accepts_opamp_connection_settings: true accepts_other_connection_settings: true accepts_restart_command: true reports_status: true reports_remote_config: true agent: executable: ./otelcontribcol_linux_amd64 storage: directory: /tmp supervisor-config ❷ capabilities:Supervisor の OpAMP 機能設定 OpAMP Supervisor for the OTel Collector ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector Ref: open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor ❷ OpAMP Capability 内容 accepts_remote_config リモート設定の受け入れ ✅ reports_effective_config 動作している OTel Col の config レポート ✅🚨 accepts_packages OTel Col の PKG 更新の受け入れ reports_package_statuses OTel Col の PKG のステータスを報告 reports_own_traces/metrics/logs OTel Col のトレース/メトリクス/ログを監視 ツールへ報告 mixed accepts_opamp_connection_settings OpAMP の接続設定の受け入れ ✅🚨 accepts_other_connection_settings エクスポーターの接続設定の受け入れ ✅🚨 accepts_restart_command 再起動コマンドの受け入れ ✅🚨 reports_health OTel Col のヘルスステータスレポート ✅🚨 reports_remote_config リモート設定レポート Planned Planned ※ 2024/11 時点 Planned
  42. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector config_v1 OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー read OpAMP サーバー (バックエンド) 前提:OpAMP サーバー(バックエンド)と Supervisor と OTel Col が構成    OTel Col は最初 config_v1 で動作 v1 OpAMP Supervisor を使った OTel Collector のリモート設定
  43. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector config_v1 OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー read ServerToAgent Msg(OpAMP サーバーから OpAMP クライアントへのメッセージ) の remote_config フィールドに config を設定 ❶ config ❶ v1 OpAMP サーバー (バックエンド) OpAMP Supervisor を使った OTel Collector のリモート設定
  44. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector config_v1 OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー 受け取った config と、既存の config_v1 をマージして新しい config(v2)を作成 ※ config のマージルールの仕様は Appendix を参照 ❷ config write ❷ Merge config_v2 v1 OpAMP サーバー (バックエンド) OpAMP Supervisor を使った OTel Collector のリモート設定
  45. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー config_v2 を使って OTel Collector プロセスを再起動する ❸ config_v2 v1 read exec ❸ 新しい config を使って     OTel Col を立て直し OpAMP サーバー (バックエンド) OpAMP Supervisor を使った OTel Collector のリモート設定
  46. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー config_v2 を使った OTel Collector が作成される ❹ v2 ❹ リモート設定完了 OpAMP サーバー (バックエンド) OpAMP Supervisor を使った OTel Collector のリモート設定
  47. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー OTel Collector を実際に構成している config(Effective Config)が OpAMP サーバー(バックエンド)にレポートされる ❺ Effective Config v2 ❺ Effective Config OpAMP サーバー (バックエンド) OpAMP Supervisor を使った OTel Collector のリモート設定
  48. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー このようなフローで、OpAMP を使った OTel Col のリモート設定が行われる ❶ - ❺ v2 ❺ Effective Config OpAMP サーバー (バックエンド) ❶ config config_v1 config write ❷ Merge config_v2 v2 read exec ❸ ❹ OpAMP Supervisor を使った OTel Collector のリモート設定
  49. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OpAMP Supervisor を使った OTel Collector のリモート設定 (参考として)Remote Control for Observability Using the Open Agent Management Protocol        - Jacob Aronoff, Lightstep from ServiceNow & Andy Keller, observIQ        リモート設定において、やり取りを行う Message の中身まで触れていてとても参考になるセッション https://www.youtube.com/watch?v=t550FzDi054
  50. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry

    Collector OpAMP Supervisor を使った OTel Collector のリモート設定 OTel Col OpAMP クライアント Supervisor OpAMP クライアント OpAMP サーバー このようなフローで、OpAMP を使った OTel Col のリモート設定が行われる ❶ - ❺ v2 ❺ Effective Config OpAMP サーバー (バックエンド) ❶ config config_v1 config write ❷ Merge config_v2 v2 read exec ❸ ❹ 理論はなんとなくわかったが、 実際にやってみないとイメージがわかない!!
  51. 実際に Supervisor や OpAMP バックエンドを構成し、 OTel Collector を Let’s リモート設定!

    ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー OpAMP と OpenTelemetry Collector
  52. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  53. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー 実際に OTel Collector

    をリモート設定してみる OpAMP サーバー (バックエンド) OpAMP Supervisor OTel Col Batch プロセッサ OTLP エクスポータ OTLP レシーバ 監視 ツール (otel-tui) アプリ テレメトリー テレメトリー ※ OpAMP Extensions は有効化 OTel Collector リモート設定のデモ構成
  54. OTel Collector リモート設定のデモ構成の参考リソース ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー

    実際に OTel Collector をリモート設定してみる • OpAMP サーバー(バックエンド) ◦ open-telemetry/opamp-go が公開しているサンプルコード。UI 含む ◦ https://github.com/open-telemetry/opamp-go/tree/main/internal/examples • OpAMP Supervisor ◦ open-telemetry/otelcol-contrib/cmd の Supervisor 実装 ◦ https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/cmd/opampsupervisor • アプリ ◦ open-telemetry/opentelemetry-collector-contrib のデモコード ◦ https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/examples/demo • 監視ツール(otel-tui) ◦ Terminal OpenTelemetry Viewer ◦ https://github.com/ymtdzzz/otel-tui
  55. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー 実際に OTel Collector

    をリモート設定してみる OpAMP サーバー (バックエンド) OpAMP Supervisor OTel Col Batch Attribute Sampling OTLP エクスポータ OTLP レシーバ シナリオ-❶: Attribute Processor を追加。カスタム属性の付与 シナリオ-❷: Sampling Processor を追加。< 600 ms のトレースをドロップ 監視 ツール (otel-tui) アプリ テレメトリー テレメトリー OTel Collector リモート設定のデモ構成 カスタム属性付与 < 600ms ドロッ プ
  56. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー 実際に OTel Collector

    をリモート設定してみる OTel Collector リモート設定のデモ
  57. トピック-1: OpAMP in Kubernetes 環境 ー 2024-11-29 CLOUDNATIVE DAYS WINTER

    2024 ー OpenTelemetry Operator の OpAMPBridge を利用 • 他にも OpenTelemetryCollector、Instrumentation • Kubernetes 環境内で Supervisor として動作 − OpAMPBridge の機能 − • OpAMP Capabilities を全て受け入れ可能 ◦ 各 OTel Collector のヘルス状態のレポート ◦ OpAMP サーバーを通じた OTel Collector のリモート設定 • コンポーネントの許可リスト。右図だと ◦ レシーバーは OTLP Receiver のみ許可する ◦ プロセッサーは Memory Limiter Processor のみ許可 OpAMP サーバー OpAMP Bridge (Supervisor) OTel Collector apiVersion: opentelemetry.io/v1alpha1 kind: OpAMPBridge metadata: name: opamp-bridge spec: endpoint: 'wss://[]:4320/v1/opamp' capabilities: acceptsRemoteConfig: true … componentsAllowed: receivers: - otlp processors: - memory_limiter … OpAMPBridge.yaml 最後、まとめる前のトピック-1
  58. • opamp-go を利用して、OpAMP バックエンドをプラットフォームとして自前で構築 は可能 ※ 現在時点でのステータスは留意 • オブザーバビリティツール提供側が利用するケース 。OpAMP

    に関する Issue もあり ◦ Grafana Alloy #1236 ◦ ADOT Collector #2402 ... 中長期のロードマップに OpAMP あり • 既存ツールの利用も可能。ObservIQ の Bindplane ◦ OpAMP を利用して OTel Collector 等をリモート管理するソフトウェア ◦ OpAMP サーバーとして動作する Bindplane サーバーと、Web UI を提供 トピック-2: How to use OpAMP? ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー 最後、まとめる前のトピック-2 Ref: Remote Control for Observability Using the Open Agent Management Protocol https://www.youtube.com/watch?v=t550FzDi054
  59. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー アジェンダ • イントロダクション(オブザーバビリティ、OpenTelemetry)

    • OpenTelemetry Collector について • OpenTelemetry Collector を運用する際の構成について • OpAMP と OpenTelemetry Collector • 実際に OTel Collector をリモート設定してみる • まとめ
  60. ー 2024-11-29 CLOUDNATIVE DAYS WINTER 2024 ー まとめ • OpenTelemetry

    Collector について幅広く 見ました ▪ OTel Collector の構成要素 ▪ OTel Collector 運用時における OTel Collector の構成について • エージェント管理のための ベンダーニュートラルな OpAMP について • OpenTelemetry Collector や OpenTelemetry Operator における OpAMP の実装や、実際の動作(リモート管理)について