WEB <-> WAS <-> DB 구조 에서 이슈(장애) 발생시 단순하게 구간별 모니터링 하기 간단한 TIP
Point : 단순 하게 application (apache,tomcat,mysql) 등이 사용하는
port 의 ESTABLISHED 카운트
cpu, memory 사용량 체크
process 갯수 카운트
참고 : saltstack 으로 서비스별 role을 구분하여 관리중이다.
1. WEB 구간 체크 (WEB 서버 xx대에 대해서 WAS 연결수 카운트)
salt -G roles:web cmd.run ‘check’
/usr/bin/check (script)
2. WAS 구간 체크 (WAS 서버 xx대에 대해서 WAS 연결수 카운트)
salt -G roles:was cmd.run ‘check’
/usr/bin/check (script)
DB 커넥션 구간도 동일 (서비스 별로 수정해서 쓰면됨)
script 를 cron 에 걸어서 [예를들어 WAS 커넥션이 2000개 이상] 이면 알람이 오게 단순하게 스크립트로 모니터링 해도 됨.
Jennifer, scouter 등 좋은 솔루션도 있지만 , 경험상 간단하게 위와 같은 방식으로 모니터링해도(응용 필요) 충분히 이슈 발생에 대한 사전 인지 가능
다만 detail 한 트러블 슈팅은 APM 등을 활용하던가, application 로그등도 자세하게 살펴 봐야겟죠…..
참고 :
WEB http 80 port 체크 스크립트 (5초단위 체크)
(장애발생시나 웹 서버 트러블 슈팅시 유용하게 가끔 씀)
– nohup script.sh & <- 백그라운드로 실행
#!/bin/bash while [ 0 ]do D=`date +%m%d%Y-%T` D1=`date +%m%d%Y` SV_LIST=`/bin/cat /root/…/server.list` MAIL_LIST=`/bin/cat /root/…/mail.list` for i in ${SV_LIST}do SERVER=`echo $i | awk -F “,” ‘{print $1}’` IP=`echo $i | awk -F “,” ‘{print $2}’` curl -o /dev/null -s -w “$D: $SERVER $IP: Connect: %{time_connect} TTFB: %{time_starttransfer} Total_time: %{time_total} \n” “http://”$IP >> /root/…/DATA/$D1.time.dat PING=`/usr/bin/fping $IP | awk -F ” ” ‘{print $3}’` echo $D $SERVER $IP : “PING-> $PING” >> /root/…/DATA/$D1.ping.dat nc -zv -w 2 $IP 80 > /dev/null 2>&1 if [ “$?” = “0” ] then echo $D $SERVER $IP : “PORT succeeded” >> /root/…/DATA/$D1.port.dat else echo $D $SERVER $IP : “PORT fail” >> /root/…/DATA/$D1.port.dat echo $D $SERVER $IP : “80 PORT fail” | mail -s “$SERVER $IP PORT Down…” $MAIL_LIST fi done sleep 5 done |