先月リリースされた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つの大きな意味を持ちます。- TLS 1.0と1.1がクライアント側でデフォルトで無効になっています。これらのいずれかを使用している場合、Prometheusでは
min_version
設定パラメータでTLSの最小バージョンを定義できるようになりました(#10610)。 - SHA-1ハッシュ関数で署名された証明書は拒否されます。これは自己署名されたルート証明書には適用されません。
#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 へ昇格しました。
もっと詳しく知りたいですか?Kubernetes 1.24における新機能は?をチェックしてください!
#10369 クエリの計算コストに関する新しい統計情報
Prometheusには、すでにクエリーのタイミング統計がありました。しかし、応答時間をベースにしているため、システムの負荷や他の並列クエリーによって、同じクエリーでも実行時間が異なることがあります。そこで、今回のバージョンアップでは、totalQueryableSamples
, totalQueryableSamplesPerStep
, and peakSamples
という3つの新しい統計情報を搭載することにしました。これは、複雑なクエリーの最適化に取り組んでいるエンジニアにとって大きなニュースです。これにより、構築したクエリーの性能を評価し、比較することができるようになりました。
Aleksandar Ponjavic – Engineering Manager at Sysdig
#10317, #10500 TSDB 起動時の最適化
このバージョンでは、TSDBの起動に関わる2つの機能強化が行われています。- 一時ファイルの削除(#10317)ですが、これはシナリオによってはスキップされる可能性があるものです。この方法により、Prometheusは必要以上のディスクスペースを使用しないことを保証し、クラスターのより良い市民になることができます。
- 起動時にWrite Ahead Log (WAL)を読み込むより効率的な方法(#10500)。これにより、Prometheusが非制御停止後にTSDBを更新するのに必要な時間が大幅に短縮されます。
#10498 CPUの使用量をコンテナのCPUリミット値まで自動で制限
Prometheus 2.35では、GoのGOMAXPROCS
環境変数をコンテナCPUリミットに設定する新機能が追加されました。この機能により、プロセスがリミット値を超えて消費することがなくなります。この機能はまだ実験的なもので、 --enable-feature=auto-gomaxprocs
で有効にすることができます。Carlos Arilla, Technical product manager at Sysdig
以上が私たちのチームによって選ばれた新機能ですが、他にもまだまだあります。Prometheus 2.35の公式リリースノートには、変更点の全リストが掲載されています。