Linux サーバから他の複数の Linux サーバのディスク使用率の情報を取得して、ディスク使用率が閾値を超えていないかチェックするシェルスクリプトを作成する。
機能構成
ディスク使用率チェック用シェルスクリプトを実行して、複数の Linux サーバのディスク使用率情報を取得して、ディスク使用率が閾値を超えていないかチェックする。
また、シェルスクリプトをジョブ管理 cron などでスケジュール実行することで、ディスク使用率を定期的に監視する機能も作成することができる。
ディスク使用率チェック用シェルスクリプトの作成
下記のシェルスクリプト server_disk_used_check.sh とサーバリスト server.list を作成する。このシェルスクリプトを実行すると、ディスク使用率が80%を超えたファイルシステムが存在する場合は標準出力される。
・シェルスクリプト server_disk_used_check.sh
#!/bin/bash #チェック対象サーバリスト SERVER_LIST=/ディレクトリ/server.list #ディスク使用率の閾値 DISK_USED_THRESHOLD=80 #IFSを「改行」に設定して、下記のfor文でSERVER_LISTを行毎にループして処理する PRE_IFS=$IFS IFS=$'\n' #サーバ分ループ for line_server in `cat ${SERVER_LIST}` do SERVER_NAME=`echo ${line_server} | awk '{print $1}'` SERVER_IP=`echo ${line_server} | awk '{print $2}'` SERVER_USER=`echo ${line_server} | awk '{print $3}'` SERVER_PASSWORD=`echo ${line_server} | awk '{print $4}'` #サーバのディスク使用率の情報を取得してファイル出力 sshpass -p ${SERVER_PASSWORD} ssh ${SERVER_USER}@${SERVER_IP} df -h --portability > /ディレクトリ/${SERVER_NAME}_disk_used_check.result RC=$? if [ ${RC} = 0 ]; then #サーバで実行したdfコマンド実行結果をファイルの2行目以降からディスク使用率をチェックする for line_result in `cat ${SERVER_NAME}_disk_used_check.result | sed '1d'` do USE_CHK=`echo ${line_result} | awk '{print $5}' | tr -d '%'` if [ "${USE_CHK}" -ge ${DISK_USED_THRESHOLD} ]; then echo "警告: ${SERVER_NAME} ディスク使用率が閾値を超えました。${line_result}" fi done else echo "異常: ${SERVER_NAME} のディスク使用率チェック処理でエラーが発生しました。" fi done #IFSを元の設定に戻す IFS=${PRE_IFS}
※上記のシェルスクリプトの「/ディレクトリ」は、チェック対象サーバリスト server.list、および各サーバのディスク使用率情報ファイル ( 下記参照 ) を出力するディレクトリを指定する。
・サーバリスト server.list
サーバ名A IPアドレスA ユーザA パスワードA サーバ名B IPアドレスB ユーザB パスワードB サーバ名C IPアドレスC ユーザC パスワードC サーバ名D IPアドレスD ユーザD パスワードD サーバ名E IPアドレスE ユーザE パスワードE※チェック対象となる各サーバのサーバ名、IPアドレス、サーバのユーザID、ユーザのパスワードを記載する。項目間の区切り文字は、半角スペースにする。
上記のシェルスクリプトでは、サーバのディスク使用率を取得するために、下記のコマンドを実行している。コマンド df -h のみを実行すると、ファイルシステム名やマウントデバイス名の文字列が長い場合、2行で表示されるが、--portability をオプションに指定することにより、1行表示させている。
・コマンド
df -h --portability
シェルスクリプトを実行すると、各サーバのディスク使用率情報ファイル「サーバ名_disk_used_check.result」が出力される。このファイルには、下記のような df コマンドの実行結果が出力される。ディスク使用率は、use% をチェックしている。
・出力サンプル
Filesystem Size Used Available Use% mount /dev/sda2 50G 17G 34G 33% / /dev/sda1 1014M 170M 845M 17% /boot
スポンサーリンク
0 件のコメント :
コメントを投稿