모니터링 서비스 비교: Better Stack부터 Datadog까지 7곳
Better Stack 첫 화면에는 표가 하나 있습니다. 한 달에 트레이스·로그·지표를 각각 1TB씩 보낼 때 Datadog은 약 $55,574, Better Stack은 $687이라고 적혀 있습니다. 표 아래 각주는 이 숫자가 추정치이며 연 결제, 유럽 데이터 위치, 응답자 1명, Tera 번들, 평균 이벤트 크기 1kB를 가정했다고 밝힙니다.
같은 페이지 제목에는 "Datadog보다 30배 싸다"고 적혀 있는데, 표의 두 숫자는 80배 넘게 차이 납니다. 배수는 무엇을 얼마나 보내느냐는 가정이 정합니다. 가정을 바꾸면 순위도 바뀝니다.
"모니터링 도구"라는 한 칸에 넣으면 생기는 착각
흔히 이 서비스들을 모니터링 도구라는 한 칸에 넣고 무료 한도와 월 가격으로 줄을 세웁니다. 그런데 UptimeRobot과 Sentry를 나란히 놓으면 비교할 거리가 거의 없습니다. UptimeRobot은 사이트가 응답하는지 밖에서 몇 분마다 물어봅니다. Sentry는 응답한 코드 안에서 터진 예외를 모읍니다. 하나는 문이 열려 있는지 보고, 하나는 안에서 무엇이 깨졌는지 봅니다.
제가 보기에 이 서비스들은 가격보다 먼저 장애 한 번의 어느 순간을 맡느냐로 갈립니다. 그 순간들을 먼저 나눠 두면 비교표가 비로소 읽힙니다.
장애 한 번이 거치는 여섯 자리
서비스가 멈추면 먼저 누군가 알아차려야 합니다. 사용자가 먼저 알아차렸다면 이미 늦었습니다. 밖에서 주기적으로 주소를 찔러 보는 업타임 체크가 이 자리를 맡습니다.
알아차린 다음에는 사람이 깨야 합니다. 알림을 누구에게 보낼지, 그 사람이 안 받으면 다음은 누구인지 정하는 것이 당번(on-call) 관리입니다. 고치는 동안 고객 문의가 쏟아지지 않게 하려면 상태 페이지에 "지금 알고 있고, 고치는 중"이라고 적어 둡니다.
그다음이 원인 찾기입니다. 로그는 무슨 일이 있었는지, 지표는 언제부터 이상했는지, 트레이스는 요청이 어느 구간에서 멈췄는지를 말해 줍니다. 에러 추적은 예외를 종류별로 묶어 어느 배포에서 처음 나왔는지 보여 줍니다. 마지막으로 실사용자 모니터링(RUM)과 세션 리플레이는 그동안 사용자 화면에서 무슨 일이 벌어졌는지를 남깁니다.
전 단계를 묶어 파는 곳과 한 자리만 파는 곳
| 서비스 | 업타임 체크 | 알림·당번 | 상태 페이지 | 로그·지표·트레이스 | 에러 추적 | RUM·리플레이 |
|---|---|---|---|---|---|---|
| Better Stack | ● | ● | ● | ● | ● | ● |
| Datadog | ● | ● | 확인 못 함 | ● | ● | ● |
| Grafana Cloud | ● | ● | 확인 못 함 | ● | ● | ● |
| Sentry | △ | 알림만 | ✕ | 로그·트레이스 | ● | ● |
| UptimeRobot | ● | 알림만 | ● | ✕ | ✕ | ✕ |
| PagerDuty | ✕ | ● | 유료 플랜 | ✕ | ✕ | ✕ |
| Statuspage | ✕ | ✕ | ● | ✕ | ✕ | ✕ |
위 세 곳은 한 계정으로 여섯 자리를 거의 다 채웁니다. 아래 네 곳은 한두 자리를 깊게 팝니다. Sentry의 업타임이 세모인 것은 무료 플랜에 업타임 모니터가 1개 들어 있어서입니다. PagerDuty는 유료 Professional 플랜에 구독자 250명까지의 외부 상태 페이지가 들어 있습니다. Datadog과 Grafana Cloud의 상태 페이지는 공식 페이지에서 확인하지 못해 비워 뒀습니다.
통합형이 에러 추적에서 내세우는 것도 봐 둘 만합니다. Better Stack은 Sentry SDK 호환을 적어 둡니다. 앱에 이미 심어 둔 Sentry SDK는 그대로 두고 받는 쪽만 바꾼다는 뜻입니다. Grafana Cloud는 OpenTelemetry와 Prometheus를 기본으로 받습니다. 수집 쪽을 표준에 맞춰 두면 나중에 서비스를 옮길 때 앱 코드를 덜 건드립니다.
사람, 호스트, GB로 갈리는 과금 기준
| 서비스 | 무료로 되는 것 | 유료 시작 | 과금 기준 |
|---|---|---|---|
| Better Stack | 모니터 10개(3분 간격), 상태 페이지 1개, 로그·트레이스 각 3GB(3일 보관), 예외 월 10만 건 | 응답자 1명 월 $29(연 결제), $34(월 결제) | 업타임·당번은 응답자 수, 로그·트레이스·지표는 GB |
| UptimeRobot | 모니터 50개(5분 간격) | Solo 월 $9(연 결제), $10(월 결제), 60초 간격 | 모니터 수와 확인 간격 |
| Sentry | 사용자 1명, 에러 월 5천 건, 스팬 500만, 리플레이 50개, 로그 5GB | Team 월 $26(연 결제, 기본 선불 데이터 포함) | 이벤트 양 |
| Datadog | 호스트 5대, 지표 1일 보관 | Pro 호스트당 월 $15(연 결제), $18(온디맨드) | 호스트 수, 로그는 수집과 색인을 따로 |
| Grafana Cloud | 지표 시리즈 1만, 로그·트레이스 각 50GB, 14일 보관, 사용자 3명 | Pro 월 $19에 사용량 추가 | 사용량과 활성 사용자 수 |
| PagerDuty | 사용자 5명, 당번표 1개, 해외 전화·SMS 월 100건 | Professional 사용자당 월 $21(연 결제), $25(월 결제) | 사용자 수 |
| Statuspage | 구독자 100명, 컴포넌트 25개, 팀원 2명 | Hobby 월 $29 | 구독자 수 |
2026년 9월 11일에 각 사 가격 페이지에서 확인한 값입니다(Better Stack, UptimeRobot, Sentry, Datadog, Grafana Cloud, PagerDuty, Statuspage).
이 표에서 봐야 할 것은 금액보다 마지막 열입니다. 서버가 두 대이고 개발자가 열 명인 팀과, 서버가 스무 대이고 개발자가 두 명인 팀은 같은 서비스에서 전혀 다른 청구서를 받습니다. Datadog은 호스트를 세고 PagerDuty는 사람을 셉니다. Better Stack은 당번 설 사람과 보내는 GB를 따로 셉니다.
Datadog 로그는 두 번 과금됩니다. 받는 데 GB당 $0.10, 검색할 수 있게 색인하는 데 100만 건당 $1.70(15일 보관, 연 결제)입니다(Datadog 가격 목록). 로그 한 줄이 작을수록 GB보다 건수가 청구서를 정합니다.
무료 플랜 문구도 읽어야 합니다. Better Stack 무료 플랜에는 "개인 프로젝트용"이라고 적혀 있습니다. UptimeRobot 무료 플랜은 취미·비영리 프로젝트에 좋다고 소개하지만, 약관은 상업적 용도를 포함해 어떤 용도로든 쓸 수 있다고 적고 있습니다. Better Stack의 문구가 상업적 사용을 막는 조건인지는 약관까지 확인하지 못했습니다.
로그를 보내기 전에 볼 저장 리전
로그를 받는 네 곳 중 한국 리전을 둔 곳은 없습니다. Better Stack은 미국·유럽·싱가포르이고, Sentry는 미국·유럽 둘뿐이며 가입할 때 고른 리전을 나중에 바꿀 수 없습니다. Datadog의 아시아태평양 사이트는 일본과 호주입니다. Grafana Cloud는 싱가포르·일본·인도·인도네시아·호주에 있습니다.
Better Stack은 리전마다 가격도 다릅니다. 로그·트레이스를 쓴 만큼 낼 때 GB당 유럽 $0.10, 미국 $0.15, 싱가포르 $0.35입니다. 한국에서 가장 가까운 싱가포르가 유럽의 3.5배입니다. 첫 화면 표의 "유럽 데이터 위치" 가정이 가볍게 넘길 조건이 아닌 이유입니다.
로그에 고객 이름이나 연락처가 섞여 있으면 그 정보가 그대로 해외 서버에 쌓입니다. 저라면 서비스를 고르기 전에 로그에서 개인정보를 걷어 내는 일부터 챙기겠습니다.
작은 팀이 먼저 붙일 두 가지, 바깥 업타임 체크와 에러 추적
업타임 체크를 먼저 두는 이유는 감시하는 쪽이 감시받는 쪽과 같이 죽으면 안 되기 때문입니다. 서버 안에서 도는 감시 스크립트는 그 서버나 그 서버의 네트워크가 통째로 끊기면 알림을 보낼 길도 같이 잃습니다. 밖에 있는 서비스는 응답이 없다는 사실 자체를 알림으로 바꿉니다. 이 자리는 무료 한도로 채워집니다. UptimeRobot 무료 플랜은 모니터 50개를 5분 간격으로, Better Stack 무료 플랜은 10개를 3분 간격으로 확인합니다.
에러 추적은 사이트가 살아 있는데 기능 하나가 죽은 경우를 잡습니다. 기본 설정의 업타임 체크는 첫 화면이 200을 돌려주면 통과시킵니다. 결제 버튼 뒤에서 예외가 터져도 모릅니다.
로그·지표·트레이스를 한곳에 모으는 일은 그다음입니다. 서버가 한두 대일 때는 서버에 들어가 로그를 보는 것으로 버틸 만합니다. 그 규모에서는 모으는 비용보다 모은 데이터를 들여다볼 사람이 먼저 모자랍니다.
여기서부터는 직접 확인할 부분
위 가격은 모두 2026년 9월 11일 기준이고, 이 분야 가격표는 자주 바뀝니다. Sentry Team의 월 결제 가격은 가격 계산기에서만 보여서 적지 않았습니다. Datadog과 Grafana Cloud가 상태 페이지를 제공하는지는 확인하지 못했습니다. 첫 화면의 $687 대 $55,574는 Better Stack이 직접 낸 추정치이고, Datadog 쪽 숫자를 제3자가 검증한 것은 아닙니다.
함께 읽기
- 서버가 멈추기 전에 알 수 있을까? 소규모 서비스 모니터링 구성모든 장애를 미리 예측할 수는 없다. 대신 사용자가 먼저 알려 주기 전에 이상을 발견하고, 원인을 좁힐 자료를 남기고, 같은 장애가 반복되지 않게 만들 수는 있다. 소규모 서비스의 모니터링은 비싼 도구보다 적은 수의 정확한 신호에서 시작하는 편이 낫다.
- 사이트맵이 6일째 멈춘 이유: revalidateTag 가 닿지 않는 자리글을 두 편 발행하고 사이트맵을 열어 봤습니다. 둘 다 없었습니다.
- Cloudflare 존 이전과 R2: 커스텀 도메인이 따라오지 않는 이유이미지가 하나도 안 나온다는 말을 듣고 열어 봤습니다. 이미지 원본을 서빙하는 호스트 세 개가 DNS 에서 통째로 사라져 있었습니다. dig 가 아무것도 돌려주지 않았습니다.
- Vercel DB 통합: 비밀번호를 몰라도 되는 이유하루에 관리형 Postgres 두 개를 배포에 붙였습니다. 하나는 비밀번호를 재설정하고 연결 문자열을 손으로 옮겨 적었고, 다른 하나는 비밀번호를 끝내 보지 않았습니다. 후자가 더 빨랐고, 무엇보다 틀릴 자리가 없었습니다.
- docker builder prune 상한: 왜 남의 캐시까지 깎일까?한 서비스의 개발 배포를 다른 호스트로 옮기는 중이었습니다. 러너를 새로 붙이고, 환경변수 출처를 바꾸고, 이제 워크플로를 켜기만 하면 되는 참이었습니다. 그런데 배포 스크립트 마지막에 있는 한 줄에서 멈췄습니다.