【システム運用改善】Linuxサーバのディスク容量監視を簡単に自動化しよう!
サーバの運用保守はいろいろな作業があり苦労されている方も多いと思います。今回は経費をほとんどかけずに運用保守作業を自動化するという記事の第3弾です。
ディスクの使用状況監視を自動化
今回は有料ソフトウェアを入れる費用が無い場合や無料ソフトウェアでも設定・運用できる人材がいない場合などを想定し、シェルスクルプトで簡易的にディスク容量の閾値監視を行う方法を説明します。
処理内容
処理名:DISK_LIMIT_CHECK.sh
#!/bin/bash ############################################ # 関数定義 ############################################ #閾値超過時の通報先 ML_SEND="*****@sample.jp" #マウントポイント DISK_AREA=/ DISK_AREA1=/mnt DISK_AREA2=/home #閾値 AREA_LIMIT=70 AREA_LIMIT1=60 AREA_LIMIT2=60 #DISK使用量 DISK_LIMIT=`df $DISK_AREA | tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'` DISK_LIMIT1=`df $DISK_AREA1 | tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'` DISK_LIMIT2=`df $DISK_AREA2 | tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'` #本処理用ログファイル DISK_LOG="/home/script/log/disk_limit.txt" #日付取得用 YMD=`date +%y%m%d,%H:%M:%S'` ############################################ # メイン処理 ############################################ echo "`date`" >> $DISK_LOG #AREA毎に処理を追加すること if [ $DISK_LIMIT -gt $AREA_LIMIT ]; then echo "Disk usage alert: $HOSTNAME マウントポイント:$DISK_AREA 容量:$DISK_LIMIT %" | mail -s "[WARNING]$HOSTNAME disk space alert" $ML_SEND echo "Disk usage alert: $DISK_LIMIT %" >> $DISK_LOG fi if [ $DISK_LIMIT1 -gt $AREA_LIMIT1 ]; then echo "Disk usage alert: $HOSTNAME マウントポイント:$DISK_AREA1 容量:$DISK_LIMIT1 %" | mail -s "[WARNING]$HOSTNAME disk space alert" $ML_SEND echo "Disk usage alert: $DISK_LIMIT1 %" >> $DISK_LOG fi if [ $DISK_LIMIT2 -gt $AREA_LIMIT2 ]; then echo "Disk usage alert: $HOSTNAME マウントポイント:$DISK_AREA2 容量:$DISK_LIMIT2 %" | mail -s "[WARNING]$HOSTNAME disk space alert" $ML_SEND echo "Disk usage alert: $DISK_LIMIT2 %" >> $DISK_LOG fi
解説および使用方法
この処理は、マウントポイント毎にディスクの使用率を監視し、使用率が閾値を超えた場合、指定した宛先に対してメールで通知するというものです。
本シェルを本番環境へ配置後、cronにて制御します。システム要件により異なりますが、この処理を例えば5分毎に繰り返し処理するように設定します。
なお、実際のディレクトリ構成等に注意し、修正時は関数定義部分の修正を行ってください。
※なお、本処理ではログを作成していくのでログファイル整理用の処理も併せて設定することをオススメします。
【関連】
・CPU閾値監視をシェルスクリプトで自動化
・メモリ閾値監視をシェルスクリプトで自動化
・閾値監視用ログファイルの整理