プロファイリングの現状

Blog posts are not updated after publication. This post is more than a year old, so its content may be outdated, and some links may be invalid. Cross-verify any information before relying on it.

約半年前、OpenTelemetry はプロファイリングシグナルのサポートを発表しました。 このシグナルはまだ開発中であり、本番環境での使用は推奨されていませんが、Profiling SIG は多くの面で大きな進展を遂げています。

この記事では、過去半年間に Profiling SIG が達成した進捗の概要を紹介します。

OTLP の改善

プロファイルは v1.3.0 で OTLP の新しいシグナルタイプとして追加されましたが、変更を続けているため、この領域はまだ不安定(unstable)としてマークされています。

当初の意図は pprof とのワイヤー互換性を維持することでしたが、その目標は現実的ではないことが判明したため、Profiling SIG はプロトコルをリファクタリングし、pprof との厳密な互換性を目指さないことを決定しました。 かわりに、他のシグナルで既に行っているのと同様に、変換可能性を目指します。 この移行はまだ進行中であり、プロトコルのプロファイリングセクションにいくつかの破壊的変更を引き起こしています。 なお、これはメトリクス、スパン、ログ、リソースなど、OTLP プロトコルの大部分を占める安定したセクションには影響しません。

eBPF エージェントの改善

6月に、Elastic の継続的プロファイリングエージェントの寄贈が完了しました。 それ以来、opentelemetry-ebpf-profiler リポジトリでは活発に改善が進んでいます。

eBPF エージェントの次の目標は、Collector のレシーバーとして動作させることです。 これが完了すると、Collector を各ノード上でエージェントとして実行し、そのホストのプロファイルを収集して OTLP で転送できるようになります。 このアーキテクチャにより、ホストメタデータやシステムメトリクスの取得など、厳密にはプロファイリングではないエージェントの特定の部分を抽出してプロセッサーに移すことができ、エージェントをより軽量でモジュラーにできます。

Collector のサポート

v0.112.0 以降、OpenTelemetry Collector はプロファイリングデータの受信、処理、エクスポートが可能になり、OTLP を使用したプロファイルの取り込みとエクスポートをサポートしています。

Collector で service.profilesSupport フィーチャーゲートを有効にし、以下のような設定を行うことで試すことができます。 この設定は OTLP を使用してデータを取り込み、エクスポートします。

receivers:
  otlp:
    protocols:
      grpc:
exporters:
  otlp:
    endpoint: 'localhost:4317'
service:
  pipelines:
    profiles:
      receivers: [otlp]
      exporters: [otlp]

この機能は現在 Collector で使用できますが、本番環境での使用はまだ推奨しません。 まだ活発に開発中であり、上述の OTLP の変更のような破壊的変更が予想されます。

ただし、Collector でのこのサポートにより、Collector のすべてのレシーバー、プロセッサー、エクスポーターでプロファイルのサポートを追加できるようになりました。 将来のよりスムーズな統合を可能にし、潜在的な問題を早期に発見するために、ぜひ追加することをお勧めします。 バグの報告や貢献をしたい場合は、contrib リポジトリで確認できます。

セマンティック規約と仕様

相互運用性を向上させるために、Profiling SIG はプロファイリングの OpenTelemetry セマンティック規約にも取り組みました。 また、プロファイリングの OpenTelemetry 仕様を導入する作業も進行中です。 この作業は今後も続き、さまざまなプラットフォーム、ツール、その他の OTel シグナルにわたる幅広い採用を可能にするはずです。

次のステップ

OpenTelemetry でのプロファイルのサポートは急速に進んでおり、安定したシグナルを提供できるようになるまでにはまだ遠いですが、すでに試してみることができ、各自のモジュールに統合できるようになったことを嬉しく思います。

プロファイリングの前進に貢献したい方や、統合で問題に直面している方は、Profiling SIG がいつでも喜んでお手伝いします。

CNCF Slack の #otel-profiles でお会いしましょう。