📶

vmstatをリアルタイムにグラフにする

2024/03/25に公開

LinuxにおいてCPUやメモリの負荷状況を見る時にvmstatを使いますが、リアルタイムに見たいときに数字だけだと直感的にわかりにくいです。

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  1      0 2686216 764412 2112940    0    0     0 12016 3586 1495  0  1 75 24  0
 0  1      0 2682528 764452 2112952    0    0     0 44439 6167 6558  1  4 73 23  0
 0  1      0 2683336 764452 2112936    0    0     0 12016 3644 1478  1  0 77 22  0
 1  0      0 2653508 764456 2112972    0    0     4 44136 6706 7010  6  5 75 15  0
 0  1      0 2671148 764456 2112984    0    0     0 44132 5370 4269  2  5 71 22  0

ということでcpugraphという、CPU使用率限定ですが、リアルタイムにコンソールにグラフチックに表示してくれるコマンドを作りました。

https://github.com/knziiy/cpugraph/releases/tag/1.0.0

golangで作ってビルドしているので単一バイナリをサーバに設置して実行権限をつけるのみで利用できます。

$ mv cpugraph.x86_64 cpugraph
$ chmod 755 cpugraph
$ ./cpugraph

実行すると、デフォルトではvmstat 1 2を繰り返し実行し、結果をパースして■の数と色でCPU負荷を表示します。(vmstatが合計100で返さない場合があるので時々stの数がおかしくなります)

引数は2個数値を取れて、一つ目はvmstat 1 XXに入れる数値(デフォルトは2)、二つ目は、グラフ表示の■の表示個数です(デフォルトは100)
ターミナルの横が狭い場合は50くらいにしてあげるといい感じになります。

$ ./vmgraph 2 50

CPU以外もグラフにしたい

以下のツールで、vmstat 1 -t | tee vmstat.logで取得したファイルをドラッグ&ドロップすると簡単にグラフ化できるものも作ってみました。

https://knziiy.net/vmstat-visualizer/

https://github.com/knziiy/vmstat-visualizer

よろしければ。

Discussion