首先,正常運作情況下,适用下述curl指令可以正常傳回結果:
curl -XPOST 'http://127.0.0.1:my_port/my_project/search' -d '{"id":100897}'
編寫shell腳本如下:
search=`curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "http://my_ip_addtr:my_port/my_project/search" -d "{'id':100897}"`
if [[ "$search" == "200" ]];
then
echo "my_project is running"
else
cd /shell path/ && docker stack rm my_project
sleep 20s
cd /path/command/ && sh run.sh
echo "my_project failed"
fi
大緻邏輯就是使用curl判斷接口是否可正常通路,如果傳回碼為200,則正常,否則則接口出現問題,需要重新開機。
重新開機步驟:先删除docker,然後進入到啟動docker 服務的路徑下,運作啟動腳本。
在編寫下面這句代碼時:
search=`curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "http://my_ip_addtr:my_port/my_project/search" -d "{'id':100897}"`
先是按照最開始的測試指令格式寫成了:
search=`curl -o /dev/null -s -m 10 --connect-timeout 10 -w %{http_code} "'http://my_ip_addr:my_port/my_project/search' -d '{"id":100897}'"`
提示如下錯誤:
curl: (1) Protocol 'http not supported or disabled in libcurl
查詢該錯誤,發現有說是curl裡面不支援單引号,需要改為雙引号,然後就修改成上面的上面格式,測試通過。
監控腳本寫完之後,便是把該腳本加入到crontab監控任務中了。該過程可以去檢視crontab定時任務。我這個設定的是每五分鐘執行一次,就是一行指令:先執行crontab -e進入監控任務配置檔案位置:
*/5 * * * * cd /path/command && sh cront_check.sh >> /path/command/cront.log
前面是監控腳本路徑,後面是監控日志列印位置。
完了。。。