떠 있는 섬 위 사람이, 위성 뒤로 조용히 새어 나가는 금화를 발견하고 놀라는 모습 - GCP 무료 트래픽 초과 원인을 발견한 이야기를 표현한 일러스트

공짜라며? 위성이 몰래 요금을 부르고 있었습니다 (GCP 무료 트래픽 초과)

7편에서 제가 자랑했잖아요. 미국에 공짜 위성(GCP) 하나 띄웠다고.

그 위성이, 알고 보니 조용히 사고를 치고 있었어요. GCP 무료 트래픽 한도를 넘겨서, 하마터면 돈이 나갈 뻔했거든요.

어느 날, 상태봇이 이런 걸 띄웠어요

저는 텔레그램 상태봇으로 수시로 서버 상태를 확인하는 습관이 있어요. 그날도 별생각 없이 “상태”를 쳤는데, 이런 게 떠 있었어요.

텔레그램 상태봇이 알려준 GCP 이번달 예상 트래픽 1.03GB, 무료 한도 1GB 초과 경고
“이번달 예상 트래픽 1.03GB / 1GB.” 이 한 줄이 시작이었어요.

“이번달 예상 트래픽 1.03GB / 1GB.”

GCP 무료 한도가 한 달에 1GB(Google Cloud 무료 등급 문서)인데, 그걸 넘겼다는 거예요.

무료라며? 그럼 돈 나가는 거야?

솔직히, CPU랑 메모리만 신경 쓰고 있었어요. 트래픽이 발목을 잡을 줄은 상상도 못 했거든요.

다행히, 돈은 안 나갔어요

먼저 안심부터 하고 갈게요. 결제 화면을 열어봤어요.

GCP 무료 체험판 크레딧 사용 현황 - 231원 사용, 448,796원 남음
지금까지 쓴 돈도 전부 무료 크레딧에서 깎인 거였어요.

지금까지 쓴 231원도 전부 무료 체험판 크레딧에서 깎인 거였어요. 실제로 카드에서 빠져나간 돈은 0원.

근데 안심만 하고 넘어갈 순 없었어요. 이 크레딧은 언젠가 끝나거든요. 그때부턴 진짜 청구돼요.

그러니까 크레딧이 막아주는 지금, 이 새는 구멍을 막아둬야 했어요.

진짜 범인 — 밖에서 사이트 두드리던 감시병

컨테이너별로 누적 트래픽을 재봤더니, 범인이 딱 나왔어요.

블랙박스 익스포터(blackbox exporter). 8일 만에 7.21GB.

이게 뭐냐면, 7편에서 “위성이 밖에서 itnoper.com이 열리는지 두드려본다”고 했던 그 담당이에요. 근데 이 녀석이 트래픽을 통째로 먹고 있었어요.

왜 이렇게 많이 먹었냐면요.

GET의 함정 — 매번 집을 통째로 사진 찍고 있었어요

블랙박스가 사이트를 확인하는 방식이 문제였어요. ※ 블랙박스 익스포터 : 밖에서 웹사이트가 열리는지 실제로 두드려보는 도구예요. (공식 저장소)

※ GET : 웹페이지의 내용 전체를 다 받아오는 방식. ※ HEAD : “응답 오나 안 오나(상태 코드)”만 확인하고, 내용은 안 받는 방식.

블랙박스는 “사이트 살았나 죽었나”만 확인하면 되는데, 매번 GET으로 워드프레스 페이지 전체를 통째로 받아오고 있었어요. 그것도 15초마다, 8개 사이트나요.

택배가 왔는지 확인하려고 송장만 보면 되는데, 매번 상자를 다 뜯어서 내용물을 확인하고 있던 거죠.

게다가 그 8개 목록엔 8편에서 이미 지운 넷데이터도 들어있었어요. 죽은 사이트를 15초마다 계속 두드리고 있었던 거예요.

감시병 셋을 다 뜯어고쳤어요

여기서 중요한 걸 깨달았어요. GCP는 메인 서버가 아니라 보조 수단이에요. 오라클이 진짜 본진이고, GCP는 그저 밖에서 지켜보는 눈일 뿐이거든요. 그런 보조 서버를, 그리고 보조 서버가 오라클을 살피는 것을, 몇 초마다 촘촘하게 할 이유가 전혀 없었어요.

그 관점으로 보니, 손볼 데가 하나가 아니었어요.

