Jquery中文網 www.twdanq.live
Jquery中文網 >  腳本編程  >  shell  >  正文 一個監控網站運行情況的shell腳本

一個監控網站運行情況的shell腳本

發布時間:2014-12-02   編輯:www.twdanq.live
分享一個shell腳本,腳本的主要功能是監控網站的運行情況,按固定頻率不停訪問給出的URL,以判斷網站是否運行正常。有需要的朋友參考下。

一個用于監控網站運行情況的shell腳本,實現了監控的自動化運行。
原理:
按固定頻率不停訪問給出的URL,當網站不可訪問時自動給設定郵箱發送告警郵件以通知用戶。

例子:
 

復制代碼 代碼示例:

#!/bin/sh
# Edit: www.jquerycn.cn
# Purpose: Moniter the web status, send a alert mail when it's not available.
export LANG=C

EMAIL=”[email protected]
LOG_FILE="/var/monitor/log/web_status_`date '+%Y%m'`.log"
TMP_EMAIL="/var/monitor/.tmp.mail.`date '+%s'`"
URL="$1" # DO NOT CHANGE IT.

if [ $2 ]
then
   sleep $2
fi

# Define function "ECHO", append the timestamp at the head of every record.
ECHO () {
printf "%s " `date '+%Y-%m-%d %H:%M:%S'`
echo $1
}

# Define function HTTP_CODE, obtain the status of web service.
HTTP_CODE () {
http_code=`curl -m 20 -o /dev/null -s -w %{http_code} $URL`
}

# Define function MAIL.
MAIL () {
echo "$URL is not available now, pls pay attention." > $TMP_EMAIL
echo "And the Server 's time is: " >> $TMP_EMAIL
date >> $TMP_EMAIL
echo >> $TMP_EMAIL
echo "------" >> $TMP_EMAIL
echo "BR" >> $TMP_EMAIL
echo "Shell Robot." >> $TMP_EMAIL
mail -s "Server Alert: $URL" $EMAIL < $TMP_EMAIL
rm $TMP_EMAIL
}

n=0
HTTP_CODE
if [ $http_code -eq 200 ]
then
        ECHO "|http_code:200|+$n|webpage visit success.|$URL" >> $LOG_FILE
else
        while [ $http_code -ne 200 ]
        do
                n=`expr $n + 1 `
                ECHO "|http_code:$http_code|+$n|webpage visit failed. |$URL" >> $LOG_FILE
                if [ $n -eq 5 ]; then
                        MAIL $1; exit 0
                fi
                sleep 10
                HTTP_CODE
        done
fi
# THE END

核心:
http_code=`curl -m 20 -o /dev/null -s -w %{http_code} $URL`
使用Linux自帶的curl工具訪問給出網址,并返回http_code,當http_code不等于200時即可認為網站存在訪問故障。
當第一次返回http_code不等200時,腳本休眠10秒鐘,然后繼續訪問,累計連續不可訪問次數達到5次后觸發告警郵件。

可配置字段,腳本第二段中有如下三個可配置字段:
 

EMAIL:接收告警信息的email地址。
LOG_FILE:日志文件,建議使用絕對路徑;最后的web_status_`date ‘+%Y%m’`.log代表以月為單位分割日志,如web_status_201105.log
TMP_EMAIL:臨時郵件文件,同樣建議使用絕對路徑,保持所在目錄有寫權限即可。

使用方法:
腳本后面需跟兩個參數:
第一個參數為監控網站的URL,第二個參數為延時時間(可選,以秒為單位,建議在對多個網站進行監控時添加),將此腳本添加到操作系統的crontab里面,按需求設定運行頻率,建議2分鐘一次。若有多個網站需監控,在crontab里面添加多行即可,每個URL一行,如下為同時對三個網站進行監控:
 

復制代碼 代碼示例:
*/2 * * * * sh /var/monitor/web_monitor.sh http://www.qq.com
*/2 * * * * sh /var/monitor/web_monitor.sh http://www.qqq.com 5
*/2 * * * * sh /var/monitor/web_monitor.sh http://www.qqqq.com 10

同時,此腳本會將所有訪問結果記錄至日志文件,日志片段:
 

復制代碼 代碼示例:
[[email protected] log]$ tail -f web_status_201105.log
2011-05-23 19:28:01 |http_code:200|+0|webpage visit success.|http://www.qq.com
2011-05-23 19:28:05 |http_code:200|+0|webpage visit success.|http://www.qqq.com
2011-05-23 19:28:11 |http_code:200|+0|webpage visit success.|http://www.qqqq.com
2011-05-23 19:28:20 |http_code:200|+0|webpage visit success.|http://www.qq.com
2011-05-23 19:28:20 |http_code:200|+0|webpage visit success.|http://www.qqq.com
2011-05-23 19:30:01 |http_code:200|+0|webpage visit success.|http://www.qqqq.com

補充:使用此腳本前請確保系統的郵件服務可行,Linux 郵件服務為sendmail
查看郵件服務運行狀態的命令:
service sendmail status
啟用郵件服務:
service sendmail start

在Github上分享的源代碼:https://github.com/bostoneboy/shell-scripts/blob/master/web-monitor.sh

您可能感興趣的文章:
一個監控網站運行情況的shell腳本
shell監控網站狀態 監測網站運行狀態的shell腳本
檢測網卡流量的shell腳本
shell磁盤監控及報警的腳本
監控多cpu下每個cpu運行情況的shell腳本
監控網卡流量的shell腳本分享
監控Linux服務器網站狀態的SHELL腳本
自動監控mysql主從同步的shell腳本代碼
一個自動監控進程的shell腳本
實時查看Linux網卡流量的shell腳本分享(圖文)

[關閉]
广西快乐10分怎样开奖号码 四人现金麻将 贝赢配资 教你打麻将的游戏 广东十一选五助手苹 现金血战麻将棋牌 下载大庆麻将 三人麻将是哪的 铭创配资 河北快三遗漏 股票行情软件哪个好 金福配资 天津十一选五开奖号 股票推荐咨询 今天河北快三开奖号码 教我怎样炒股 中国正宗麻将单机