首先,正常运行情况下,适用下述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
前面是监控脚本路径,后面是监控日志打印位置。
完了。。。