아 신난다. 이제 부담 없이 떠날 수 있을 것 같다.
Node의 경우 프로세스 데몬을 관리하는 PM2, forever 등아름다운 아이들이 많이 있었는데..
Tomcat 자바로 개발된 서비스가 허구하날 죽는다.
개발된 어플을 보면 정말 죽을수 밖에 없게 만들어져 있다. 몇 차례 수정을 했지만.. 아주 그냥 신나게 임계치를 찍는다. 이게 Report 용 서버는 상관이 없는데 실제 사용되는 서비의 경우에는 물건을 팔수 없는 상황에 오게 된다.
처음에는 Docker통해서 L4 로드벨런싱하고 각각의 데몬은 모니터링해서 응답이 3번 없으면 서비스를 리스타트 형태로 진행하려다가 그냥 Monit으로만 구성.
# yum install monit
만약 못찾을 시
# yum install epel-release
# vi /opt/tomcat/bin/catalina.sh
add
JAVA_OPTS=""
CATALINA_PID=/yourlocation/tomcat.pid
위치 모르겠으면
# find / -name 파일명
# vi /yourlocation/shutdown.sh
add
exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"
이건 각자 서비스 구성도에 따라서, 본인의 경우 os 의 방화벽과, 장비의 방화벽 2다 복합적으로 쓰기때문에
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2812 -j ACCEPT
2812 포트 열어주고
네트워크 장비 들어가서
해당포트 열어줌
# vi /etc/monit.d/tomcat
check process [서비스이름] with pidfile "pid경로"
start program = "startup.sh 경로" as uid root gid root
stop program = "shutdown.sh 경로" as uid root gid root
if failed port 8080 then alert // 8080 포트가 열지리 않을시 alert를 줌
if failed
port 8080
protocol http
request "/url/"
for 3 cycles
then restart
alert admin@asdf.com
# vi /etc/monit.conf
메일 서버 추가
set mailserver smtp.gmail.com port 587
username "[email protected]" password "password"
using tlsv1
with timeout 30 seconds
Gmail의 경우
https://myaccount.google.com/lesssecureapps?pli=1
사이트 들어가 해당 계정
Allow less secure apps: ON
으로 변경 필수
시작 순서,
# tail -f /var/log/monit &
뒤에 & 붙이면 실시간으로 다른짓 하면서 볼수 있음
monit reload // 제일 편하다 서비스 재시작 할필요 없음, conf파일 변경 후나 데몬 추가했을때
# monit reload
monit syntax check // 잘못된거 없나 체크
# monit -t
monit status // 상태 확인
# monit status
monit summary // 서머리
# monit summary
결과 정말 쉽게 재연됨.. ㅋㅋㅋㅋㅋ
[WIB May 15 01:00:59] warning : 'Tomcat' failed protocol test [HTTP] at [localhost]:8080/url/ [TCP/IP] -- HTTP: Error receiving data -- Resource temporarily unavailable
[WIB May 15 10:58:48] warning : 'Tomcat' failed protocol test [HTTP] at [localhost]:8080/url/ [TCP/IP] -- HTTP: Error receiving data -- Resource temporarily unavailable
[WIB May 15 10:59:28] warning : 'Tomcat' failed protocol test [HTTP] at [localhost]:8080/url/ [TCP/IP] -- HTTP: Error receiving data -- Resource temporarily unavailable
[WIB May 15 11:00:08] error : 'Tomcat' failed protocol test [HTTP] at [localhost]:8080/url/ [TCP/IP] -- HTTP: Error receiving data -- Resource temporarily unavailable
[WIB May 15 11:00:13] warning : Cannot translate ‘HOSTNAME’ to FQDN name, please set a sender address using 'set mail-format' -- Name or service not known
[WIB May 15 11:00:20] info : 'Tomcat' trying to restart
[WIB May 15 11:00:20] info : 'Tomcat' stop: '/opt/tomcat/bin/shutdown.sh'
[WIB May 15 11:00:28] info : 'Tomcat' start: '/opt/tomcat/bin/startup.sh'
[WIB May 15 11:00:29] error : 'Tomcat' failed protocol test [DEFAULT] at [localhost]:8080 [TCP/IP] -- Connection refused
[WIB May 15 11:00:34] warning : Cannot translate ‘HOSTNAME’ to FQDN name, please set a sender address using 'set mail-format' -- Name or service not known
[WIB May 15 11:01:11] info : 'Tomcat' connection succeeded to [localhost]:8080/url/ [TCP/IP]
[WIB May 15 11:01:16] warning : Cannot translate ‘HOSTNAME’ to FQDN name, please set a sender address using 'set mail-format' -- Name or service not known
최종적으로 3번 시도후에 서비스 재부팅이 되는것을 볼수 있다. 허나 서비스가 런칭 되는데 시간이 걸린다면 Delay를 줄 수도 있다. 이걸 조정 안하면 무한루프에 빠진다. 시스템이 올라오는데 시간이 걸리는데, 그동안 monit은 해당 서비스가 죽었다고 판단하여 인피니티 ㅋㄷㅋㄷ
기특하게 잘 돌아가고 있고, 3~5분이면 문제가 해결되고 메일로 통보까지 되니 쓸만하다.
MMonit은 일단 퇴근하고 담에 쓰는걸로.
참고로 오픈소스중엔 supervisor도 있다.
자 이제 떠나자 한국가고싶다.
추가 자료