Kubernetesのv1.9.2
カスタムセットアップを実行し、Prometheus v2.1.0
を使用してさまざまなメトリックをスクレイプします。とりわけ、私はkubelet
およびcAdvisor
メトリックをスクレイプします。
質問に答えたいと思います: "私のデプロイメントでrequests
とlimits
によって定義されたCPUリソースのうち、実際にポッド(およびそのコンテナー)によって使用されているのは、 (ミリ)コア? "
利用可能なスクレイピングされたメトリックはたくさんありますが、そのようなものはありません。 CPU使用時間(秒)で計算できるかもしれませんが、方法がわかりません。
私はそれが不可能だと考えていました-友人が彼女が彼女のクラスターでHeapsterを実行していると私に言うまで、それは組み込みのGrafanaにグラフがあります正確にそれは:ポッドの個々のCPU使用量を示しています(ミリ)コアのコンテナ。
Heapsterはkubelet
およびcAdvisor
メトリックも使用するので、どうすれば同じものを計算できるのでしょうか。 InfluxDBのメトリックの名前はcpu/usage_rate
ですが、Heapsterのコードを使用しても、どのように計算されるのか理解できませんでした。
どんな助けでもありがたいです、ありがとう!
ポッドの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)
_