■debian busterでgnuplotをASCII出力で使ってみる。 $ lsb_release -d Description: Debian GNU/Linux 10 (buster) debian busterにsysstatを導入する。 https://labunix.hateblo.jp/entry/20200721/1595266993 ■feedgnuplotを探してインストール。 $ apt-file search bin/gnuplot gnuplot-nox: /usr/bin/gnuplot-nox gnuplot-qt: /usr/bin/gnuplot-qt gnuplot-x11: /usr/bin/gnuplot-x11 $ apt-cache show gnuplot | ./myscripts/lsec Description-en: Description-en: Command-line driven interactive plotting program. Gnuplot is a portable command-line driven interactive data and function plotting utility that supports lots of output formats, including drivers for many printers, (La)TeX, (x)fig, Postscript, and so on. The X11-output is packaged in gnuplot-x11. . Data files and self-defined functions can be manipulated by the internal C-like language. Can perform smoothing, spline-fitting, or nonlinear fits, and can work with complex numbers. . This metapackage is to install a full-featured gnuplot (-qt, -x11 or -nox). $ apt-cache search ^gnuplot gnuplot-data - コマンドライン駆動の対話的な作図プログラム (データファイル) gnuplot-doc - コマンドライン駆動の対話的作図プログラム - ドキュメンテーションパッケージ gnuplot - Command-line driven interactive plotting program. gnuplot-nox - Command-line driven interactive plotting program. No-X package gnuplot-qt - Command-line driven interactive plotting program. QT-package gnuplot-x11 - Command-line driven interactive plotting program. X-package elpa-gnuplot-mode - Gnuplot mode for Emacs gnuplot-mode - Transition Package, gnuplot-mode to elpa-gnuplot-mode libpdl-graphics-gnuplot-perl - gnuplot-based plotting backend for PDL python-gnuplotlib - Gnuplot-based plotter for numpy python3-gnuplotlib - Gnuplot-based plotter for numpy $ sudo apt-get install -y gnuplot gnuplot-doc $ dpkg -L gnuplot-doc | awk '/pdf/{print "cp "$1" ."}' cp /usr/share/doc/gnuplot/gnuplot.pdf . cp /usr/share/doc/gnuplot/tutorial.pdf . $ dpkg -L gnuplot-doc | awk '/pdf/{print "cp "$1" ."}' | sh ■1日前のデータを元にグラフを描いてみる。 ネットワークは100超えるので一旦スルー。 というかほとんど定形なのでスクリプトにした方が良い。今回はそれもスルー。 $ mytitle="CPU idle";env LANG=C sar -u -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search=idle '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/&& $2 ~ /all/){print $1","$target}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle CPU idle 100 +--------------------------------------------------------------------+ |********************************************************************| | * * * * * ** ** ** * *** ****** | | *** * * * *** **| 80 |-+ * +-| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |-+ +-| | | | | | + + + + + + + + + + + | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="CPU 100-(idle)";env LANG=C sar -u -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search=idle '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/&& $2 ~ /all/){print $1","100-$target}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle CPU 100-(idle) 100 +--------------------------------------------------------------------+ | + + + + + + + + + + + | | | | | 80 |-+ +-| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |-+ * +-| | *** * * * *** **| | * * * * * ** ** ** * *** ****** | |********************************************************************| 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="memused";env LANG=C sar -r -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search=memused '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){print $1","$target}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset dat; \ unset mytitleafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle memused 100 +--------------------------------------------------------------------+ | + + + + + + + + + + + | | | | | 80 |-+ +-| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |********************************************************************| | | | | | + + + + + + + + + + + | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="100-(memused)";env LANG=C sar -r -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search=memused '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){print $1","100-$target}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle 100-(memused) 100 +--------------------------------------------------------------------+ | + + + + + + + + + + + | | | | | 80 |********************************************************************| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |-+ +-| | | | | | + + + + + + + + + + + | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="swpused";env LANG=C sar -S -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search="^.swpused" '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){print $1","$target}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle swpused 100 +--------------------------------------------------------------------+ | + + + + + + + + + + + | | | | | 80 |-+ +-| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |-+ +-| | | | | | + + + + + + + + + + + | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="tps";env LANG=C sar -b -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search="^tps" '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){OFS=",";print $1,$target,$(target+1),$(target+2)}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle tps 100 +--------------------------------------------------------------------+ | + + + + + * + + + + + + | | * | | * * | 80 |-+ ** * * +-| | ** * ** * | | ** * ** * * | 60 |-+ ** * * ** * * * +-| | ** * * ** * * * | | * * * * ** * * * | | * * * ** ** * * * | 40 |-+ * * * ** **** * * +-| | * * * ** * *** * * | | * * * *** * *** *** * | 20 |-+ * * * *** * *** *** * * *-| | * *** **** * *** *** ****** **| | * *** **** * *** * * * * * *| | + + + + * *+* **** + + ** ** ** *+ + * | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="rtps";env LANG=C sar -b -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search="^tps" '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){OFS=",";print $1,$(target+1)}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle rtps 100 +--------------------------------------------------------------------+ | + + + + + * + + + + + + | | * | | * * | 80 |-+ * * * +-| | ** * ** * | | ** * ** * * | 60 |-+ ** * * ** * * +-| | ** * * ** * * * | | * * * * ** * * * | | * * * ** ** * * * | 40 |-+ * * * ** **** * * +-| | * * * ** * *** * * | | * * * *** * *** ** * | 20 |-+ * * * *** * *** *** * * +-| | * * * **** * *** *** * ** | | * * * **** * *** *** ** *** * | | + + + + * *+* **** + + ** ** ** *+ + ***| 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00 $ mytitle="wtps";env LANG=C sar -b -f /var/log/sysstat/sa$(date '+%d' --date "yesterday") | \ awk -v search="^tps" '(NR==5){for(a=2;a<=NF;a++){if($a ~ search){target=a}}} \ (NR>5&&$1 !~ /Average/){OFS=",";print $1,$(target+2)}' | \ gnuplot -e ' set datafile separator ","; set title "'"${mytitle}"'"; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M"; set yrange [0:100]; set xrange ["00:00":"23:59"]; set terminal dumb ; plot "'"-"'" u 1:2 w l title ""; unset datafile separator;unset xdata;unset timefmt;unset format x;unset yrange ;unset xrange; unset terminal;unset title'; \ unset mytitle wtps 100 +--------------------------------------------------------------------+ | + + + + + + + + + + + | | | | | 80 |-+ +-| | | | | 60 |-+ +-| | | | | | | 40 |-+ +-| | | | | 20 |-+ +-| | * | | * * **| | + + + + *+* + + + + * ********* | 0 +--------------------------------------------------------------------+ 00:00 02:00 04:0006:00 08:00 10:00 12:0014:00 16:00 18:00 20:0022:00 00:00