人気のオープンソース監視システムPrometheusのバージョン3.0がリリースされた。このツールの7年ぶりのメジャーアップグレードとなる。様々な新機能が追加され、ユーザー・エクスペリエンスの向上とワークフローの合理化を目的とした改良が施されている。
完全に刷新されたユーザー・インターフェース(UI)は、Prometheus 3.0でもっとも顕著な変更のひとつである。再設計されたUIは、乱雑さを取り除くことを意図しており、将来を見据えた新しい技術スタックであるMantine UIに基づいている。より分かりやすいナビゲーションのためのPromLensスタイルのツリービュー、より優れたメトリクスエクスプローラー、メトリクス検索結果の "Explain "タブがあり、行動インサイトも得られるようになっている。今のところ、古いUIはまだ機能フラグでアクセス可能だが、チームはより良い体験のために新しいUIに切り替えることをユーザーに推奨している。
Better Stack YouTubeチャンネルのビデオでは、James Shopland氏が、以前のバージョンのPrometheusでは適切なスニペットYAMLを表示するだけだったPromQLハイライトが、グループページ以外でも利用できるようになったことを説明している。新しいUIでは、PromQLクエリを小さな式を集めたツリー構造として視覚化し、クエリの一部にカーソルを合わせることでメトリクス結果を見ることができる。これは、PrometheusのPromLensクエリビルダーから採用された機能の1つである。
ユーザーがどのようにメトリクスをドリルダウンし、新しいコンテキスト情報を見ることができるようになったかについて、Shopland氏は次のように語っている。
新バージョンをバージョン2.0と比較すると大きなアップグレードがあります。バージョン2.0では、クリックしたときに表示されるのはメトリクスのリストだけで、何の情報もありませんでした。- James Shopland(ジェームズ・ショップランド)
OpenObservability Talks YouTubeチャンネルのビデオでは、Dotan Horovits氏とJulius Volz氏が、Prometheusのコンポーネント、特にPrometheusのメインUIとアラートマネージャの間のUIエクスペリエンスを統一することによって、PrometheusのUIとUXを改善する広範な計画について議論している。現在、これらは異なる外観と技術的基盤を持っており、アラートマネージャーはElmを使っているが、新しいPrometheus UIはReactを使っている。アラートマネージャーのUIを新しいPrometheus UIと同じフレームワークとスタイルで再構築するという共有されたビジョンは存在するが、プロジェクトがボランティア主導であるため、まだ実現していない。講演者は、これはフロントエンド開発者がプロジェクトに貢献する機会だと説明する。
UI以外では、Prometheus 3.0は、OpenTelemetryへの最近の取り組みをサポートするためにいくつかの機能を追加している。OTLP Ingestionが含まれ、それによりPrometheusは現在はOpenTelemetry Metrics Protocol (OTLP)を使ったメトリクスをネイティブで直接受け取ることができる。また、UTF-8の正規化により、メトリクス名のドットからアンダースコアへの自動変換のような問題に遭遇することなく、OpenTelemetryメトリクスの保存とクエリ実行ができるようになった。
その他の新機能は以下の通りである。
- **リモートライト2.0:**リモート・ライトは、Prometheusインスタンスが収集または受信したメトリクスを他のインスタンスに積極的に送信することを可能にする。このプロトコルのバージョン2では、メタデータ、サンプルデータ、タイムスタンプ、ヒストグラムのネイティブサポートといった強化された機能が提供されている。Kubecon NA 2024のディープダイブで、Richard Hartman氏とJosh Abreu氏は、Remote Write 2.0がどのように文字列インターニングとシンボルテーブルのテクニックを使ってデータ転送を最適化し、結果として、ネットワーク経由のメッセージの60%削減、メモリ割り当ての90%削減、CPU利用の70%削減に至ったかを説明している。
- **ネイティブ・ヒストグラム:**この実験的な機能は、従来のヒストグラムに代わる、より効率的で費用対効果の高い新しいメトリクスタイプを導入する。まだ開発中ではあるが、ネイティブ・ヒストグラムはデータ管理を簡素化する上で大きな可能性を秘めている。Hartman氏とAbreu氏は、同じディープ・ダイブの中で、ネイティブ・ヒストグラムが従来のヒストグラムよりも高解像度のデータを提供し、より効率的で、実装に必要な精神的オーバーヘッドが少ないことを説明している。ネイティブ・ヒストグラムは、これまで隠されていたパターンを明らかにし、完璧なバケット境界を事前に定義する必要性をなくすことができる。
- **UTF-8のサポート:**デフォルトで、Prometheus 3.0は、メトリック名とラベル名に有効なすべてのUTF-8文字を使用できる。これによって、より柔軟性を提供し、手動エンコーディングの必要性を排除する。BlueSkyに寄稿しているJulius Volz氏は、後者の点について注意を促しており、UTF-8文字をエスケープすることの重要性を強調している。
Prometheus3.0は、主にハウスキーピングと合理化に焦点を当てた、いくつかの重大な変更を導入していることに注意することが重要である。これらには、いくつかの非推奨機能フラグの削除、いくつかの設定ファイルの調整、PromQL構文、およびスクレイプ・プロトコルの変更が含まれる。Prometheusチームは、スムーズなアップグレードプロセスを保証し、ユーザーの特定のセットアップに必要な潜在的な調整を特定するために、移行ガイドを確認することを推奨している。この発表では、推奨されるアップグレードパスに注意深く従うようユーザーに助言している。ユーザーは、v3.0に移行する前に、Prometheus 2.xのv2.55にアップグレードすることが推奨される。また、v3.0からのロールバックはv2.55にのみ可能であり、それ以前のバージョンにはロールバックできないことに注意することが重要である。
Prometheusへの今後のさらなる変更点として、デルタ・テンポラリティのサポート(合計金額ではなく、変更されたカウンター値のみの送信を可能にする)などが追加される予定である。Prometheus3.0は現在ダウンロード可能である。新機能、変更点、アップグレード手順に関する詳細情報については、Prometheusの公式ブログ記事とドキュメントを参照するようにと、ブログ記事は締めくくっている。