Articles Comments

ちからの備忘録的日記 » diary, tips » vmstat を gnuplot で簡単グラフ化

vmstat を gnuplot で簡単グラフ化




vmstat をグラフ化したくなることってありますよね。

Excel でやってもいいんですが、vmstat のファイルをクライアント側にもってくるのも面倒なので、gnuplot でやってみようと思いました。

vmstat に時刻を追加する」で、vmstat にタイムスタンプをいれたのは、こういう意図があったのでした。

gunuplot インストール

gnuplot screenshots」をみると、サンプルの設定は、バージョン 4.2 以降でした。

gnuplot sample

CentOS 5.4 の gnuplot のバージョンを確認すると、以下の通り 4.0 でした。

# yum info gnuplot
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * addons: ftp.riken.jp
 * base: ftp.riken.jp
 * epel: ftp.kddilabs.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
addons                                                                         |  951 B     00:00
base                                                                           | 2.1 kB     00:00
epel                                                                           | 3.7 kB     00:00
epel/primary_db                                                                | 3.7 MB     00:00
extras                                                                         | 2.1 kB     00:00
updates                                                                        | 1.9 kB     00:00
Available Packages
Name       : gnuplot
Arch       : x86_64
Version    : 4.0.0
Release    : 14.el5
Size       : 1.3 M
Repo       : base
Summary    : 数式とデータをプロットするためのプログラム
URL        : http://www.gnuplot.info/
License    : Redistributable, with restrictions
Description: Gnuplot is a command-line driven, interactive function plotting
           : program especially suited for scientific data representation.  Gnuplot
           : can be used to plot functions and data points in both two and three
           : dimensions and in many different formats.
           :
           : Install gnuplot if you need a graphics package for scientific data
           : representation.

ということでソースから入れることにします。

gnuplot は、バージョンによって微妙に設定項目が異なるので、バージョンをあわせる必要があります。

gunuplot 準備

gnuplot に必要なモジュールをインストール。

# yum install gcc gcc-c++ make libX11 xauth
# yum install cairo-devel pango-devel freetype-devel gd-devel

尚、./configure したときに、足りないモジュールがエラーメッセージとして表示されます。

gnuplot ダウンロード

とりあえず、最新版をダウンロード。

#  wget http://sourceforge.net/projects/gnuplot/files/gnuplot/4.4.2/gnuplot-4.4.2.tar.gz/download

souceforge の方の最新は、4.4.3 でした。。。www.gnuplot.info の最新が 4.4.2 だったので。。。

コンパイル&インストール

# tar zxf gnuplot-4.4.2.tar.gz
# cd gnuplot-4.4.2
# ./configure
# make
# make install

デフォルトだと、/usr/local/bin にインストールされます。何となく PATH を通すのが面倒だったので小細工でごまかす。

# ln -s /usr/local/bin/gnuplot /usr/bin/gnuplot

gnuplot 設定

今回はCPU、メモリ、ディスクの情報をグラフ化してみます。

#!/usr/bin/gnuplot

# 【vmstat の出力】
# vmstat -n -S m -a 1 | awk '{print strftime("%H:%M:%S"), $0}'
#
#11:13:31 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
#11:13:31  r  b   swpd   free  inact active   si   so    bi    bo   in   cs us sy id wa st
#11:13:31  1  0      0      6    141    307    0    0    48    76   22   20  1  0 99  0  0
#11:13:32  0  0      0      6    141    307    0    0     0     0   14   15  0  0 100  0  0
#
# 【vmstat 各項目の意味】
#   Memory
#       swpd: 仮想メモリの量。
#       free: 空きメモリの量。
#       buff: バッファに用いられているメモリの量。
#       cache: キャッシュに用いられているメモリの量。
#       inact: アクティブでないメモリの量 (-a オプション)。
#       active: アクティブなメモリの量 (-a オプション)。
#
#   Swap
#       si: ディスクからスワップインされているメモリの量 (/s)。
#       so: ディスクにスワップしているメモリの量 (/s)。
#
#   IO
#       bi: ブロックデバイスから受け取ったブロック (blocks/s)。
#       bo: ブロックデバイスに送られたブロック (blocks/s)。
#
#   System
#       in: 一秒あたりの割り込み回数。クロック割り込みも含む。
#       cs: 一秒あたりのコンテキストスイッチの回数。
#
#   CPU
#       これらは CPU の総時間に対するパーセンテージである。
#       us: カーネルコード以外の実行に使用した時間 (ユーザー時間、nice 時間を含む)。
#       sy: カーネルコードの実行に使用した時間 (システム時間)。
#       id: アイドル時間。Linux 2.5.41 以前では、IO 待ち時間を含んでいる。
#       wa: IO 待ち時間。Linux 2.5.41 以前では、0 と表示される。
#       st: 仮想マシンから盗まれた時間。Linux 2.6.11より前では未知。

# 出力ファイルをPNGファイルとし、サイズを 640x640 にする
set terminal png size 640,640

# 出力ファイル名の設定
set output "output.png"

# 1ファイルで縦3,横1のグラフを出力
set multiplot layout 3, 1

# CPU 用の設定
set size 1.0,0.35
set title "CPU usage"
set ylabel "percent"
set xdata time
set timefmt "%H:%M:%S"
set format x "%H:%M:%S"
set xtics rotate
set style fill transparent solid 0.5 noborder
plot "vmstat.log" using 1:15 title "system" with lines, \
        "vmstat.log" using 1:14 title "user" with lines, \
        "vmstat.log" using 1:16 title "idle" with lines

# メモリ用の設定
set size 1.0,0.35
set title "memory usage"
set ylabel "size(M Bytes)"
set xdata time
set timefmt "%H:%M:%S"
set format x "%H:%M:%S"
set xtics rotate
set style fill transparent solid 0.5 noborder
plot "vmstat.log" using 1:4 title "swap" with lines, \
        "vmstat.log" using 1:6 title "inact" with lines, \
        "vmstat.log" using 1:7 title "active" with lines, \
        "vmstat.log" using 1:5 title "free" with lines

# ディスク用の設定
set size 1.0,0.35
set title "disk I/O"
set ylabel "I/O (blocks/sec)"
set xdata time
set timefmt "%H:%M:%S"
set format x "%H:%M:%S"
set xtics rotate
set style fill transparent solid 0.5 noborder
plot "vmstat.log" using 1:10 title "read" with lines, \
        "vmstat.log" using 1:11 title "write" with lines

unset multiplot

グラフ作成

vmstat ログファイル作成

# vmstat -n -S m -a 1 | awk '{print strftime("%H:%M:%S"), $0}' > vmstat.log

awk は、GNU awk じゃないとうまくいきません。(たぶん)

【7/15追記】
vmstat.log の先頭2行はヘッダ情報がはいるので、vi などで削除しておいてください。

グラフ化実行

gnuplot 設定のファイル内容をコピペして、vmstat_graph として保存。

# chmod +x vmstat_graph
# ./vmstat_graph (output.png が出力される)

グラフサンプル

vmstat graph by gnuplot

参考

Category:gnuplot diagrams – Wikimedia Commons

Related Posts Plugin for WordPress, Blogger...

Filed under: diary, tips · Tags: , ,

Leave a Reply

*