用於自動監控磁盤使用情況的 Shell 腳本

如果在服務器上運行關鍵任務,那麼監控和通知管理員磁盤使用情況很重要。本文介紹編寫一個腳本來自動監控並在達到閾值時將報告發送到自己的郵箱。

在文章中,我們寫一個 shell 腳本,它在 crontab 中指定固定時間間隔監控磁盤使用情況,並在報告達到指定的閾值時通過電子郵件發送報告。

首先,需要確保系統安裝了mail命令postfix發送郵件服務。下面是在Centos8中安裝的命令

[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

將下面內容添加到配置文件中: */5 * * * * sh /home/ec2-user/disk-monitor.sh

用於自動監控磁盤使用情況的 Shell 腳本用於自動監控磁盤使用情況的 Shell 腳本

總結

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

本文原創地址:https://www.linuxprobe.com/auto-monitor-disk.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章