Prometheus と OpenTelemetry は、現代の監視・トレース技術において重要な役割を果たしています。Prometheus は、メトリクスの収集と可視化に特化したオープンソースツールであり、OpenTelemetry は、トレースとメトリクスの統合的な収集・伝送を目的としたプロジェクトです。CNCF(Cloud Native Computing Foundation)の傘下に屬するこれらの技術は、クラウドネイティブ環境での監視基盤を構築する上で不可欠です。本記事では、Prometheus と OpenTelemetry の互操作性狀態を解説し、技術的要點を整理します。
Prometheus は、メトリクスを「プルベース(Pull-based)」で収集する設計を採用しており、サービスディスカバリーを通じて監視対象を特定し、定期的にメトリクスを取得します。一方、OpenTelemetry は、メトリクスを「プッシュベース(Push-based)」で送信する設計を採用しており、サービスディスカバリーが不要ですが、ネットワークの問題やアプリケーションの離線狀態の區別が困難です。Collector は、OpenTelemetry のデータを処理・変換し、Prometheus などのバックエンドに転送する役割を擔います。
プルベース(Prometheus):サービスディスカバリーにより監視対象を特定し、定期的にメトリクスを取得します。優點はサービスの狀態(例:失敗したプル)を監視できることですが、メトリクスのメモリ管理が必要で、重複したプルはリソースを浪費します。
プッシュベース(OpenTelemetry):メトリクスを直接送信するため、サービスディスカバリーが不要ですが、アプリケーションの離線狀態とネットワークの問題を區別できず、変更がない場合のデータ送信がありません。
Prometheus 3.0 は、UTF-8 文字セットをデフォルトでサポートしており、外文字、記號、表情記號を含むメトリクス名を処理できます。これにより、OpenTelemetry の語義的約定で一般的なドット(.)の問題が解消されます。一方、OpenTelemetry Collector の設定では、データベースへのエクスポーズ端點を迴避するフラグを設定し、UTF-8 をアンダースコア(_)に変換する名前変換戦略を提供する必要があります。
Prometheus 3.0 は、Delta メトリクスを Cumulative 形式に変換するための Delta to Cumulative プロセッサを導入しました。これにより、OpenTelemetry から受信した Delta メトリクスを Cumulative に変換し、狀態を維持して計算できます。今後の計畫では、クエリフェーズでの Delta メトリクス処理や、PromQL の関數を追加して効率を向上させる予定です。
Prometheus 3.0 は、原生直方図を導入し、パフォーマンスと精度を向上させました。これは、単一のリクエストで完全な直方図を含むことができ、OpenTelemetry Collector のリモートレシーバーで使用されます。OpenMetrics のテキストフォーマットの実裝を完璧にし、クエリセットの後続ニーズを解決する必要があります。現在は安定した狀態に近づいています。
v2 では、原生と古典的な直方図、エクゼンプル(指標とトレースの関連)、メタデータ(シリーズではなく指標名に作用)、タイムスタンプのサポートが追加されました。一部の書き込み統計情報(例:書き込み成功/失敗データ量)がサポートされ、今後、リモート書き込みエクスポーターに統合される予定です。
現在の戦略では、リソース屬性を単一のメトリクス(target_info)に変換し、PromQL JOIN で結合しますが、JOIN 操作は使用制限と見なされます。今後の計畫では、ユーザーが変換するべき屬性をカスタマイズできるようにする予定ですが、Prometheus の再起動が必要で、タイムシリーズ ID の変更が発生し、メモリ負荷が増加する可能性があります。UX 研究が進行中で、OpenTelemetry の Entities 提案を統合して Kubernetes、コンテナなどの屬性を區別する計畫です。
Prometheus と OpenTelemetry の互操作性は、クラウドネイティブ環境での監視基盤を構築する上で重要な課題です。UTF-8 の支援、Delta と Cumulative の変換、リモート書き込みプロトコルの改善、リソース屬性の処理など、技術的要點が複雑ですが、これらの進展により、より効率的で柔軟な監視ソリューションが実現されます。今後の改善方向を踏まえ、ユーザーは適切な設定と運用を通じて、これらの技術を最大限に活用できるでしょう。