티스토리 뷰

공부

cpu-watchdog

Vincent Park 2015.12.07 15:38

얼마만의 포스팅인가! 그동안 미친듯이 바빴다. 역시 한가해야 포스팅을 할 수 있다. 


검색엔진으로 elasticsearch 를 사용하는데, 요즘 이 녀석이 말썽을 부려서 서비스장애가 잦아졌다.

문제는 클러스터에 묶여있는 여러 노드중에서 특정 노드 하나가 행이 걸리거나 해서 cpu 사용률이 치솟게 되면,

나머지 다른 노드들도 덩달아서 같이 cpu 사용률이 올라가면서 응답이 느려지는 현상이다.


근본원인을 해결할때까지, 우선 서비스장애로 이어지지 않도록 cpu 감시견 cpu-watchdog 을 만들어봤다.

아주 간단하게 만들어서 세워두었다. 이녀석이 하는일은 간단하다.

1분마다 서버의 cpu 사용률을 가져와서 95% 이상 점유하고 있으면 elasticsearch 를 재시작 해준다.



cpu-watchdog.sh

#!/bin/sh


maxcpu=95

cpu_usage=`top -b -n 5 -d.2 | grep "Cpu" | awk 'NR==3{ print($2)}'` # top command 로 현재 cpu 사용률 가져오기 ex) 10%us

blank=''

cpu="${cpu_usage/\%us,/$blank}"


date=`date '+%F %r'`

echo "[$date] cpu usage : $cpu %"; # 현재 일시를 찍음 (로그에 남기기 위함)


if ((`bc <<< "$cpu > $maxcpu"` )) ; then

    echo "!!!! WARNING!! HIGH CPU USAGE !!!!";

    /etc/init.d/elasticsearch restart

fi

exit 0


crontab -e

* * * * * /root/bin/cpu-watchdog.sh >> /root/logs/cpu-watchdog.log




저작자 표시
신고
댓글
댓글쓰기 폼