DatadogのKubernetesのCPUは1コア、メモリは1GiBなど値で取得されます。 システム状態としては使用率で監視するほうが便利ですが、どのように考えればいいかメモです。
Kubernetes Resource Utilization
どのように考えればいいかのヒントは、Datadogのドキュメントにああります。この画面で、Kubernetes Resource UtilizationでCPUやメモリを使用率で表示しており、次のように定義されています。
CPU usage/requests: 使用量の合計をリクエストの合計で割ったパーセンテージ。 Memory usage/requests: 使用量の合計をリクエストの合計で割ったパーセンテージ。
ダッシュボードなどで同様にクエリ+式でかけばよいですね。
引用: 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コアやメモリの値も大事ですが、使用率じゃないと普段の監視がしにくいんですよね。標準で出してくれてもいい気もしますが、算出できるのでまぁよし。