この記事はOpenTelemetry Advent Calendar 2024の24日目の記事です。
OpenTelemetryがProfileをサポートするといったニュースが出たのが去年あたりです。その後どうなっているのかをみてみます。
プロファイリングは、アプリケーションの実行時に動作とパフォーマンスを動的に検査し、リソース使用状況を把握する手法です。継続的なプロファイリングは、コードレベルでのデータを長期的に保存・分析でき、開発者やパフォーマンスエンジニアがコードの動作を深く理解するための重要な技術です。OpenTelemetryのプロファイリングシグナルは、他の遠隔測定データとプロファイルを統合し、リソースの枯渇やユーザー体験の低下を特定のコード行や関数に関連付ける新しい手法を提供するといったことが書かれています。
その6ヶ月後に出た記事です。プロファイリング機能の現状と進化について解説されています。OTLPの改良やeBPFエージェントの改良。Otelコレクター側の対応などが進んでいると書かれています。Profileの修正は以下のあたりで入っている。
以下のように書けるようになっている。
receivers: otlp: protocols: grpc: exporters: otlp: endpoint: 'localhost:4317' service: pipelines: profiles: receivers: [otlp] exporters: [otlp]
opentelemetry-ebpf-profiler
eBPFを使用してアプリケーションのプロファイリングを行うツールです。このプロファイラーは、アプリケーションのパフォーマンスデータを収集し、OpenTelemetryの他のシグナル(例: メトリクスやトレース)と統合することで、詳細な分析を可能にするツールとのこと。
元々はelastic/otel-profiling-agent としてホストされていたものがOpenTelemetryのリポジトリに来たらしいです。
利用ケース
- パフォーマンスボトルネックの特定
- リソース使用効率の向上
- サービスの健全性やユーザー体験の最適化
まとめ
他のテレメトリデータとProfileの統合はとても楽しみです。この統合により、開発者は高いリソース使用量やパフォーマンスのボトルネックを特定のトレースやログ エントリと関連付けることができより調査などがしやすくなる世界になって欲しいですね。