OpenTelemetry へのコミットメント
2024年3月13日筆者: Goutham Veeramachaneni (@Gouthamve) and Carrie Edwards (@carrieedwards)
OpenTelemetryプロジェクトは、トレース、メトリクス、ログなどのテレメトリデータを生成・管理するためのオブザーバビリティフレームワークおよびツールキットです。シグナル間の仕様の一貫性と、ベンダーロックインを削減するという約束により、広く採用が進んでおり、私たちはこの点に興奮しています。
2023年を振り返る
過去数年間、私たちはOpenTelemetryコミュニティと協力し、OpenTelemetryとPrometheusがお互いを双方向にサポートするようにしてきました。これにより、2つのシステム間で変換するための公式仕様の作成、およびPrometheusメトリクスをOpenTelemetry Collectorに取り込み、その逆も可能にする実装が実現しました。
それ以来、私たちはOpenTelemetryユーザーがPrometheusにメトリクスを保存する際の課題を理解することに多くの時間を費やし、それに基づいてそれらをどのように解決できるかを検討しました。提案されている変更の一部は、プッシュとプル(push and pull)の両方のサポートなど、どちらかの側の動作保証を壊さないように慎重な検討が必要です。PromCon Berlin 2023では、私たちのアイデアをトークの1つで要約しようとしました。
ベルリンで開催された開発者サミットでは、これらの変更点とOpenTelemetryに関する我々の一般的なスタンスについて深く議論する時間を多く費やしました。そして、我々の全会一致の意見は「OpenTelemetryメトリクスのデフォルトストアになりたい」です!
このイニシアチブを主導するコア開発者グループを結成し、2024年にはOTelサポートを主要機能の一つとしてPrometheus 3.0をリリースする予定です。以下は、2024年に予定されていることのプレビューです。
来たる年
OTLP取り込み GA
2023年9月6日にリリースされたPrometheus v2.47.0では、PrometheusへのOTLP取り込みの実験的なサポートを追加しました。この機能は常に改善を続けており、staleness(鮮度低下)のサポートを追加して安定した機能にする予定です。また、out-of-order(順不同)取り込みのサポートもGA(一般公開)とします。これには、ネイティブ/指数ヒストグラムのサポートもGAに含みます。
UTF-8メトリクス名およびラベル名のサポート
OpenTelemetryセマンティック規約では、名前空間の区切り文字として「.」の使用を推奨しています。例えば、http.server.request.duration のような形式です。しかし、Prometheusは現在、より限定的な文字セットを必要とするため、Prometheusに取り込む際にメトリクス名を http_server_request_duration に変換しています。
これは不必要な不一致を引き起こすため、すべてのラベルとメトリクス名にUTF-8サポートを追加してこの制限を解除する作業を行っています。進捗状況はこちらで追跡されています。
リソース属性のネイティブサポート
OpenTelemetryは、メトリクス属性(http.status_codeのような、メトリクス自体を識別するためのラベル)とリソース属性(k8s.pod.nameのような、メトリクスのソースを識別するためのラベル)を区別しますが、Prometheusはよりフラットなラベルスキーマを持っています。これは、こちらで詳述されている多くのユーザビリティ問題につながります。
この問題に対して、様々な側面(クエリ、UX、ストレージなど)からいくつかの解決策を検討中ですが、リソース属性でのフィルタリングとグルーピングを非常に容易にすることが目標です。これは進行中の作業であり、フィードバックや協力を求めています!
エコシステムにおけるOTLPエクスポート
Prometheusリモートライトは、すでに主要なオブザーバビリティプロジェクトやベンダーのほとんどでサポートされています。しかし、OpenTelemetry Protocol (OTLP) の重要性が高まっており、Prometheusエコシステム全体でそれをサポートしたいと考えています。
Prometheusサーバー、SDK、およびエクスポーターへのサポートを追加したいと考えています。これにより、Prometheus SDKでインストルメントされたサービスはOTLPを*プッシュ*できるようになり、OpenTelemetryユーザーにリッチなPrometheusエクスポーターエコシステムが解放されます。
ただし、OpenMetricsエクスポートフォーマットは、Prometheusおよびプルベースのユースケース向けに最適化/簡略化されたフォーマットとして維持・開発していく予定です。
デルタ(Delta)のテンポラリティ
OpenTelemetryプロジェクトは、オブザーバビリティエコシステムにいくつかのユースケースがあるデルタテンポラリティもサポートしています。多くのPrometheusユーザーは、さまざまな理由でまだstatsdを実行しており、statsd_exporterを使用しています。
PrometheusサーバーでOpenTelemetryのデルタテンポラリティをサポートしたいと考えており、そのために取り組んでいます。
貢献を呼びかけます!
ご覧の通り、Prometheusには多くの新しくエキサイティングな機能が追加されます!オブザーバビリティに関する最も関連性の高い2つのオープンソースプロジェクトの交差部分で働くことに、挑戦的で興味をそそられると感じるなら、ぜひご参加ください!
今年は、メンテナーになるプロセスをこれまで以上に容易にするガバナンスの変更も進行中です!Prometheusに影響を与えたいと思ったことがあるなら、今が始めるのに最適な時期です。
私たちの最初の焦点は、上記のすべての作業をどのように組織しているかについて、できる限りオープンかつ透明にすることであり、それによってあなたも貢献できるようになります。このイニシアチブをサポートし、これらの機能の実装を支援してくれる貢献者を探しています。機能開発の進捗状況を追跡し、Prometheus 3.0公開ボードとPrometheus OTelサポートマイルストーンを確認し、あなたが貢献できる方法をご覧ください。
結論
提案されている変更の一部は大規模で侵襲的であったり、Prometheusの元のデータモデルから根本的に逸脱したりするものです。しかし、これらの変更は段階的に導入する予定であり、Prometheus 3.0ではメジャーな破壊的変更はなく、ほとんどのユーザーは影響なくアップグレードできるでしょう。
Prometheusの新しい章に乗り出すことに興奮しており、提案された変更点について皆様からのフィードバックをお待ちしております。