У меня есть веб-приложение, работающее на Tomcat, и я хотел бы иметь автоматический способ мониторинга приложения, чтобы убедиться, что оно работает, и, если не запускать / перезапускать tomcat (а также отправлять предупреждение по электронной почте). Я хотел бы сделать больше, чем просто проверить, что Tomcat запущен, и убедиться, что страница по умолчанию из приложения может быть загружена.
Есть ли какой-нибудь инструмент, который лучше всего подходит для этого, кроме написания сценария оболочки и запуска его как задания cron?
Пожалуйста, загляните в Монит утилита.
Это демон и инструмент для наблюдения за процессами, который может предоставлять предупреждения и определенные действия, которые могут вам понадобиться.
Быстрый пример:
check process tomcat with pidfile "/var/run/tomcat/tomcat.pid"
start program = "/usr/local/tomcat/bin/startup.sh" as uid tomcat gid tomcat
stop program = "/usr/local/tomcat/bin/shutdown.sh" as uid tomcat gid tomcat
if failed port 8080 then alert
if failed port 8080 for 5 cycles then restart
Это может кому-то помочь !!
Если вы не хотите использовать какой-либо инструмент мониторинга, настройте конфигурацию электронной почты на сервере Ubuntu с помощью пакета mailutils.
Чтобы отслеживать статус Tomcat, вы можете использовать приведенный ниже сценарий и настроить задание cron, которое запускается каждую минуту / час / день в соответствии с вашими потребностями.
#!/bin/bash
TOMCAT_HOME=/opt/tomcat
PUBLIC_IP=`wget http://ipecho.net/plain -O - -q ; echo`
EMAIL_BODY="Hi Admin,\n\n$PUBLIC_IP Tomcat is down at $(date -d "+330 minutes" +"%Y-%m-%d %T") IST, Please take necessary action.\n\n\nDo not reply to this email as it is auto generated by Ubuntu system\n"
tomcat_pid() {
echo `ps aux | grep org.apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'`
}
start() {
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is already running (pid: $pid)"
else
# Start tomcat
echo "Starting tomcat"
/bin/sh $TOMCAT_HOME/bin/startup.sh
fi
return 0
}
pid=$(tomcat_pid)
if [ -n "$pid" ]
then
echo "Tomcat is running with pid: $pid"
#stop
else
echo "Tomcat is not running"
# send an email alert then start
echo -e $EMAIL_BODY | mail -s "$PUBLIC_IP Tomcat is down" user@email.com
echo "Mail sent"
#remove cache and release memory occupied by heavy processes
start
fi
exit 0