【Google】BillingLibrary5で大きく変わるサブスクの定期購入アイテム
saratogax
サラトガ牧場
Kubernetes を運用していると、稼働中の Pod 全体で CPU やメモリをどれくらい使っているかをサクッと確認したい場面があります。
以下は特定のタイミングで kubectl top pods を実行した結果で、nginx の Pod の CPU と Memory のリソースがリスト化されています。
NAME CPU(cores) MEMORY(bytes)
nginx-cb8bbf5f6-9mpx2 4m 651Mi
nginx-cb8bbf5f6-ccwvf 3m 641Mi
nginx-cb8bbf5f6-q9trz 3m 636Mi
nginx-cb8bbf5f6-zzsbx 4m 641Miこの程度ならパッと見で CPU と memory の合算も可能。
ただ、数が多いと大変ですよね。
今回は、このようなテキスト出力されたものの合計値を awk で手軽に計算します。
冒頭のリストが出力されているファイルを「log.txt」とします。
CPU は 2 列目なので、以下のように 2 列目を合計して単位の「m」を追記すれば OK ですね。
$ awk '{t += $2} END {print t"m"}' log.txt
14mメモリも同じ考え方でいけます。
$ awk '{t += $3} END {print t"Mi"}' test.log
2569Mi個別にやるのは面倒なので、両方一緒に計算して表示させたいですよね。
$ awk '{c += $2; m += $3} END {print c"m",m"Mi"}' test.log
14m 2569Miスプレッドや Excel に貼り付けて計算させてもいいですが、ちょっとしたものならコマンドラインでサクッとやってしまいたいですね。
今回は awk が都合のいいように、ヘッダ行の値や各明細の単位を無視して計算してくれました。
最初、4m とか 651Mi とか単位がついていると無理かなと思ったのですけどね・・・。
awk は今回のような集計以外にも、ログ調査や文字列加工で活躍するコマンドです。