muninで指定したディレクトリのサイズを監視する(キャッシュ対応)
http://d.hatena.ne.jp/uunfo/20100414/1271244655
使ってみました
muninのデフォルトで入るプラグインではパーセンテージ%のチェックはあるのですが、サイズは測ってくれません
これは、特定ディレクトリのサイズを記録しておきたいときに使えます
duで集計しているので/とかは鈍いですけど、決まったディレクトリ、例えば、logやmysqlのデータディレクトリを見るのに最適かもです
以下作業ログ
muninのプラグインファイルを用意
# emacs /usr/share/munin/plugins/du
#!/bin/sh # # Disk Usage (per directory) # version 1.1 # # sample conf # [du] # user root # env.dirs /var/log:/var/www # #env.cache /tmp/munin-plugin-du # # crontab to use cache # 2 * * * * rm /tmp/munin-plugin-du && /usr/sbin/munin-run du # #%# family=auto #%# capabilities=autoconf du=${du:-`which du`} dirs=${dirs:-/home}":" cache=${cache:-/tmp/munin-plugin-du} if [ "$1" = "autoconf" ]; then if [ -x $du ]; then echo "yes" exit 0 else echo "no (command 'du' not found)" exit 1 fi fi if [ "$1" = "config" ]; then echo 'graph_title Disk usage ' echo 'graph_args --upper-limit 1000 -l 0' echo 'graph_vlabel size (byte)' echo 'graph_category disk' echo 'graph_info This graph shows size of designated directories.' stack=0 while [ $dirs ] do dir=${dirs%%:*} dirs=${dirs#*:} basename=`basename $dir` echo "$basename.label $dir" if [ $stack -eq 0 ]; then echo "$basename.draw AREA" stack=1 else echo "$basename.draw STACK" fi done exit 0 fi # Delete cache if two hours (120 minutes) have passed since its last modification. find `dirname $cache` -name `basename $cache` -mmin +120 | while read file do rm $file done if [ -e $cache ]; then # Use cache if it exists. cat $cache else # Excecute du and create a cache file if it does not exist. while [ $dirs ] do dir=${dirs%%:*} dirs=${dirs#*:} basename=`basename $dir` size=`$du -sb $dir | cut -f 1` echo "$basename.value $size" echo "$basename.value $size" >> $cache done fi exit 0実行権限を付与
# chmod 755 /usr/share/munin/plugins/dumunin-nodeの設定ファイルに追記
今回は、/var/lib/mysqlと/homeディレクトリをチェックします
# emacs /etc/munin/plugin-conf.d/munin-node [du] user root env.dirs /var/lib/mysql:/home env.cache /tmp/munin-plugin-ducrontabの設定
1時間に1回の実行としました
# crontab -e 0 * * * * rm /tmp/munin-plugin-du & /usr/sbin/munin-run du動作チェック
/usr/sbin/munin-run duシンボリックリンクを張る
# ln -s /usr/share/munin/plugins/du /etc/munin/plugins/dumunin-nodeをリスタート
# /etc/init.d/munin-node restart以上です