服務器的監控是很必要的,最近發現服務器有時候fastcgi會停止響應,為了讓他能正常工作(當發現停止的時候,就重新啟動),由於就有了下面的監控腳本。<本文轉自www.opsers.org,既然別人有寫,我就不費心寫了。>
該腳本的工作原理是:
通過curl命令訪問站點,當返回的狀態結果不是200時,重啟fastcgi。
由於站點首頁內容較多,為了減輕服務器的負擔,我們可以自己指定一個php頁面,頁面內容可以隨便寫一句php代碼,如:
< ?php echo "hello word!"; ?>
chkfastcgi.sh內容如下
#!/bin/bash
#監控的網頁地址
url="http://www.opsers.org/bash.php"
#fastcgi啟動/重啟/停止腳本路徑
PROG=/usr/local/php/sbin/php-fpm
#fastcgi重啟記錄日志文件
LOG=/var/log/php-fpm/restart.log
#返回結果正常記錄日志
LOG2=/var/log/php-fpm/check.log
#時間
time=`date`
#狀態檢查
status=$(curl -s --head "$url" | awk '/HTTP/ {print $2}')
#如果不是200,就寫入日志,然後重新啟動
if [ "$status" != "200" ]; then
echo "Restart php-cgi at ${time} " >> $LOG
$PROG restart
#如果你想發郵件,就在這個位置寫入發郵件命令吧
else
#記錄正常狀態的日志
echo "php cgi is running ${time} " >> $LOG2
# 如果想讓他什麼也不做的話,就把上面的“ echo "php cgi is running ${time} " >> $LOG2”
刪除,換成下面的冒號# :
fi
最後就是將腳本添加到任務計劃任務裡,每隔一段時間執行一次(記得加上執行權限啊),這個時間可以根據自己服務器情況,適當設置
*/1 * * * * /bin/bash /chkfastcgi.sh
最後提醒大家一點,系統中一定要有curl這個命令哦,否則,呵呵,你就哭吧!!為什麼呢?
是這樣的,如何你的系統中沒有curl這個命令,當然前面的腳本也就找不到200狀態,沒有這個狀態,就會重新啟動,試想一下,如果你設置每分鐘執行一次,那麼,你的服務也就每分鐘重新啟動一次了!!呵呵!!注意啊!!