web-dev-qa-db-ja.com

KubernetesのPrometheusでポッドの(ミリ)コアCPU使用率を取得するにはどうすればよいですか?

Kubernetesのv1.9.2カスタムセットアップを実行し、Prometheus v2.1.0を使用してさまざまなメトリックをスクレイプします。とりわけ、私はkubeletおよびcAdvisorメトリックをスクレイプします。

質問に答えたいと思います: "私のデプロイメントでrequestslimitsによって定義されたCPUリソースのうち、実際にポッド(およびそのコンテナー)によって使用されているのは、 (ミリ)コア? "

利用可能なスクレイピングされたメトリックはたくさんありますが、そのようなものはありません。 CPU使用時間(秒)で計算できるかもしれませんが、方法がわかりません。

私はそれが不可能だと考えていました-友人が彼女が彼女のクラスターでHeapsterを実行していると私に言うまで、それは組み込みのGrafanaにグラフがあります正確にそれは:ポッドの個々のCPU使用量を示しています(ミリ)コアのコンテナ。

HeapsterはkubeletおよびcAdvisorメトリックも使用するので、どうすれば同じものを計算できるのでしょうか。 InfluxDBのメトリックの名前はcpu/usage_rateですが、Heapsterのコードを使用しても、どのように計算されるのか理解できませんでした。

どんな助けでもありがたいです、ありがとう!

7
Alex

ポッドのCPU使用率を計算するために、_container_cpu_usage_seconds_total_メトリックを使用しています。このメトリックには、コアごとにコンテナーによって消費されたCPU秒の合計が含まれます(ポッドは複数のコンテナーで構成され、各コンテナーは複数のコアにわたってスケジュールできるため、これは重要です。ただし、メトリックには、集計に使用できる_pod_name_アノテーションがあります)。特に興味深いのは、そのメトリックの変化率です(これは PromQLのrate() function で計算できます。 )。 1秒以内に1増加すると、ポッドはその秒で1 CPUコア(または1000ミリコア)を消費します。

次のPromQLクエリは、まさにそれを実行します。5分間の平均ですべてのポッドのCPU使用率を計算します( sum(...) by (pod_name) 操作を使用)。

_sum(rate(container_cpu_usage_seconds_total[5m])) by (pod_name)
_
9
helmbert