天天看點

使用shell腳本監控伺服器docker部署的服務是否正常運作:curl: (1) Protocol 'http not supported or disabled in libcurl

首先,正常運作情況下,适用下述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
           

前面是監控腳本路徑,後面是監控日志列印位置。

完了。。。