워드프레스 메인에 뜬금없는 JSON 코드가 떴다 (feat. Uptime Kuma 도입기)

2025년 12월 17일

자고 일어나서 블로그에 들어갔는데, 공들여 꾸민 디자인은 온데간데없고 웬 외계어 같은 텍스트 쪼가리만 떠 있다면? 상상만 해도 등골이 서늘하다. 얼마 전 내 워드프레스 블로그가 딱 그랬다.

서버가 터진 것도 아니었다. 멀쩡히 접속은 되는데(200 OK), 화면에는 내 관리자 정보가 담긴 날것의 JSON 데이터만 덩그러니 출력되고 있었다.

정확한 원인은 미궁 속이다. 다만 확실한 건 CloudFront가 어딘가 꼬여서 엉뚱한 API 응답을 메인 페이지로 착각하고 캐싱해버렸다는 점이다. 캐시 무효화(Invalidation)를 하니 거짓말처럼 해결됐지만, 도대체 왜, 어떤 타이밍에 저런 데이터가 캐싱되었는지는 알 수 없다.

이 사건의 교훈은 명확하다. “서버가 살아있는지(Up)”만 체크해서는 부족하다. “제대로 된 화면이 뜨는지(Valid)”를 감시해야 한다. 그래서 자가 호스팅 모니터링 툴인 Uptime Kuma를 도입하게 됐다.

1. 설치는 심플하게: Docker Compose

AWS Route 53 같은 유료 헬스 체크를 쓸 수도 있지만, 고작 개인 블로그 하나 감시하자고 고정비를 늘릴 순 없다. 놀고 있는 서버(오라클 클라우드 등)에 도커로 Uptime Kuma를 올리는 게 가성비 갑이다.

코드는 아주 심플하다. docker-compose.yml 파일 하나면 끝난다.

YAML
version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    volumes:
      - ./uptime-kuma-data:/app/data
    ports:
      - 3001:3001  # 포트는 본인 환경에 맞게 변경
    restart: always

이걸 서버에 저장하고 docker-compose up -d 명령어 한 방이면 설치 완료다.

2. 핵심 설정: “키워드 체크”가 포인트

설치가 끝나면 대시보드에 들어가서 모니터를 추가한다. 여기서 가장 중요한 건 단순 Ping이 아니라 ‘키워드(Keyword)’를 체크하는 것이다.

HTTP 상태 코드가 200이어도 화면이 깨져있을 수 있다. 그래서 우리는 Kuma에게 “이 단어가 보이면 정상, 혹은 이 단어가 보이면 비정상”이라고 똑똑하게 가르쳐야 한다.

워드프레스 메인에 뜬금없는 JSON 코드가 떴다 (feat. Uptime Kuma 도입기)
  • 모니터링 종류 : HTTP(s) – 키워드
  • URL: 감시할 블로그 주소 (https://goodbyte.me)
  • 키워드(Keyword): 여기서 전략을 잘 짜야 한다.

나는 두 가지 안전장치를 걸었다.

  1. Positive Keyword (포함되어야 함): 워드프레스라면 무조건 있는 태그.
    • 값: <meta name="generator" content="WordPress
    • 의미: 이 태그가 안 보이면 사이트 껍데기가 안 뜬 거다.
  2. Negative Keyword (포함되면 안 됨): 저번처럼 JSON 오류가 날 때만 뜨는 단어.
    • 값: "avatar_urls" 또는 "wp-json"
    • 의미: 이 단어가 화면에 뜨면 즉시 경고를 날려라.

3. 알림 설정: 디스코드로 즉각 반응하기

감시는 Kuma가 하고, 보고는 디스코드(Discord)로 받는다. 슬랙이나 텔레그램도 되지만, 디스코드가 제일 편하다.

설정 탭에서 알림 설정으로 들어간 뒤, 디스코드 선택 후 웹훅 URL만 붙여넣으면 된다.

(디스코드 웹훅 URL을 따는 방법은 내용이 길어지니 별도 포스팅으로 정리하겠다. 일단 채널 설정에서 웹훅을 만들어 오자.)

워드프레스 메인에 뜬금없는 JSON 코드가 떴다 (feat. Uptime Kuma 도입기)

이렇게 해두면 사이트가 죽거나 이상한 데이터가 뜰 때 내 폰으로 즉시 알람이 온다.

4. 실제 테스트: 오류 발생 시

설정을 마치고 테스트를 해봤다. 일부러 오류 조건을 만들어서 알림이 오는지 확인해 보니, 칼같이 반응한다.

워드프레스 메인에 뜬금없는 JSON 코드가 떴다 (feat. Uptime Kuma 도입기)

이렇게 빨간색으로 [Down] 알림이 딱 뜬다. 단순 접속 불가뿐만 아니라, 내가 설정한 키워드 규칙에 어긋나도 똑같이 경고해 준다. 이제 안심이다.

마치며

서버 관리의 핵심은 ‘모르는 사이에 터지는 일’을 없애는 거다. CloudFront가 가끔 엉뚱한 화면을 캐싱해서 배포하는 문제가 걱정된다면, 혹은 알 수 없는 이유로 화면이 깨지는 상황을 대비하고 싶다면 지금 당장 Uptime Kuma를 설치하고 ‘콘텐츠 매칭’ 옵션을 켜두길 권한다.

기계는 거짓말을 안 하지만, 가끔 멍청한 짓은 하니까 똑똑한 감시자가 필요하다.

관련 글