Prometheus 2.43 文字列ラベル最適化に関するFAQ

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とするために、プラス記号をダッシュ(-)に置き換えました。これにより、DockerタグはPrometheus Operatorなどのダウンストリームプロジェクトのセマンティックバージョニングチェックに合格することができます。

Prometheus 2.43リリースにおけるその他の注目すべき機能は何ですか?

stringlabels最適化の他にも、Prometheus 2.43リリースにはいくつかの新機能と拡張機能が搭載されています。主な追加機能としては、以下のようなものがあります。

  • 異なるファイルからスクレイプ設定を含めるためのscrape_config_filesのサポートを追加しました。これにより、設定の管理と整理が容易になります。
  • HTTPクライアントに、プロキシされたリクエストからURLを除外するためのno_proxyと、環境変数からプロキシを読み取るためのproxy_from_environmentの2つの新しい設定オプションが含まれるようになりました。これらの機能により、さまざまな環境でのHTTPクライアントの動作管理が容易になります。

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