[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:04931] Re: disk の増減管理スクリプト



In <9802230005.AA25612@xxxxxxxxxxxxxxxxxxxxxx>
[debian-users:04436] disk の増減管理スクリプト, Feb.23 '98 09:05 JST
m.tomimoto@xxxxxxxxxxxx says:
=   というUN*Xらしいご指摘を受けましたので自分で作ったスクリプト(なんていう
=   たいそうなものではありませんが)を公開します。

やはりそそのかした本人としてはちゃんとフォローしといた方が
いいですよね ;-)


=   ただこれでは単純にdiffの出力結果であるため人間が見るに堪えないものが出力
=   されてしまうという欠点があります。いまdiffの出力をよりよいレポートにする
=   ためのスクリプトをperlで作成中です。

ちょっと考えて見ました。
diffの出力を目視で確認する困難さもさることながら、diskの増減を監視す
るからには、ある程度まとまった期間のデータを集計して増加・減少の傾向
を把握した方がいいと思います。

で、設計方針としては、
1.  毎日決まった時刻に、あらかじめ指定したディレクトリについてduをと
    り、これを /var/logなどに蓄えておく。
2.  必要に応じてこのデータを加工し、表示する。
3.  蓄えたデータは、monthlyくらいでrotationしてやる。

そこで、こんなスクリプトを書いておきます。

    $ cat dulog.sh
    #!/bin/sh -
    D="`date +%m.%d`"; for d do echo "$D    " `du -s "$d"`; done
        # subdirectoryを無視するなら、`du -sS'でいいでしょう。

これを、毎日こんな感じで実行します。(午前0時直後がいいですね)

    /bin/sh - dulog.sh /var/log/uucp /home /tmp >> /var/log/dulog
        # 追加リダイレクトにすることを忘れずに

/var/log/dulog そのものは毎月1回rotateしてやればいいでしょう。

dulog はごく単純なフォーマットです。

    月.日   diskblock   directory

そこで、gnuplotを使って見てみましょう。gnuplotの中で、directoryを
適当に引っかけてデータを読み込ませます。こんな感じでplotコマンドを
実行します。

    plot '< sed -n -e "s%/var/log/uucp$%%p" /var/log/dulog' title '/var/log/uucp' with lines

めんどうなら、gnuplotのコマンドをスクリプトにしてしまえばOKです。
例を以下に示します。


#!/usr/bin/gnuplot 
set terminal x11 
set output 
set noclip points
set clip one
set noclip two
set border
set boxwidth
set dummy x,y
set format x "%.2f"
set format y "%g"
set format z "%g"
set nogrid
set key
set nolabel
set noarrow
set nologscale
set offsets 0, 0, 0, 0
set nopolar
set angles radians
set noparametric
set view 60, 30, 1, 1
set samples 100, 100
set isosamples 10, 10
set surface
set nocontour
set clabel
set nohidden3d
set cntrparam order 4
set cntrparam linear
set cntrparam levels auto 5
set cntrparam points 5
set size 1,1
set data style lines
set function style lines
set xzeroaxis
set yzeroaxis
set tics in
set ticslevel 0.5
set xtics 0,.01
set ytics 0,1
set ztics
set title "du log" 0,0
set notime
set rrange [-0 : 10]
set trange [-5 : 5]
set urange [-5 : 5]
set vrange [-5 : 5]
set xlabel "" 0,0
#set xrange [03.01 : 03.31]
set ylabel "" 0,0
set yrange [0 : ]
set zlabel "" 0,0
set zrange [-10 : 10]
set autoscale r
set autoscale t
set autoscale xy
set autoscale z
set zero 1e-08
plot '< sed -n -e "s%/var/log/uucp$%%p" /var/log/dulog' title '/var/log/uucp'
pause -1


いかがですか?
まあ、てきとーにでっちあげたものなので、実際に使うためには
もう少しなんとかしないといけませんが、参考にしてください。


 -.- . -. -.
Ken Nakagaki <kenn@xxxxxxxxxxxxxxxxx>
「人は船ではない。人は会社ではない」-- Gerry Spence