자동 스크립트는 1 분 텀을 주기로 아래 주요 싱크 로그 3개를 서치하여 Error 발생 시 시각과 함께 로그를 남긴다 aptos_state_sync_continuous_syncer_errors{error_label="unexpected_error"}

aptos_state_sync_continuous_syncer_errors{error_label="data_stream_notification_timeout"}

aptos_state_sync_timeout_total

위 로그의 발생 건수 총 합이 분당 10건 이상 발생하고 텀 전후를 비교할 때 싱크 증가치가 20% 이하 수준으로

감소할 경우 즉시 노드를 재 기동 시키고 로그를 남기며 일주일 주기로 삭제 재 생성한다 (기존 로그는 .old 보관)

또한 에러가 추적되지 못할 정도로 외부 요인에 의한 돌발적인 노드 다운, 예를 들면 수동 다운 작업 및 충돌이나

외부 요인에 의해 도커가 exit 한 상태로 10분 동안 변화가 없다면 강제로 노드를 기동시킨다

아래 이미지는 필자가 의도적으로 docker compose down 시킨 이 후 로그에 남겨진 필자의 자동 스크립트 동작이다

Screen Shot 2022-06-18 at 8.42.17 PM.png

아래 이미지는 실제 돌발적으로 도커 구동이 멈춘 상황에서 본 스크립트가 10 분동안 모니터링 후 여전히 상태 변화가 없음을 판단하고 자동으로 노드를 리스타트한 로그다 (현재 모니터링 시간을 10분에서 5분으로 단축시켰음)

Screen Shot 2022-06-19 at 7.10.54 PM.png

현재 리스타트 조건은 지속적으로 테스트 하면서 최적화 중이며, 향후 테스트넷 디도스 공격 테스트 시점에 이르러 리스타트 스크립트의 필요성과 중요성이 부각될 것으로 판단된다

sudo su

cd ~/aptos # 작업 디렉토리가 aptos가 아니라면 모니터링하고자 하는 작업 폴더로 이동

wget -q -O aptos_restart.sh [<https://raw.githubusercontent.com/shyoon71/installation-script/main/aptos_restart.sh>](<https://raw.githubusercontent.com/shyoon71/installation-script/main/aptos_restart.sh>) && sudo chmod +x aptos_restart.sh && sudo nohup ./aptos_restart.sh &> restart_log.out &

위 명령문은 백그라운드로 실행되고 현재 디렉토리 내에 로그를 생성하기에 언제든지 이력을 확인할 수 있다

cd ~/aptos # 작업 디렉토리가 aptos가 아니라면 모니터링하고자 하는 작업 폴더로 이동