用shell寫一個簡單的告警系統
建立目錄結構
主程式入口檔案/mon/bin/main.sh
主配置檔案/mon/conf/mon.conf(自定義變量)
監控的腳本
監控系統負載的腳本/usr/local/sbin/mon/shares/load.sh
監控磁盤的腳本/usr/local/sbin/mon/shares/disk.sh
監控網站出現502的腳本
發郵件的腳本/usr/local/sbin/mon/mail/mail.py
告警收斂腳本/usr/local/sbin/mon/mail/mail.sh
計劃每分鐘執行/usr/local/sbin/mon/bin/main.sh
注意:這裡主程式main.sh中隻調用了子程式 load.sh,另外兩個子程式沒有調用到,系統會自動每分鐘發郵件給root使用者的郵箱(當然我這裡測試是用的root使用者)
總結:
主程式檔案中要對主配置檔案定義的内容進行過濾作為條件,再調用子程式的腳本
子程式中也要引用主配置檔案中的内容作為自己的條件判斷,再調用發郵件腳本
主配置檔案相當于一個總的開頭
發郵件的腳本mail.py,注意參數是以空格作為分隔的,如
echo "${addr} $(date +%T)-load-is-$load" > ../log/load.tmp
/bin/bash ../mail/mail.sh "發郵件給誰" "$addr_load:$load" "$(cat ../log/load.tmp)"
隻會識别${addr},不會辨識$(date +%T)-load-is-$load
這裡用到了環境變量