在 Ubuntu 用 Shell Script 監測硬碟使用量並在容量過低時利用 team 通訊軟體通知
前陣子 EC2 掛了一台
查了一下資料
發現有蠻方便的監控方式,來源網址:Shell Script 監測硬碟使用量
#!/bin/bash
echo "== Ubuntu == run check-disk =="
team_url=【你 team 的 url】
alert=50
df -H | grep -vE '^Filesystem|tmpfs' | awk '{ print $5 " " $6 }' | while read output;
do
usepercent=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
partition=$(echo $output | awk '{ print $2 }' )
if [ $usepercent -ge $alert ]; then
if [ $partition = '/' ]; then
curl -H "Content-Type: application/json" -d "{\"text\":\"$(date) $(hostname) Disk Space Alert= $partition($usepercent%) \"}" $team_url
break
fi
fi
done
echo "== Ubuntu == stop check-disk =="
如果沒安裝 curl 請安裝(Shell Script 需要 curl 才能跟 team 溝通)
參考網址:How to add connectors in Microsoft Teams
安裝方法如下:
sudo apt-get update
sudo apt install curl
記得找一下 team 頻道的 Webhook url 取代上面的【你 team 的 url】
參考網址:Microsoft Teams 使用Webhook傳訊息到Teams頻道
方法如下:
點擊「連接器」
點擊「已設定」與「管理」(如果沒安裝「傳入 Webhook」請安裝)
按下「複製」鈕就能取得網址
如果想每天定時監控與通知
可以利用 crontab 定時通知
記得給 check-disk.sh 管理權限(有權限 ls 看到會是綠色的)
chmod +x check-disk.sh
每天半夜 12 點定時通知
0 0 * * * /home/ubuntu/check-disk.sh >> ~/disk.log
每小時定時通知
0 * * * * /home/ubuntu/check-disk.sh >> ~/disk.log
這邊建議設定一下時區
sudo timedatectl set-timezone "Asia/Taipei"
crontab 設定的啟動時間才會準確
現在可以另用 crontab -e 新增排程了
排程設定好了
記得執行
sudo service cron restart
重置一下 crontab