자동 스크립트는 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
시킨 이 후 로그에 남겨진 필자의 자동 스크립트 동작이다
아래 이미지는 실제 돌발적으로 도커 구동이 멈춘 상황에서 본 스크립트가 10 분동안 모니터링 후 여전히 상태 변화가 없음을 판단하고 자동으로 노드를 리스타트한 로그다 (현재 모니터링 시간을 10분에서 5분으로 단축시켰음)
현재 리스타트 조건은 지속적으로 테스트 하면서 최적화 중이며, 향후 테스트넷 디도스 공격 테스트 시점에 이르러 리스타트 스크립트의 필요성과 중요성이 부각될 것으로 판단된다
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가 아니라면 모니터링하고자 하는 작업 폴더로 이동