사이트 다운 알림
사용자보다 먼저 서비스 중단을 알게 되는 방법: 외부 점검, 서버 자체의 간단한 감시 프로그램, 자동 서비스 재시작을 다뤄요.
업데이트 2026년 8월 23일
제어판의 그래프는 머신의 상태를 보여주지만 "사이트가 살아 있는가?"라는 질문에는 답하지 못해요. 애플리케이션은 CPU가 유휴 상태인데도 멈출 수 있고, 외부 점검이 없다면 고객에게서 그 사실을 듣게 돼요.
외부 점검
핵심 규칙은 모니터링 대상 머신에서 점검하지 않는 것이에요. 외부 업타임 모니터링 서비스를 이용하세요. 무료 요금제로 여러 주소를 1분 간격으로 점검할 수 있는 서비스가 많아요. 정말 중요한 설정은 다음과 같아요.
- 점검 주소. 홈 페이지가 아니라 데이터베이스와 큐를 함께 확인하는
/healthz같은 별도 경로를 사용하세요. 그렇지 않으면 백엔드가 죽어 있어도 캐시된 홈 페이지가 응답해요. - 기대 응답. 200 코드와 본문의 특정 문자열이에요. 많은 애플리케이션이 장애 시에도 200과 함께 오류 메시지를 반환해요.
- 임계값. 연속 두세 번 실패해야 알림을 보내도록 하세요. 그렇지 않으면 사소한 네트워크 문제에도 알림이 울려요.
- 채널. Telegram 또는 이메일이에요. 알림이 실제로 도착하는지 확인하세요. 서비스를 1분간 중지하고 메시지를 기다리면 돼요.
인증서 만료 점검도 별도로 잊지 마세요. TLS 인증서가 만료되면 장애처럼 보이고, 이는 정기적으로 발생해요.
머신 자체의 watchdog
외부 모니터링은 사이트가 다운됐다는 사실을 알려줘요. 스스로 다시 살아나게 하려면 systemd를 구성하세요. 서비스 유닛에 다음을 넣어요.
[Service]
Restart=always
RestartSec=5
StartLimitBurst=5
StartLimitIntervalSec=120
이렇게 하면 서비스가 우발적인 충돌에서 살아남지만, 구성이 깨진 경우 무한 재시작 루프에 빠지지는 않아요. 수정 후에는 systemctl daemon-reload && systemctl restart myapp를 실행하세요.
충돌하지 않고 멈추기만 하는 애플리케이션에는 HTTP 점검을 추가하세요. 타이머와 서비스, 두 개의 유닛이 필요해요.
cat >/etc/systemd/system/healthcheck.service <<'EOF'
[Service]
Type=oneshot
ExecStart=/usr/local/bin/healthcheck.sh
EOF
cat >/etc/systemd/system/healthcheck.timer <<'EOF'
[Timer]
OnUnitActiveSec=60
[Install]
WantedBy=timers.target
EOF
systemctl enable --now healthcheck.timer
스크립트 자체는 다음과 같아요.
#!/bin/sh
curl -fsS --max-time 10 http://127.0.0.1:8080/healthz >/dev/null || systemctl restart myapp
머신 상태 알림
디스크 공간과 메모리 부족도 장애가 발생하기 전에 알아두면 유용해요. 가장 간단한 방법은 임계값을 초과하면 Telegram 메시지를 보내는 cron 작업이에요.
0 * * * * root [ "$(df --output=pcent / | tr -dc 0-9)" -gt 85 ] && curl -s -X POST "https://api.telegram.org/bot$TOKEN/sendMessage" -d chat_id=$CHAT -d text="VDS disk usage is over 85%"
임계값이 미리 설정된 더 발전된 방법은 Netdata에서 제공해요.
흔한 실수
- 같은 머신에서 모니터링하기. 머신이 다운되면 watchdog과 알림이 함께 죽어요.
- 너무 민감한 임계값. 거짓 알림이 쏟아지면 진짜 알림은 그냥 지나치게 돼요.
- 원인을 조사하는 대신
Restart=always사용하기. 재시작은 메모리 누수를 가려요. 서비스가 30분마다 충돌하는데도 눈치채지 못해요.systemctl show myapp -p NRestarts와 journal을 확인하세요. - ping으로만 점검하기. 웹 서버가 완전히 죽어 있어도 머신은 ICMP에 응답해요.
알림이 울리면 가장 먼저 확인할 것은 제어판
/hosting/vds/m/<id>의 "Overview"예요. 그래프가 끊기면 머신 문제, 사이트를 사용할 수 없는데 그래프가 평탄하면 애플리케이션 문제예요.