OpenTelemetry へのコミットメント
2024年3月13日筆者: Goutham Veeramachaneni (@Gouthamve) および Carrie Edwards (@carrieedwards)
OpenTelemetry プロジェクト は、トレース、メトリクス、ログなどのテレメトリデータの作成と管理のために設計された可観測性フレームワークおよびツールキットです。シグナル間の整合性のある仕様と、ベンダーロックインを減らすという約束により、幅広い採用が進んでおり、私たちはこれに興奮しています。
2023年を振り返る
ここ数年、私たちは OpenTelemetry コミュニティと協力し、OpenTelemetry と Prometheus が双方向で連携できるように努めてきました。これにより、両システム間で変換するための公式仕様の策定と、Prometheus メトリクスを OpenTelemetry Collector に取り込んだり、その逆を行ったりする実装が生まれました。
それ以来、私たちは Prometheus にメトリクスを保存する際に OpenTelemetry ユーザーが直面する課題 を理解するのに多くの時間を費やし、それに基づいて それらにどう対処できるか を検討しました。提案されている変更の中には、プッシュとプル両方のサポートなど、いずれかの運用上の約束を破らないように慎重に検討する必要があるものもあります。PromCon Berlin 2023 では、講演の一つ で私たちのアイデアを要約しようと試みました。
ベルリンでの開発サミット では、これらの変更点と OpenTelemetry に対する一般的なスタンスについて深く議論することに時間の大部分を費やし、広く合意されたのは「OpenTelemetry メトリクスのデフォルトのストアとなること」でした。
このイニシアチブを主導する開発者の中心グループを結成し、2024年に Promethus 3.0 をリリースする予定です。その重要な機能の1つとして OTel サポートが含まれます。2024年に登場する機能のプレビューを以下に示します。
これからの1年
OTLP インジェスト GA
Prometheus v2.47.0 (2023年9月6日リリース) では、Prometheus に OTLP インジェストの実験的サポートを追加しました。私たちはこれを継続的に改善しており、陳腐化のサポートを追加し、安定した機能にする予定です。また、順不同インジェストのサポートも安定版としてマークする予定です。これには、ネイティブ / 指数ヒストグラムのサポートの 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 プロトコル (OTLP) は注目を集めており、私たちは Prometheus エコシステム全体でこれをサポートしたいと考えています。
Prometheus サーバー、SDK、エクスポーターに OTLP のサポートを追加したいと考えています。これにより、Prometheus SDK で計測されたあらゆるサービスが OTLP をプッシュできるようになり、OpenTelemetry ユーザーにとって豊富な Prometheus エクスポーターエコシステムが利用可能になります。
しかし、OpenMetrics 公開形式は、Prometheus とプルベースのユースケース向けに最適化/簡素化された形式として維持・開発していく予定です。
デルタ時間性
OpenTelemetry プロジェクトは、オブザーバビリティエコシステムでいくつかのユースケースを持つデルタ時間性もサポートしています。多くの Prometheus ユーザーが、さまざまな理由で statsd を実行し、statsd_exporter を使用しています。
私たちは Prometheus サーバーで OpenTelemetry のデルタ時間性をサポートしたいと考えており、その実現に向けて取り組んでいます。
コントリビューション募集!
ご覧の通り、Prometheus には多くの新しくエキサイティングな機能が登場します!オブザーバビリティに関する最も重要なオープンソースプロジェクトの2つが交わる分野での作業に挑戦的で興味深いと感じられるなら、ぜひご参加いただきたいです!
今年はガバナンスの変更も進行中で、メンテナーになるプロセスがこれまで以上に簡単になります!Prometheus に影響を与えたいと思ったことがあるなら、今が始める絶好の機会です。
私たちの最初の焦点は常に、上記すべての作業をどのように組織しているかについて、可能な限りオープンで透明であることでした。これにより、皆様も貢献できます。私たちは、このイニシアチブをサポートし、これらの機能の実装を支援してくれるコントリビューターを探しています。Prometheus 3.0 公開ボード と Prometheus OTel サポートマイルストーン をチェックして、機能開発の進捗状況と、貢献できる方法を確認してください。
結論
提案された変更の中には、大規模で侵襲的なもの、または Prometheus の元のデータモデルからの根本的な逸脱を含むものもあります。しかし、Prometheus 3.0 で大きな破壊的変更がなく、ほとんどのユーザーが影響なくアップグレードできるように、これらの変更を段階的に導入する予定です。
Prometheus のこの新しい章に乗り出すことを楽しみにしています。提案された変更に関するフィードバックをお待ちしております。