1. 블랙박스 — 죽은 대상(넷데이터)·불필요한 대상(구글) 빼고, 진짜 중요한 itnoper.com 하나만 남겼어요. 주기도 15초에서 2시간으로 확 늘리고요.

2. 노드 익스포터 스크랩 — 오라클(본진)이 GCP 위성을 15초마다 들여다보고 있었는데, 이것도 태평양을 건너는 트래픽이라 요금이 붙었어요. 10분으로 늘렸다가, 그래도 아쉬워서 30분까지 더 늘렸어요.

3. 업타임 쿠마 — 여기서 끝이 아니었어요. 쿠마도 itnoper.com을 60초마다 확인하고 있길래, 이것도 10분으로.

업타임 쿠마의 itnoper.com 모니터 체크 주기를 600초로 늘린 설정 화면
쿠마도 60초마다 확인하고 있었어요. 이것도 10분으로 늘렸어요.

하나 잡으면 또 나오고, 또 나오고. 공짜 하나 지키자고 감시병 셋을 다 뜯어고쳤네요.

결과 — 이만큼 줄었어요

블랙박스·노드익스포터·쿠마 주기 조정 후 GCP 외부 전송량 실측 화면
감시병 셋을 다 손보고 나서 잰 결과예요.

숫자로 보면 확실해요.

  • 손보기 전 : 하루 약 900MB (한 달로 치면 27GB, 무료 한도의 27배)
  • 1차 손본 후(블랙박스 2시간·1개 + 노드 익스포터 10분 + 쿠마 10분) : 하루 약 30MB (한 달 약 909MB)

약 30배 줄었어요. 한 달 예상치가 무료 한도(1GB) 91% 수준까지 내려왔는데, 여유가 그리 넉넉하진 않아서 노드 익스포터 스크랩 주기를 30분으로 한 번 더 늘렸어요. (★ 30분 적용 후 최종 수치 확인 예정)

그럼 오라클은 괜찮나? — 돌아봤어요

이 사건 이후, 내친김에 메인 서버인 오라클도 돌아봤어요. 오라클 프리티어만 쓸 땐 트래픽 같은 건 상상도 못 하던 일이었거든요.

오라클 서버 35일 가동 기준 외부 전송량 13.895GB 확인 화면
35일에 13.9GB. 오라클은 한도가 10TB라 문제없었어요.

35일 동안 13.9GB. 하루 400MB 정도예요.

근데 오라클은 전혀 문제가 없었어요. 무료 트래픽 한도가 GCP(월 1GB)랑은 자릿수가 다른 월 10TB거든요. 13.9GB는 한도의 0.1%도 안 돼요.

같은 감시 구조인데 왜 GCP만 사달이 났냐면, 결국 한도의 차이예요. GCP는 그릇이 1GB로 짜서 조금만 넘쳐도 경고가 뜨고, 오라클은 그릇이 어마어마하게 커서 신경 쓸 일이 없는 거죠.

공짜에도 관리비가 든다

이번에 배운 게 있어요.

무료라고 손 놓고 있으면, 어느새 한도를 넘겨서 돈을 부를 수 있어요. “공짜 위성”도 공짜로 유지되려면, 가끔 들여다보고 새는 구멍을 막아줘야 하더라고요.

그리고 이걸 제때 발견한 건, 순전히 텔레그램 상태봇으로 수시로 서버를 확인하는 습관 덕분이었어요. 그 습관이 없었으면 크레딧이 조용히 다 깎일 때까지 몰랐을 거예요.

물론 이번에도 범인 찾고 고치는 건 다 AI한테 물어가며 했어요. 로그 보는 법도, 트래픽 재는 명령어도, 설정 고치는 법도요. 비개발자가 혼자 다 아는 척 안 해요. 모르면 물어보고, 대신 “무엇을, 왜”는 제가 쥐고 있어요.

다음 편엔, 이 서버를 바깥에서 노리는 진짜 위협을 막는 이야기를 해볼게요. 관제팀은 다 꾸렸으니, 이제 문 앞에 경비를 세울 차례예요. CrowdSec으로 오라클 서버에 보안을 입혀볼게요.

글쓴이 · itnoper

IT 전공했지만 그 길을 떠난 지 10년, 지금은 현장에서 6년째 일하고 있어요. 개발자는 아니에요. AI한테 밀려나지 않으려고, 남의 땅 말고 내 땅에 서버 하나 직접 굴리면서 배운 걸 기록합니다. 소개 →

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다