서비스가 살아 있는지 주기적으로 확인하고, 죽으면 텔레그램으로 알린다.
http://192.168.0.240:3001NPM 백엔드가 5일간 죽어 있었는데 알림이 오지 않았다.
Uptime Kuma 가 / 만 보고 있었고, 그 경로는 백엔드가 죽어도 정적 페이지가 200 을 돌려준다.
→ 트러블슈팅 기록
각 앱이 제공하는 상태 확인 경로를 쓴다.
http://192.168.0.240:8181/api/http://192.168.0.240:8222/alivehttp://192.168.0.240:8096/healthhttp://192.168.0.240:5230http://192.168.0.240:8010http://192.168.0.240:3110http://192.168.0.240:8095http://192.168.0.240:3080http://192.168.0.240:3100HTTP(s)60 초2 — 연속 2회 실패해야 다운으로 처리 (순간 오탐 방지)60memo-notify, nginx-proxy-manager-db, wikijs-db, paperless-redis, beszel-agent 처럼
HTTP 포트가 없는 것은 컨테이너 상태로 감시한다. 조용히 죽는 종류라 오히려 중요하다.
sudo /usr/local/bin/docker inspect uptime-kuma --format '{{range .Mounts}}{{.Source}} {{end}}'
/var/run/docker.sock 이 없으면 스택에 추가한다.
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
설정 → Docker Hosts → Add
Connection Type: Socket
Docker Daemon: /var/run/docker.sock
Monitor Type: Docker Container
Container Name: memo-notify
내부 IP 감시는 컨테이너 생존만 본다. 외부에서 실제로 접속되는지는 도메인으로 확인해야
프록시 설정·인증서·DNS 까지 함께 검증된다.
https://memo.jjang.synology.mehttps://vault.jjang.synology.meUptime Kuma 는 SSL 인증서 만료 임박도 알려준다. Let's Encrypt 갱신 실패를 미리 알 수 있다.
텔레그램 봇으로 받는다. Watchtower·Beszel 과 같은 채널이며,
가족용 디스코드와는 분리되어 있다 (인프라 경고가 가족 채널에 섞이지 않도록).
감시 대상이 6개뿐이다. 컨테이너는 20개 가까이 된다.
최소한 아래는 추가해야 한다.
/api/ 로 변경nginx-proxy-manager-db (오늘 장애의 발단)memo-notify