Prometheus 2.0 を発表
2017年11月8日筆者: Prometheus チームを代表して Fabian Reinartz
約1年半前、Prometheus 1.0 をリリースしました。このリリースはプロジェクトにとって重要な節目となりました。Prometheus のシンプルかつ非常に強力な監視哲学を構成する幅広い機能セットに到達したのです。
それ以来、様々なサービスディスカバリ連携の追加・改善、PromQL の拡張、そしてプラグイン可能な長期ストレージソリューションを可能にするためのリモートAPIの初期バージョンの実験を行ってきました。
しかし、メジャーリリースとなる新たなバージョンに値する変更は、他に何があったのでしょうか?
Prometheus 2.0
Prometheus はシンプルで堅牢な運用モデルを備えており、ユーザーはそれをすぐに気に入ってくれるようになりました。しかし、インフラストラクチャの分野は静止しておらず、Kubernetes や Mesos のようなプロジェクトは、ソフトウェアのデプロイと管理の方法を急速に変化させています。監視対象の環境はますます動的になっています。
Prometheus のパフォーマンスへの負荷をますます感じるようになりました。ストレージサブシステムは、予想される負荷に対して慎重な設定が必要でした。Prometheus 1.6 は、自動チューニング機能によりこの負担を大幅に軽減しました。それでもなお、ユーザーはいずれかの避けられないハードリミットに到達する可能性がありました。
ストレージ
2017年初頭、内部で変化が起こり始めました。当初は、より高パフォーマンスな新しい時系列データベースの実験として始まったものが、実用的なベンチマークで迅速に確認されました。過去6ヶ月間、私たちはこの作業を独立した時系列データベースとして安定させ、Prometheus 自体に再統合することに忙殺されていました。その結果、Prometheus 2.0 は実質的にすべての側面で大幅な改善を遂げ、パフォーマンスが著しく向上しました。クエリレイテンシはより一貫性があり、特に高いシリーズの変更率に直面した場合のスケーラビリティが向上しました。さまざまな実際のプロダクションシナリオで測定されたリソース消費量も大幅に減少しました。
- CPU使用率は、Prometheus 1.8 と比較して **20%~40%** に削減されました。
- ディスク容量使用率は、Prometheus 1.8 と比較して **33%~50%** に削減されました。
- ディスクI/O は、クエリ負荷が少ない状態では通常 **平均1%未満** です。

また、今後何年にもわたって、ますます動的になる現代のコンピューティング環境の特性に対応できるよう、十分に装備されています。
Staleness handling(期限切れ処理)
さらに、Prometheus のエクスペリエンスをより一貫性があり直感的にするために、大小さまざまな変更が加えられました。最も注目すべきは、最も古くから要望の多かったロードマップ項目の一つである staleness handling(期限切れ処理) です。新しい改善により、監視対象のターゲットやそれらのターゲットからのシリーズが消滅した場合、明示的に追跡されるようになり、クエリのアーティファクトが減少し、アラートの応答性が向上します。
その他の改善
Prometheus 2.0 には、データベース全体のスナップショットバックアップ の組み込みサポートも追加されました。
また、録音ルールとアラートルールをカスタムフォーマットから汎用的なYAMLフォーマットに移行しました。これにより、設定管理やテンプレートとの連携が容易になります。
その他にも多くの小さな変更やクリーンアップが行われました。変更点の概要と設定の適応方法については、Prometheus 1.x から 2.0 への移行ガイド を参照してください。しかし、心配はいりません。Prometheus 2 は、あなたが愛するようになった Prometheus と同じであり、さらに高速で、操作と使用がさらに簡単になっています。
今後の展望
新しいストレージサブシステムは、アクセス可能で拡張可能なように設計されています。これは、Prometheus に直接統合された新機能だけでなく、その上に構築できるカスタムツールにも適用されます。シンプルでオープンなストレージフォーマットとライブラリにより、ユーザーは動的な保持ポリシーのようなカスタム拡張機能を簡単に構築できます。これにより、Prometheus 自体に複雑さをもたらすことなく、幅広い要件を満たすストレージレイヤーが可能になり、Prometheus はコア目標に集中できるようになります。
リモートAPIは、Prometheus のシンプルさによる信頼性のモデルを犠牲にすることなく、長期ストレージの要件を満たすために進化し続けます。
試してみてください!
いつものように、公式バイナリ や コンテナイメージ をダウンロードして、Prometheus 2.0 を試すことができます。Prometheus を使い始めるためのチュートリアルについては、はじめに ページを参照してください。
Prometheus 1.x からアップグレードする場合、移行期間中に必要な調整と、古い Prometheus サーバーから データを読み取る 方法については、移行ガイド を参照してください。
最後に、プレリリース版を広範囲にテストし、問題のデバッグに協力してくださったすべてのユーザーに感謝いたします。この大きな節目は、皆様なしでは達成できませんでした!