Prometheus 2.43 の文字列ラベル最適化に関するFAQ
2023年3月21日筆者: Julien Pivotto(@roidelapluie)
Prometheus 2.43 がリリースされ、いくつかの魅力的な機能と強化が含まれています。その中でも重要な改善の1つが、ラベルに新しいデータ構造を使用するstringlabels
のリリースです。このブログ記事では、2.43 リリースとstringlabels
最適化に関するよくある質問に答えます。
stringlabels
リリースとは何ですか?
stringlabels
リリースは、ラベルに新しいデータ構造を使用する Prometheus 2.43 バージョンです。すべてのラベル/値を単一の文字列として格納するため、ヒープサイズが小さくなり、ほとんどのケースで処理速度が向上します。これらの最適化はデフォルトのバイナリには含まれておらず、Go タグstringlabels
を使用して Prometheus をコンパイルする必要があります。
なぜ切り替え可能な機能フラグを採用しなかったのですか?
機能フラグの使用も検討しましたが、メモリオーバーヘッドが大きすぎるため見送りました。そのため、本番環境でこの最適化をテストし、その効果を測定したいユーザー向けに、これらの最適化を含む別のリリースを提供することにしました。
これらの最適化はいつ一般公開されますか?
これらの最適化は、次期 Prometheus 2.44 リリースでデフォルトで利用可能になります。
2.43 リリースを入手するにはどうすればよいですか?
Prometheus 2.43 リリースは、公式の Prometheus GitHub リリース ページで入手でき、ユーザーはそこからバイナリファイルを直接ダウンロードできます。さらに、コンテナを使用したいユーザー向けに Docker イメージも利用できます。
stringlabels の最適化は、これらのデフォルトのバイナリには含まれていません。この最適化を使用するには、2.43.0+stringlabels リリースバイナリ、またはv2.43.0-stringlabels とタグ付けされた Docker イメージをダウンロードする必要があります。
なぜリリースはv2.43.0+stringlabels
で、Docker タグはv2.43.0-stringlabels
なのですか?
セマンティックバージョニングでは、プラス記号 (+) はビルドメタデータを表すために使用されます。したがって、stringlabels
最適化を含む Prometheus 2.43 リリースは、実験的なstringlabels
機能が含まれていることを示すために2.43.0+stringlabels
と命名されています。しかし、Docker タグでは名前にプラス記号を使用できません。そのため、プラス記号はハイフン (-) に置き換えられ、Docker タグはv2.43.0-stringlabels
となっています。これにより、Prometheus Operator などのダウンストリームプロジェクトのセマンティックバージョニングチェックをDocker タグが通過できるようになります。
Prometheus 2.43 リリースには他にどのような注目すべき機能がありますか?
stringlabels
最適化の他に、Prometheus 2.43 リリースにはいくつかの新機能と機能強化が含まれています。主要な追加機能の一部は次のとおりです。
- 異なるファイルからスクレイプ設定を含めるための
scrape_config_files
のサポートを追加しました。これにより、設定の管理と整理が容易になります。 - HTTP クライアントには、プロキシされたリクエストから URL を除外するための
no_proxy
と、環境変数からプロキシを読み込むためのproxy_from_environment
という2つの新しい設定オプションが追加されました。これらの機能により、異なる環境での HTTP クライアントの動作を管理しやすくなります。
機能とバグ修正の詳細については、完全な変更履歴をご覧ください。