PaaS-TA - Troubleshooting Dashboard
“사용자의 서버가 불안정합니다.”
Dashboard 에서 애플리케이션 목록과 서비스 목록은 잘 조회되는데 “사용자의 서버가 불안정합니다.” 라는 메시지가 뜬다.
- Dashboard 에서 애플리케이션 탭, 서비스 탭 확인
- 애플리케이션 상태 확인
- 서비스에서 “대시보드” 버튼이 없어짐 (
이러면 뭘 확인해야지)
앱이 돌아가도 완전히 정상이라고 할 수 없겠지 ?
- IaaS Dashboard 에서 VM의 상태 확인
- Inception 에서 instance 및 process의 상태 확인
bosh instances -p
모든 instance와 process가 Process State : running
임을 확인해도 에러 메세지가 뜬다. 더 깊숙히 찾아봐야 한다.
이제 뭐해, 로그 봐야지 !
instance나 process가 정상적인 상태가 아니라면 그 부분을 먼저 확인해 볼 수도 있겠지만, 모두 정상이라고 하니까 Dashboard가 있는 portal 관련 deployment 를 확인해야 한다.
portal 관련 deployment는 portal-ui, portal-api 2가지가 있다. ui는 api에서 데이터를 받아와서 보여주는 방식이니 api 로그를 확인한다. (묻지도 따지지도 않고 당연히 api 먼저 확인)
# inception
bosh -d <portal-api-deployment> ssh <api-instance>
# api-instance
cd /var/vcap/sys/log/<api-process-or-job>
ll
May 27 06:04 <api-process-or-job>.stderr.log
May 27 05:04 <api-process-or-job>.stdout.log
tail -f <api-process-or-job>.stderr.log
tail -f <api-process-or-job>.stdout.log
로그를 확인해보니 java.sql.SQLException: Too many connections
라는 ERROR
가 있다. db도 확인해봐야겠다.
“Too many connections”
db도 동일하게 로그를 확인한다.
# inception
bosh -d <portal-api-deployment> ssh <db-instance>
# db-instance
cd /var/vcap/sys/log/<db-process-or-job>
ll
May 27 06:04 <db-process-or-job>.stderr.log
May 27 05:04 <db-process-or-job>.stdout.log
tail -f <db-process-or-job>.stderr.log
tail -f <db-process-or-job>.stdout.log
db 로그를 살펴보니, 1초에 여러 건의 쿼리 요청이 수십분 동안 지속되고 있다. stdout
로그의 마지막 수정시간이 한시간인데, stderr
로그의 마지막 수정시간은 현재 시간(date
)이다. 에러만 나오고 정상적인 output이 없다는 것이다.
- 누군가의 무차별 대입 공격(Brute Force attack) 인가?
- 누군가의 무한한 로그인 시도 및 새로고침 인가 ?
어떤 request에 의해서 db에 병목현상이 일어나는 것은 분명하다. process를 재시작하고 다시 확인한다.
process
재시작monit restart <process-name>
지켜보자
- 알림 메시지 안 뜸
- Dashboard 에서 애플리케이션 탭, 서비스 탭 확인
- 애플리케이션 상태 확인
- 서비스에서 “대시보드” 버튼 확인
.
댓글남기기