这是我在 bash 中的第一次迭代:这个 webapp 没有 postgres 但有 Apache 2.4、Tomcat 8。
我首先检查 200 http 响应。然后检查 http 服务器是否正在运行以及 tomcat 是否也在运行。
如果任何服务器宕机,我应该通过电子邮件发送消息并尝试重新启动。如果没有结果,将发送另一封电子邮件。
如果我只是执行 curl 或 wget,然后使用 journalctl 检查发生了什么,也许会更简单。但目前我无法在服务器上使用 journalctl。
任何帮助,将不胜感激。
SITE_UP_STATUS_GREP="HTTP/1.1\s200"
echo "* * * Start of Health Check * * *"
MSG=""
http200apache2=$(curl -I $WEBSITE | grep -w $SITE_UP_STATUS_GREP)
httpapache2=$(systemctl is-active apache2 | grep -w 'active')
tomcat8=$(systemctl is-active tomcat8 | grep -w 'active')
MSG_HTTP="Apache substatus: "$(systemctl show -p SubState apache2)
MSG_TC="Tomcat substatus: "$(systemctl show -p SubState tomcat8)
echo "http-"$httpapache2
echo "tc-"$tomcat8
if [ -z "$http200apache2" ]; then
if [ -z "$httpapache2" ] && [ -z "$tomcat8" ]; then
MSG="App - Status of servers Apache 2 and Tomcat 8: not active"$MSG_HTTP", "$MSG_TC
elif [ -z "$httpapache2"] && [ -n "$tomcat8" ]; then
MSG="App - Status of server Apache 2: not active"$MSG_HTTP
fi
elif [ -z "$tomcat8" ]; then
MSG="App - Status of Tomcat 8: not active"$MSG_TC
fi
echo $MSG
echo "* * * FIN * * *"