Linux シェルスクリプト|Linux サーバから他の複数の Linux サーバのディスク使用率をチェックする|bash シェル


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 件のコメント :

コメントを投稿