天天看點

用shell寫一個簡單的告警系統

用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

這裡用到了環境變量