Prometheus 2.35 – 新機能は?

By 清水 孝郎 - MAY 8, 2022

SHARE:

本文の内容は、2022年5月5日にDavid de Torres Huertaが投稿したブログTen considerations for securing cloud and containers(https://sysdig.com/blog/prometheus-2-35-whats-new/)を元に日本語に翻訳・再構成した内容となっております。

先月リリースされたPrometheus 2.35では、クラウドプロバイダーとのより良い統合に焦点が当てられています。また、サービスのディスカバリー、パフォーマンス、リソースの使用状況も改善されました。

主要な変更点の1つは、Go v1.18への移行です。TLS 1.0、1.1、およびSHA1ハッシュ関数で署名された証明書のサポートに、いくつかの変更がもたらされました。

第1回 ” Prometheus 2.35 – 新機能は? ”へようこそ。私たちは、オープンソースのデファクトスタンダードモニタリングツールであるPrometheusを愛しています!

この記事では、いくつかの新機能と、それらがPrometheusコミュニティに与えるであろう影響について分析します。以下は編集者のピックアップ記事です。


#10501 Go 1.18でビルド

Go 1.18がPrometheusをビルドする際のデフォルトバージョンになりました。これは認証において2つの大きな意味を持ちます。

David Lorite – Integrations Engineer at Sysdig

#10516, #10476, #10365 クラウドプロバイダーとの統合の改善

以前のバージョンと同様に、Prometheusはクラウドプロバイダーへのより良いサポートを追加しています。このリリースでは、Kubernetesのサービスディスカバリーで設定すると、Google Cloud Platform(GCP)のKubernetesクラスター(GKEなど)で認証するためのライブラリが含まれています。

Azureのサービスディスカバリーがより安定するようになりました。このリリース以前は、いずれかのノードがリーチャブルでない場合、クラスター全体のサービスディスカバリーが失敗しました。現在では、残りの利用可能なノードでサービスディスカバリーが継続されます。また、サービスディスカバリー中にノードの準備ができていない場合に登録するためのメトリクス(prometheus_sd_azure_failures_totalが含まれています。この新しいメトリクスを使用して、Azureサービスディスカバリーの問題を検出するアラートを設定することができます。

rate(prometheus_sd_azure_failures_total[5m]) > 0

さらに、Azureサービスディスカバリには、 ResourceGroup フィルターが含まれるようになりました。これは、特に複数のAKSクラスターを実行している場合、AzureではARM APIリクエストがレート制限されているため、Prometheusサービスディスカバリーの負荷を軽減するのに役立ちます。

Carlos Adiego – Integrations Engineer at Sysdig


#10080, #9570 Kubernetesサービスディスカバリーの機能強化

このバージョンでは、Kubernetesのサービスディスカバリーに2つのエキサイティングな変更が含まれています。

  • ポッドロールを通じて選択されたターゲットに、ノードのメタデータ(名前、アドレス、ラベルのアノテーション)が追加されたことです(#10080)。これにより、特定のノードからのターゲットのリラベル許可リストまたは拒否リストでフィルターを追加することができます。さらに興味深いのは、すべてのメトリクスにノードラベルを追加し、ノードやノードラベル(またはアノテーション)によるグループ化を行うことができるようになることです。また、ネームスペースメタデータも同様に含めるという提案もあります。すべてのノードラベルをメトリクスに追加するには、relabelingの中でlabelmap というアクションを使うことができます。

    action: labelmap regex: __meta_kubernetes_node_(.+) replacement: 'kubernetes_node_$1'

  • EndpointSlice Kubernetes エンドポイントは Kubernetes 1.22 で非推奨となったため、v1Beta1 から v1 へ昇格しました。
David de Torres – Engineering manager at Sysdig


もっと詳しく知りたいですか?Kubernetes 1.24における新機能は?をチェックしてください!


#10369 クエリの計算コストに関する新しい統計情報

Prometheusには、すでにクエリーのタイミング統計がありました。しかし、応答時間をベースにしているため、システムの負荷や他の並列クエリーによって、同じクエリーでも実行時間が異なることがあります。そこで、今回のバージョンアップでは、 totalQueryableSamplestotalQueryableSamplesPerStep, and peakSamplesという3つの新しい統計情報を搭載することにしました。

これは、複雑なクエリーの最適化に取り組んでいるエンジニアにとって大きなニュースです。これにより、構築したクエリーの性能を評価し、比較することができるようになりました。

Aleksandar Ponjavic – Engineering Manager at Sysdig

#10317, #10500 TSDB 起動時の最適化

このバージョンでは、TSDBの起動に関わる2つの機能強化が行われています。

  • 一時ファイルの削除(#10317)ですが、これはシナリオによってはスキップされる可能性があるものです。この方法により、Prometheusは必要以上のディスクスペースを使用しないことを保証し、クラスターのより良い市民になることができます。
  • 起動時にWrite Ahead Log (WAL)を読み込むより効率的な方法(#10500)。これにより、Prometheusが非制御停止後にTSDBを更新するのに必要な時間が大幅に短縮されます。
Jesús Ángel Samitier – Integrations Engineer at Sysdig


#10498 CPUの使用量をコンテナのCPUリミット値まで自動で制限

Prometheus 2.35では、Goの GOMAXPROCS 環境変数をコンテナCPUリミットに設定する新機能が追加されました。この機能により、プロセスがリミット値を超えて消費することがなくなります。この機能はまだ実験的なもので、 --enable-feature=auto-gomaxprocsで有効にすることができます。

Carlos Arilla, Technical product manager at Sysdig

以上が私たちのチームによって選ばれた新機能ですが、他にもまだまだあります。Prometheus 2.35の公式リリースノートには、変更点の全リストが掲載されています。