用於自動監控磁碟使用情況的 Shell 指令碼

roc_guo發表於2021-10-24

我們寫一個    ,它在 crontab 中指定固定時間間隔監控磁碟使用情況,並在報告達到指定的閾值時透過電子郵件傳送報告。

首先,需要確保系統安裝了 mailpostfix傳送郵件服務。下面是在 8中安裝的 :

[root@localhost ~]# yum -y install mailx postfix
[root@localhost ~]# systemctl enable --now postfix

下面使用mail命令傳送郵件測試:

[root@localhost ~]# echo "This message will go into the body of the mail." | mail -s "Testing from the server." root@localhost

用於自動監控磁碟使用情況的 Shell 指令碼用於自動監控磁碟使用情況的 Shell 指令碼
本文不講解如何配置smtp服務。

測試磁碟使用情況的指令碼

以下是測試磁碟使用情況並將報告傳送到指定郵箱的指令碼。指令碼的解釋在程式碼片段之後給出。

[root@localhost ~]# vim  disk-monitor.sh
#!/bin/bash
MAILID="admin@linuxprobe.com"
VALUE=80
SERVERNAME=$(hostname)
MAIL=/bin/mail
for line in $(df -hP | egrep '^/dev/' | awk '{ print $1 "_:_" $5 }')
  do
    FILESYSTEM=$(echo "$line" | awk -F"_:_" '{ print $1 }')
    DISK_USAGE=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 )
    if [ $DISK_USAGE -ge $VALUE ];
    then
      EMAIL="$SERVERNAME - $(date): $FILESYSTEM Exceeded the threshold VALUE\n"
      EMAIL="$EMAIL\n Usage Details\n Current Usage:($DISK_USAGE%) Threshold value: ($VALUE%)"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Needs Attention!" "$MAILID"
    elif [ $DISK_USAGE -lt $VALUE ];
    then
      EMAIL="$EMAIL\n$FILESYSTEM ($DISK_USAGE%) is lessthan the threshold ($VALUE%)"
      EMAIL="$EMAIL\n"
      echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Threshold Not Reached" "$MAILID"
  fi
done
監控指令碼說明

上述指令碼使用 df -hP命令獲取記憶體資訊。

環境變數 MAILID儲存必須在其中傳送報告的郵箱地址。

VALUE 儲存要設定的閾值。

SERVERNAME 儲存伺服器的主機名,用於電子郵件通知中的伺服器標識。

使用 for 迴圈,它將遍歷所有具有“/dev”掛載點的檔案系統。然後它將檔案系統名稱和磁碟使用百分比儲存到兩個變數 FILESYSTEM 和  DISK_USAGE

使用上述變數,磁碟使用量等於閾值  VALUE 變數。根據結果,將向指定的郵箱傳送一封電子郵件。

監控指令碼執行

下面需要修改一下 disk-monitor.sh指令碼的許可權,為它新增可執行許可權:

[root@localhost ~]# chmod +x disk-monitor.sh

使用下面方式執行指令碼:

[root@localhost ~]# ./disk-monitor.sh
自動化監控過程

手動執行指令碼沒有任何意義,因為我們希望自動執行該過程。自動執行該過程的最佳方法是將指令碼新增到  crontab配置檔案中。

使用下面方式開啟crontab:

[root@localhost ~]# crontab -e

將下面內容新增到配置檔案中: <1pre<1 style="box-sizing: border-box;">*/5 * * * * sh /home/ec2-user/disk-monitor.sh

用於自動監控磁碟使用情況的 Shell 指令碼用於自動監控磁碟使用情況的 Shell 指令碼

總結

在文章中我們寫了一個 shell 指令碼,它在 crontab 中指定固定時間間隔監控磁碟使用情況,並在報告達到指定的閾值時透過電子郵件傳送報告。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2838974/,如需轉載,請註明出處,否則將追究法律責任。

相關文章