power / knowledge

정전을 만들지 않고 NUT의 종료 절차 시험하기

paul 2025.10.07 129words (1m)

UPS 설정을 다 해놓고도 실제로 잘 도는지는 정전이 나야 안다. 그렇다고 서버를 다 켜둔 채로 콘센트를 뽑아볼 수는 없다.

upsmon 에 FSD를 직접 걸 수 있다.

console
$ upsmon -c fsd

이러면 정전으로 배터리가 바닥난 것과 같은 흐름을 탄다. primary가 secondary들에게 신호를 보내고, HOSTSYNCFINALDELAY 를 지나 SHUTDOWNCMD 가 실행된다.

문제는 마지막 단계에서 진짜로 다 꺼진다는 것이다.

SHUTDOWNCMD를 바꿔놓고 돌린다

시험할 때는 upsmon.confSHUTDOWNCMD 를 로그를 남기는 것으로 바꿔둔다.

bash
SHUTDOWNCMD "/bin/bash -c \"echo 'Simulated shutdown event' >> /etc/nut/nut-test.log\""

이 상태로 upsmon -c fsd 를 돌리면 신호가 전달되는 경로와 지연 시간은 그대로 확인하면서 실제 종료만 일어나지 않는다. 로그 파일에 줄이 찍혔는지 보면 여기까지 왔는지 알 수 있다.

secondary 쪽에도 같은 방식으로 바꿔두면 primary의 신호가 실제로 넘어가는지까지 볼 수 있다.

확인이 끝나면 SHUTDOWNCMD 를 원래대로 되돌리는 걸 잊지 않아야 한다. 시험용으로 바꾼 채 두면 진짜 정전에서 아무것도 꺼지지 않는다.