Я установил Monit с помощью следующей команды на сервере Ubuntu Linux 12.04.1
sudo apt-get install monit
Моя основная цель при использовании Monit - автоматически перезапустить мои службы Tomcat MySQL и Apache, когда они убиты / остановлены.
#Check and restart mysql service
check process mysqld with pidfile "/run/mysqld/mysqld.pid"
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout
Приведенный выше код работает отлично, и Monit перезапускает службу MySQL (когда ее убивают / останавливают).
На самом деле я настроил tomcat следующим образом: - Загрузил zip-архив tomcat и извлек его в определенное место - Настроил его как службу моего демона (и мой сервер tomcat работает правильно).
Поскольку у меня нет файла pid для этой настройки tomcat, я планирую проверить статус tomcat и запустить его, используя следующий код:
#Check and restart tomcat service
check host tomcat with address 127.0.0.1
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat start"
if failed port 8080 and protocol http
then start
Однако мне не удалось успешно запустить tomcat (когда он был убит). Изучив логи Monit, я обнаружил следующее сообщение:
[UTC Dec 24 12:08:23] error : 'tomcat' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP
[UTC Dec 24 12:08:23] info : 'tomcat' start: /etc/init.d/tomcat
Из приведенных выше журналов я обнаружил, что Monit пытается автоматически запускать tomcat в каждый конкретный момент (когда обнаруживает, что служба tomcat была убита). Однако некоторые внутренние конфликты останавливают это!
Дополнительная информация:
Сервер Tomcat правильно работает с использованием порта 8080:
netstat -an | grep 8080
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 127.0.0.1:8080 127.0.0.1:53582 TIME_WAIT
ps -ef|grep tomcat
root 16237 1 9 12:10 ? 00:00:37 /usr/lib/jvm/java-6-oracle/bin/java -Djava.util.logging.config.file=/usr/share/apache-tomcat-7.0.40/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.endorsed.dirs=/usr/share/apache-tomcat-7.0.40/endorsed -classpath /usr/share/apache-tomcat-7.0.40/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.40/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/apache-tomcat-7.0.40 -Dcatalina.home=/usr/share/apache-tomcat-7.0.40 -Djava.io.tmpdir=/usr/share/apache-tomcat-7.0.40/temp org.apache.catalina.startup.Bootstrap start
root 16851 16847 0 12:17 ? 00:00:00 sh -c su root -c ps\ \-ef\|grep\ tomcat 2>&1 2>/dev/null
root 16852 16851 0 12:17 ? 00:00:00 su root -c ps -ef|grep tomcat
root 16853 16852 0 12:17 ? 00:00:00 bash -c ps -ef|grep tomcat
root 16855 16853 0 12:17 ? 00:00:00 grep tomcat
Добавление предпочитаемых IPv4Addresses и предпочитаемых IPv4Stack в файл catalina.sh:
JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m
-XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"
Журнал мониторинга:
[UTC Dec 24 12:48:39] error : 'tomcat' failed protocol test [HTTP] at INET[127.0.0.1:8080] via TCP -- HTTP: Error receiving data -- Resource temporarily unavailable
Может ли кто-нибудь помочь мне в этом?
Спасибо.
Похоже, Tomcat привязывает себя к адресу ipv6 для 127.0.0.1.
Вы можете попробовать использовать preferIPv4Stack=true
и preferIPv4Addresses=true
директивы в параметрах Java для привязки к IPv4-адресу
редактировать catalina.sh
Сценарий запуска Tomcat и добавьте следующее:
JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"