tech.guitarrapc.cóm

Technical updates

DatadogでKubenretesのCPU使用率とメモリ使用率を算出する

DatadogのKubernetesのCPUは1コア、メモリは1GiBなど値で取得されます。 システム状態としては使用率で監視するほうが便利ですが、どのように考えればいいかメモです。

Kubernetes Resource Utilization

どのように考えればいいかのヒントは、Datadogのドキュメントにああります。この画面で、Kubernetes Resource UtilizationでCPUやメモリを使用率で表示しており、次のように定義されています。

CPU usage/requests: 使用量の合計をリクエストの合計で割ったパーセンテージ。
Memory usage/requests: 使用量の合計をリクエストの合計で割ったパーセンテージ。

ダッシュボードなどで同様にクエリ+式でかけばよいですね。

alt text

引用: https://docs.datadoghq.com/ja/infrastructure/containers/kubernetes_resource_utilization/

Datadogのクエリ

CPU使用率を取得するには次のように書きます。usageとlimitsの単位が異なるので、1000 * 1000 * 1000で変換しています。

a: avg:kubernetes.cpu.usage.total{*}
b: avg:kubernetes.cpu.limits{*}
formula: a / (b * 1000 * 1000 * 1000) * 100

メモリは次のようになります。

a: avg:kubernetes.memory.working_set{*}
b: avg:kubernetes.memory.limits{*}
formula: a / b * 100

まとめ

特にKubernetesでは使用しているCPUコアやメモリの値も大事ですが、使用率じゃないと普段の監視がしにくいんですよね。標準で出してくれてもいい気もしますが、算出できるのでまぁよし。

参考