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 クライアントの動作を管理しやすくなります。

機能とバグ修正の詳細については、完全な変更履歴をご覧ください。