我如何从 bash shell 监控服务端口?
我想要监控一个 Java 服务(在端口 9090 上每分钟一次),然后如果该服务没有通过简单的 HTML 消息响应,则调用“/etc/init.d/myservice -restart”。
你会怎样做这样的事?
我的想法是使用与此类似的东西:
wget -O - --no-check-certificate --progress=dot https://localhost:9090
或者
curl --insecure https://localhost:9090
答案1
答案2
谢谢“coredump”。你给了我解决问题所需的提示。我将结合使用 CURL 和这一页。
这是我得出的答案,对我来说似乎有用。如果你能改进这个答案,我可能会给你加分。
#!/bin/bash
rm -f listening.htm
curl -s --connect-timeout 10 --insecure $1 > listening.htm
RETVAL=$?
echo "Curl return value : $RETVAL"
if [ $RETVAL -eq 2 ]; then
echo "Missing URL parameter. Add URL and try again."
fi
if [ $RETVAL -eq 6 ]; then
echo "Unable to resolve host. Check URL and try again."
fi
if [ $RETVAL -eq 0 ]; then
echo "Is the site listening...?"
elif [ $RETVAL -eq 7 ]; then
echo "Server timeout."
elif [ $RETVAL -eq 22 ];then
echo "HTTP error above 400"
else
rm listening.htm
exit 1
fi
if grep -Fq "The site is listening..." listening.htm
then
echo "Health is ok."
else
echo "Service didn't respond. Stopping."
/home/ec2-user/SITE/stopService.sh
sleep 6
echo "Starting service."
/home/ec2-user/SITE/startService.sh
sleep 10
echo "Restarted at `date`" >> monitor.log
rm listening.htm
fi
exit 1