从 bash shell 监控自定义 Java HTTP 服务器?

从 bash shell 监控自定义 Java HTTP 服务器?

我如何从 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

使用监控,这比编写 shell 脚本更安全。

如果你真的想写一个脚本,请使用卷曲获取内容,grep 它并在失败时重新启动服务。

答案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

相关内容