DISKの使用率が規定値以上になるとメールするスクリプト

2021-06-24

概要

DISKの使用率が90%以上になるまで気付かなかったケースがありました。

監視ソフトでDISKの使用率・CPU負荷などは監視していて、DISKの使用率が90%を超えるアラートメールが届いていましたが、他のメール多すぎて、その中に埋もれて見逃していました。

見逃さないようにDISKの使用率が90%とかの規定値を超えるとメールするスクリプトを作りました。
DISKの使用率が多くなったら送信するメールアドレスは携帯キャリアのアドレスしたので、見逃す可能性は低いと思います

 

DISK使用率の監視して規定値(90%)になるとメール送信するスクリプト

サンプルのDISK構成

サンプルですがDISK構成は以下の構成として監視スクリプトを作成しています。

$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 394G 26G 349G 7% /
/dev/sda2 447G 146G 279G 35% /home
tmpfs 1.0G 0 1.0G 0% /dev/shm

DISK使用率の監視スクリプト

スクリプトに内容ですが、dfコマンドを叩いて、監視するDISKの使用率の値を取得しています。if文で規定値(90%)以上になると、mailコマンドでメールするスクリプトです

#/bin/bash

# 監視ファイルシステム
MONDEV=/dev/sda1

#---メール関係---
#ホストネーム
SVNAME=`hostname`
#メールを送信するメールアドレスを指定する
MAILTO=user@hoge.com
#メールの件名を生成
MAIL_SUB="$SVNAME ALERT DISK SPACE"
#メール本文に使用するファイルを指定する
MAILFILE=/var/tmp/diskchk_mail.txt
#メールの本文を生成
hostname > $MAILFILE
date "+%Y/%m/%d %H:%M:%S" >> $MAILFILE
echo "WARNNING DISK SPACE" >> $MAILFILE
df -h >> $MAILFILE

DISK_USE=`df $MONDEV |tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'`
if [ $DISK_USE -gt 90 ]; then
#メールを送信する
  mail -s $MAIL_SUB $MAILTO < $MAILFILE
fi

監視するDISKの2つの場合のスクリプト

監視するDISKの本数が2本場合は、監視するDISK毎にDISK使用率を取得して処理すれば、監視するDISKが増えても使用できます

#!/bin/bash

# 監視ファイルシステム
MONDEV1=/dev/sda1
MONDEV2=/dev/sdb1

#---メール関係---
#ホストネーム
SVNAME=`hostname`
#メールを送信するメールアドレスを指定する
MAILTO=user@hoge.com
#メールの件名を生成
MAIL_SUB="$SVNAME ALERT DISK SPACE"
#メール本文に使用するファイルを指定する
MAILFILE=/var/tmp/diskchk_mail.txt
#メールの本文を生成
  hostname > $MAILFILE
  date "+%Y/%m/%d %H:%M:%S" >> $MAILFILE
  echo "WARNNING DISK SPACE" >> $MAILFILE
  df -h >> $MAILFILE

DISK_USE=`df $MONDEV1 |tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'`
if [ $DISK_USE -gt 90 ]; then
#メールを送信する
  mail -s $MAIL_SUB $MAILTO < $MAILFILE
fi

DISK_USE=`df $MONDEV2 |tail -1 | /bin/sed 's/^.* \([0-9]*\)%.*$/\1/'`
if [ $DISK_USE -gt 80 ]; then
#メールを送信する
  mail -s $MAIL_SUB $MAILTO < $MAILFILE
fi