1. 程式人生 > >SHELL訓練營--day9__告警指令碼練習

SHELL訓練營--day9__告警指令碼練習

專案文件

  • 需求分析文件

    使用shell定製各種告警工具,另需要統一管理,並規範指令碼。

  • 實施分解

    實施分層:
    配置檔案,設定各項監控數值或指標。
    主程式,根據配置檔案呼叫 子程式 實現監控。
    告警系統:呼叫告警系統,通過郵件通知管理員,在配置檔案中設定告警資訊,在子程式中呼叫。
    日誌資訊:在配置檔案中設定日誌等級和存放資訊。並在子程式中呼叫存放日誌。
    子程式:存放各類監控 指令碼。

主程式示例

#!/bin/bash

#獲取ip地址,並通過全域性宣告,在子程式中呼叫。
export addr=`/sbin/ifconfig |grep -A1 "ens33: "|awk '/inet/ {print $2}'`

#判斷當前指令碼位置是否正確。
dir=`pwd`
last_dir=`echo $dir|awk -F'/' '{print $NF}'`

if [ $last_dir ==“bin” ] || [ $last_dir == "bin/" ] && [ -f "../conf/mon.conf" ];
then
        conf_file="../conf/mon.conf"
else
        echo "you shoud cd bin/dir"
        exit
fi

#指定 正確和錯誤日誌預設存放位置
exec 1>>../log/mon.log 2>>../log/error.log

#指定郵件開關
export send=1

#監控load負載
echo "`date +"%F %t" ` load average"
/bin/bash ../shares/load.sh

#檢查配置檔案,監控502
if grep -q 'to_mon_502=1' $conf_file;
then
    export log_502=`grep 'logfile=' $conf_file| awk -F '=' '{printf $2}' |sed 's/ //g' `
        /bin/bash ../shares/502.sh