Split View: OSS 모니터링 스택 2026 깊이 분석 — SigNoz·Coroot·OpenObserve·Sentry·Grafana·Uptrace로 Datadog을 갈아끼우는 법
OSS 모니터링 스택 2026 깊이 분석 — SigNoz·Coroot·OpenObserve·Sentry·Grafana·Uptrace로 Datadog을 갈아끼우는 법
프롤로그 — Datadog 청구서, 그리고 그 후
2025년 한 시리즈 B 스타트업의 분기 회의록 한 줄. "지난달 Datadog 청구서가 14만 달러였습니다." CTO가 노트북 화면을 돌리자 모두가 침묵했다. 매출의 7%였다. 인덱스된 로그가 절반, 커스텀 메트릭이 30%, APM 호스트가 나머지였다. 다음 분기 안에 90% 줄이는 게 OKR이 됐다.
이런 장면은 2024년부터 시리즈 B 이상 SaaS 회사에서 분기별로 반복되고 있다. 한쪽엔 Datadog·New Relic·Splunk의 SaaS 매트릭스가 있고, 다른 쪽엔 OpenTelemetry 표준화로 진입 장벽이 무너진 OSS 옵저버빌리티가 있다. 2026년의 답은 더 이상 "둘 중 하나 골라라"가 아니다. 모듈식 OSS 스택으로 핵심을 가져오고, 정말 가치가 큰 곳에만 SaaS를 남긴다.
이 글은 2026년 5월 기준 OSS 모니터링 풍경의 정직한 지도다.
- SigNoz — OpenTelemetry 네이티브, ClickHouse 저장, 트레이스·메트릭·로그·예외 통합. Datadog의 진짜 대안이라 부를 만한 첫 OSS.
- Coroot — eBPF 기반 무계측 APM. 코드 한 줄 안 고치고 서비스 토폴로지와 SLO 대시보드가 나온다.
- OpenObserve — Rust로 짠 차세대 로그·트레이스·메트릭. S3+Parquet 백엔드로 페타바이트 규모를 5%~30% 비용으로 돌린다.
- Sentry self-hosted — 에러 추적의 캐논. Sentry SaaS의 가격이 부담스러우면 여전히 첫 번째 답이다.
- Uptrace — 라이트웨이트 ClickHouse 기반 APM. 단일 노드에서 OpenTelemetry 시작하기 좋은 선택지.
- Grafana 스택 — Loki·Tempo·Mimir·Pyroscope·k6·Beyla. 여전히 가장 큰 OSS 옵저버빌리티 에코.
각 도구가 어디서 빛나는지, 저장소 백엔드가 왜 결정적인지, OpenTelemetry 표준화가 무엇을 영구히 바꿨는지, 그리고 셀프호스트의 진짜 비용까지 — 환상 없이 본다.
1장 · OpenTelemetry — 모든 것을 바꾼 표준
OSS 옵저버빌리티가 2026년에 진짜로 위협이 된 단 하나의 이유는 OpenTelemetry(OTel)다. 그전엔 모든 SaaS가 자체 에이전트를 강요했고, 코드는 그 에이전트에 갇혔다. 한 번 Datadog APM에 묶이면 빠져나오는 게 곧 코드 리팩토링이었다.
OTel가 바꾼 것:
- 계측이 벤더 중립이 됐다.
OTLP/gRPC로 메트릭·트레이스·로그를 한 포맷으로 내보내면, 받는 쪽은 SigNoz든 Datadog이든 Grafana든 상관없다. - 시맨틱 컨벤션이 표준화됐다.
http.request.method,db.system,messaging.destination.name같은 이름이 모든 도구에서 같은 의미다. - 자동 계측 라이브러리가 성숙했다. Python·Node·Java·Go·.NET·Ruby 모두 zero-code instrumentation이 가능하다.
- OpenTelemetry Collector가 사실상의 라우터·필터·집계기로 자리 잡았다. 보내는 곳을 바꿔도 앱은 안 바꾼다.
2024년 OTel는 CNCF Graduated 프로젝트가 됐다. 2025년 로그 시그널이 GA로 풀렸다. 2026년 현재 트레이스·메트릭·로그·예외 전부가 안정 단계다. 프로파일링은 OTel Profiles로 베타 단계에 진입했다.
핵심 한 줄: OTel만 잘 깔아두면 백엔드는 갈아끼울 수 있는 옵션이 됐다. 이게 모든 OSS 도구가 동시에 살아남는 이유다.
2장 · 2026년 OSS 옵저버빌리티 지형 한눈에
먼저 비교 매트릭스. 컬럼이 많으니 가로로 펼쳐서 봐야 한다.
| 도구 | 주 시그널 | 저장소 백엔드 | 강점 | 약점 | 라이선스 | 적합 규모 |
|---|---|---|---|---|---|---|
| SigNoz | 트레이스·메트릭·로그·예외 | ClickHouse | OTel 네이티브, 통합 UI | ClickHouse 운영 부담 | MIT + 일부 Enterprise | 중대형 |
| Coroot | 메트릭·트레이스(eBPF) | Prometheus·ClickHouse | 무계측, 자동 토폴로지 | 윈도우 미지원 | Apache 2.0 + Enterprise | 중형 K8s |
| OpenObserve | 로그·트레이스·메트릭 | S3+Parquet | 저장 비용 5~30% | UI 신생, 호환성 일부 부족 | AGPL-3.0 | 대형 로그 |
| Sentry self-hosted | 예외·세션·트레이스 | PostgreSQL·ClickHouse | 에러 UX 압도 | self-host 정책 변동 위험 | FSL/BSL | 전 규모 |
| Uptrace | 트레이스·메트릭·로그 | ClickHouse | 단일 노드 부팅 쉬움 | 커뮤니티 작음 | AGPL-3.0 | 소·중형 |
| Grafana 스택 | 분리형 5종 | 각자 다름 | 가장 큰 에코·LGTM | 도구 5개 통합 부담 | AGPL-3.0 | 전 규모 |
저장소 백엔드가 이 표의 진짜 축이다. ClickHouse는 압축률과 쿼리 속도, S3+Parquet는 저비용 장기 보관, Prometheus TSDB는 메트릭에 최적이다. 셋의 트레이드오프는 뒤에서 다시 본다.
3장 · SigNoz — Datadog의 진짜 대안
SigNoz는 2021년 OTel-native APM·로그·메트릭 통합 도구로 시작했다. 2026년 현재 4만 GitHub 스타, SOC 2 Type II 인증, 시리즈 A 후속 라운드까지 마쳤다. 셀프호스트는 무료(Community Edition)이고, SaaS는 GB/CPU·호스트별로 과금한다.
기술 스택:
- 계측 — OTel SDK 그대로. 별도 에이전트 없음.
- 수집 — OpenTelemetry Collector 풀스택. 또는 OTLP로 직접.
- 저장 — ClickHouse(필수). 트레이스·메트릭·로그가 한 DB.
- 쿼리 — SigNoz 자체 UI + PromQL + ClickHouse SQL.
- 알람 — Grafana식 규칙 또는 자체 UI.
왜 ClickHouse인가? OLAP 컬럼형 DB가 옵저버빌리티에 자연스럽게 맞는다. 트레이스 한 줄은 보통 3080개 속성이 있고, 거의 모든 쿼리가 "조건 + 집계"다. 컬럼형은 필요한 컬럼만 읽고, LZ4 압축률이 평균 812배라 저장 비용도 낮다. ClickHouse 자체가 분당 수억 행 인입을 처리한다.
핵심 차별점:
- 단일 UI에서 트레이스·메트릭·로그 점프 — 같은 trace_id가 세 시그널 모두에 박혀 있다. 한 클릭으로 이동.
- Exception 시그널 — Sentry처럼 예외만 따로 모아 그룹화·집계.
- PromQL + ClickHouse SQL — Grafana 사용자도 익숙하고, 깊은 분석이 필요하면 SQL.
- Tail-based sampling 내장 — 에러·느린 트레이스만 보존하는 게 표준 기능.
도커 컴포즈 한 방 부팅:
git clone -b main https://github.com/SigNoz/signoz.git
cd signoz/deploy
./install.sh
# 브라우저 http://localhost:3301
쿠버네티스는 Helm 차트로:
helm repo add signoz https://charts.signoz.io
helm install signoz signoz/signoz \
--namespace platform \
--create-namespace \
--set otelCollector.replicaCount=3 \
--set clickhouse.persistence.size=500Gi
규모 가이드:
- 트레이스 RPS 1만 미만 — 단일 ClickHouse 노드 가능. 16 vCPU / 64 GB / 1 TB NVMe.
- RPS 1만~10만 — ClickHouse 클러스터 3 노드, ZooKeeper 또는 ClickHouse Keeper.
- RPS 10만 이상 — 별도 SRE 팀 필요. 이 시점에선 Datadog 비용과 셀프호스트 인건비를 다시 비교해야 한다.
운영의 함정:
- ClickHouse 디스크 압박은 사일런트 킬러. TTL 정책을 정확히 설정(트레이스 7일, 메트릭 30일, 로그 14일이 기본).
- OTel Collector를 한 줄로 풀어두면 단일 장애점. DaemonSet + Gateway 패턴으로 분리.
- 카디널리티 폭발.
user_id,request_id를 라벨로 박지 마라. 속성(attribute)으로만.
4장 · Coroot — eBPF로 무계측 APM
Coroot는 한 줄도 안 고치고 APM을 시작하는 게 목표다. eBPF로 커널 레벨에서 TCP 연결을 후킹하고 HTTP/gRPC/DB 트래픽을 자동 분류한다. 코드에 SDK를 박을 시간이 없거나, 박을 권한이 없는 환경(레거시 자바·인하우스 PHP·노드)에 매력적이다.
핵심 아키텍처:
- coroot-node-agent — DaemonSet으로 모든 노드에 eBPF 프로브.
- coroot-cluster-agent — Kubernetes 메타데이터 수집.
- coroot — UI + 룰 엔진. Prometheus 메트릭 + ClickHouse 트레이스 + 자체 인벤토리.
eBPF가 잡아주는 것:
- 서비스 토폴로지 — 자동.
- SLO·SLI 추정 — 응답 시간·에러율 자동 계산.
- DB·메시지큐 호출 — Postgres·MySQL·Redis·Kafka 프로토콜 디코딩.
- 컨테이너별 CPU·메모리 사용량 — cgroup 기반.
- 노드 네트워크 손실·재전송 — TCP 통계.
eBPF가 잡지 못하는 것:
- 비즈니스 컨텍스트(주문 ID·결제 금액 같은 도메인 속성)
- 함수 단위 트레이스(코드 내부 호출 그래프)
- 윈도우(eBPF는 리눅스 커널 기능)
- TLS 종료 후 평문 HTTP — 이건 uprobe로 SSL 라이브러리 후킹해야 한다(Coroot가 부분적으로 지원)
2026년 Coroot 라이센싱은 두 갈래다. 코어는 Apache 2.0 OSS, AI 기반 RCA(Root Cause Analysis)와 SSO·RBAC는 Enterprise. 무료 셀프호스트로 80%는 충분히 커버된다.
쿠버네티스 설치:
helm repo add coroot https://coroot.github.io/helm-charts
helm install coroot coroot/coroot \
--namespace coroot \
--create-namespace \
--set clickhouse.shards=1 \
--set prometheus.retention=15d
UI를 한 번 띄우면 "내 클러스터에 이런 게 돌고 있었구나"가 처음으로 보인다. 그게 Coroot의 진짜 가치다. 계측 노력 제로 + 즉시 가시성.
함께 쓰면 좋은 패턴: Coroot로 자동 베이스라인, 그 위에 SigNoz·Sentry로 비즈니스 컨텍스트가 필요한 곳만 수동 계측.
5장 · OpenObserve — Rust와 S3로 페타바이트를 5% 비용에
OpenObserve는 2023년 등장한 Rust 기반 로그·트레이스·메트릭 플랫폼이다. 2026년 GitHub 스타 1.6만, 시리즈 A 펀딩 완료, AGPL-3.0 라이선스. 가장 큰 무기는 저장소 비용이다.
벤치 한 줄. 같은 양의 로그를 Elasticsearch 대비 140배 적은 저장, Splunk 대비 140배 저렴한 운영 비용. 어떻게? S3 + Parquet + 인덱스리스 풀텍스트 검색.
전통적 로그 시스템(Elasticsearch·Splunk)은:
- 모든 필드를 인덱싱한다 — 디스크가 폭발한다.
- 인덱스를 메모리에 캐싱한다 — 비싼 인스턴스 필요.
- 로컬 디스크에 저장한다 — 장기 보관용 콜드 스토리지 따로 필요.
OpenObserve의 다른 길:
- 인덱스리스. 로그를 Parquet로 압축해 바로 S3에 쌓는다.
- 인메모리 블룸 필터로 1차 필터링, 컬럼형 스캔으로 실제 매칭.
- S3는 그 자체로 무한 + 저렴 + 내구성 11 9s. 콜드/핫 분리가 자동.
트레이드오프:
- 인덱스가 없으니 "모든 로그에서 X 찾기"는 Elasticsearch보다 느릴 수 있다.
- 다만 시간 범위 + 한두 개 필드 필터는 빠르다(실제 90%의 쿼리 패턴).
- 풀텍스트는 블룸 필터 + Parquet 통계로 충분한 경우가 대다수.
2026년 시점 OpenObserve는 다음을 지원한다:
- 로그 — JSON·Syslog·Fluentbit·OTLP.
- 트레이스 — OTLP/gRPC + Jaeger 호환.
- 메트릭 — Prometheus Remote Write + OTLP.
- 알람·대시보드 — 자체 UI.
- 멀티테넌시·SSO·RBAC — Enterprise.
도커 한 줄 부팅:
docker run -d \
-v $PWD/data:/data \
-p 5080:5080 \
-e ZO_ROOT_USER_EMAIL=admin@example.com \
-e ZO_ROOT_USER_PASSWORD=admin \
public.ecr.aws/zinclabs/openobserve:latest
쿠버네티스 + S3 모드:
# values.yaml (Helm)
config:
ZO_S3_BUCKET_NAME: my-o2-logs
ZO_S3_REGION_NAME: ap-northeast-2
ZO_DATA_STREAM_TYPE: s3
ingester:
replicaCount: 3
querier:
replicaCount: 2
규모가 페타바이트 단위로 가고 로그가 핵심인 회사(보안·핀테크·게임)에 OpenObserve는 진짜 답이 된다. Loki + S3와 비교하면 OpenObserve의 단일 도구 통합이 운영 비용을 더 낮춰준다.
6장 · Sentry self-hosted — 여전히 에러의 캐논, 하지만 정책이 흔들렸다
Sentry는 2008년부터 에러 추적의 사실상 표준이었다. 셀프호스트도 오래 무료였다. 그런데 2024년부터 흐름이 바뀌었다.
- 2023년 FSL(Functional Source License)로 라이선스 전환. 2년 후 Apache 2.0으로 자동 전환되는 BSL 변형.
- 2024년 일부 신규 기능(Replay·Crons)은 SaaS 우선, OSS 지연 출시.
- 2025년 self-host 패키지가 더 무거워짐(50 GB 디스크, 다중 컴포넌트).
- Sentry 측 공식 입장: "self-host는 계속 유지하지만, SaaS 우선 개발 페이스가 빨라진다."
2026년 5월 현재 self-host는 살아 있다. 매월 릴리스가 있고, 핵심 기능(Error·Performance·Profiling·Crons)은 다 들어온다. 다만 운영 부담은 결코 가볍지 않다.
self-host 구성 요소:
- Snuba — ClickHouse 위의 쿼리 레이어
- Relay — 이벤트 수집·필터 게이트웨이
- Kafka — 이벤트 큐
- Redis — 캐시·레이트리밋
- PostgreSQL — 메타데이터
- Sentry 본체 — 장고 + 셀러리
- Symbolicator — 소스맵·심볼 해석
전부 합치면 8~12개 컨테이너, 50 GB 디스크가 출발선. 단일 노드에서 트래픽 일 100만 이벤트까지는 무리 없다. 그 이상이면 Kafka·ClickHouse 분리가 시작된다.
설치:
git clone https://github.com/getsentry/self-hosted.git
cd self-hosted
./install.sh
# .env에서 SENTRY_EVENT_RETENTION_DAYS=90 같은 옵션 조정
세 가지 시나리오:
- 순수 에러 추적 — Sentry self-host가 압도. 그룹화·트렌드·릴리스 비교가 동급 OSS에 없다.
- 에러 + 풀스택 옵저버빌리티 — SigNoz가 통합으로 우위. Sentry의 Exception은 SigNoz에서도 1급 시그널.
- 에러 + 비용 부담 큼 — Sentry SaaS의 Developer/Team 가격이 부담이면 self-host가 답.
자주 묻는 질문: "Sentry는 OTel 호환되나?" 부분적으로 YES. OTel 트레이스를 Sentry로 보낼 수 있지만(Performance 시그널) 에러는 여전히 Sentry SDK가 표준이다. 2026년 들어 OTel Exception 시그널과 Sentry 그룹화가 통합되는 작업이 진행 중.
7장 · Uptrace — 라이트웨이트 ClickHouse APM
Uptrace는 SigNoz와 같은 ClickHouse 기반 OTel APM이지만 단일 노드에서 가볍게 시작하는 게 미덕이다. AGPL-3.0, 셀프호스트는 무료, SaaS는 별도 과금.
SigNoz와의 차이:
- 단일 바이너리 부팅 가능 — 도커도 한 컨테이너.
- ClickHouse 한 노드면 충분 — 트래픽 일 5천만 스팬까지 무리 없다.
- UI가 더 간결 — 트레이스 위주, 메트릭은 보조.
언제 Uptrace를 고르는가:
- 팀이 작고, 셀프호스트 인력 1명도 빠듯할 때.
- ClickHouse는 처음이지만 한 번 깔아보고 싶을 때.
- 트레이스 한 가지만 깊게 보고 싶을 때.
언제 SigNoz로 가는가:
- 트레이스 + 메트릭 + 로그 + 예외 모두 통합으로 보고 싶을 때.
- 팀이 커지고 ClickHouse 클러스터 운영을 받아들일 수 있을 때.
도커 한 줄:
docker run -d --name uptrace \
-p 14317:14317 -p 14318:14318 \
-v $PWD/uptrace.yml:/etc/uptrace/uptrace.yml \
uptrace/uptrace:latest
Uptrace는 OTel Collector를 통합 형태로 안에 박아두기도 한다(Standalone 모드). OTel 처음 시작하는 팀에 "가장 진입 장벽 낮은 옵션"이다.
8장 · Grafana 스택 — 가장 큰 에코, 가장 모듈러한 선택
Grafana Labs가 2017년부터 쌓아 올린 스택은 2026년 OSS 옵저버빌리티의 가장 큰 단일 진영이다. 도구별로 보면:
- Prometheus — 메트릭의 사실상 표준. 2024년 OTLP 수신 지원으로 OTel 호환 완성.
- Mimir — Prometheus의 수평 확장 백엔드. 멀티테넌트, S3 저장.
- Loki — 로그. "라벨만 인덱스" 철학으로 저장 비용 낮음.
- Tempo — 분산 트레이스. S3·GCS·MinIO 저장 가능.
- Pyroscope — 컨티뉴어스 프로파일링. eBPF + 언어별 SDK.
- Grafana — 대시보드의 표준. LGTM 데이터를 한 화면에.
- Alloy — OpenTelemetry Collector 배포판. 2024년 Grafana Agent 후속.
- Beyla — eBPF 자동 계측. Coroot보다 가벼움, 단일 서비스 단위.
- k6 — 부하 테스트. 옵저버빌리티 시그널과 자연스럽게 묶임.
장점:
- 각 도구가 한 가지를 깊게. 옵저버빌리티 인력이 있는 팀에 유리.
- 연합 운영 가능. Mimir 한 곳, Tempo 한 곳, Loki 한 곳으로 분산 책임.
- Grafana 대시보드 에코시스템이 거대. 어떤 도구든 그리는 게 익숙하다.
단점:
- 5개 도구를 운영한다. 단일 통합 UI는 Grafana지만 백엔드는 따로.
- 시작이 무겁다. 도커 컴포즈 하나로는 못 끝난다.
- 알람·룰이 도구마다 다름. 표준화 필요.
언제 Grafana 스택인가:
- 이미 Prometheus를 쓰고 있고 자연스럽게 확장하는 경우.
- 옵저버빌리티 전담 SRE 팀이 있는 경우.
- 멀티테넌트·연합 클러스터 요구가 있는 경우.
언제 SigNoz·Uptrace가 더 나은가:
- 통합 UI 한 곳에서 모두 보고 싶을 때.
- 운영 인력이 부족할 때.
- 처음 시작하는 팀.
Grafana Cloud의 무료 티어가 꽤 넉넉해서 "셀프호스트 vs Grafana Cloud" 비교도 항상 같이 본다. 2026년 무료 티어는 메트릭 10k 시리즈, 로그 50 GB, 트레이스 50 GB, 14일 보존이다.
9장 · 저장소 백엔드 — 진짜 결정
도구 선택의 8할은 백엔드 선택이다. 세 가지 패턴이 시장을 양분한다.
9.1 ClickHouse — 컬럼형 OLAP
쓰는 곳: SigNoz, Uptrace, Sentry(Snuba), Coroot(트레이스).
장점:
- 압축률 8~12배. 디스크 비용 낮음.
- 분당 수억 행 인입.
- 컬럼형 스캔으로 좁은 쿼리 빠름.
- SQL 그대로 쓸 수 있다.
단점:
- 운영 난이도 높음. 백업·레플리카·키퍼 모두 학습 필요.
- 머지·뮤테이션 비용. 잦은 업데이트엔 부적합.
- 카디널리티 폭발에 취약. 라벨 설계 잘못하면 디스크 폭주.
9.2 S3 + Parquet — 인덱스리스 객체스토리지
쓰는 곳: OpenObserve, Tempo, Loki(블록), Mimir(블록).
장점:
- 사실상 무한 + 11 9s 내구성 + 저렴.
- 콜드 스토리지 자동. 핫/콜드 티어링 옵션.
- 분리된 컴퓨트 — 쿼리 노드만 늘리면 됨.
단점:
- 로컬 디스크보다 느림. 캐시 레이어 필수.
- 쿼리 패턴이 시간 + 좁은 필드에 한정될 때 효율적.
- 풀텍스트 무거운 분석에 약함.
9.3 Prometheus TSDB — 시계열 전용
쓰는 곳: Prometheus, Mimir, Cortex, VictoriaMetrics.
장점:
- 메트릭에 압도적 최적화. 적은 디스크, 빠른 쿼리.
- PromQL 생태계가 표준.
- 운영 단순(단일 노드 기준).
단점:
- 트레이스·로그엔 안 맞음. 시계열만.
- 수평 확장은 Mimir·Thanos 같은 별도 도구 필요.
조합 가이드:
- 메트릭이 80% — Prometheus + Mimir.
- 로그가 80% — OpenObserve 또는 Loki + S3.
- 트레이스가 80% — SigNoz·Uptrace + ClickHouse, 또는 Tempo + S3.
- 셋 다 균형 — SigNoz 단일.
10장 · Datadog → SigNoz 마이그레이션 실제 사례
2025년 분기말 5만 호스트 규모 SaaS의 마이그레이션 노트를 재구성했다.
10.1 시작 상태
- 월 청구서 14만 달러(APM 8만, 로그 4만, 메트릭 2만).
- 자바·고·노드 백엔드 80개 서비스.
- Datadog Agent로 자동 계측.
- 카디널리티 폭주로 커스텀 메트릭이 매월 12% 증가.
10.2 단계별 이전
Phase 1 — 계측 추상화(4주)
OTel SDK로 전환. 코드 변경 최소화하기 위해 자동 계측 라이브러리 우선. 일부 비즈니스 속성만 수동 추가.
Phase 2 — 듀얼 백엔드(6주)
OTel Collector에서 Datadog·SigNoz 양쪽으로 동시 전송. SigNoz는 dev·staging 먼저, 1주씩 프로덕션 일부 서비스에 적용. 데이터 일치 검증.
Phase 3 — SLO 검증(4주)
핵심 알람·대시보드 SigNoz에서 재구성. 응답 시간·에러율 SLO 정의가 Datadog Monitor와 동일하게 동작하는지 확인. on-call이 SigNoz UI에 익숙해질 시간.
Phase 4 — Datadog 제거(2주)
서비스별로 단계 차단. 마지막은 Datadog Agent 제거.
10.3 결과
- 월 청구서 14만 → SigNoz 인프라 1.2만 + SRE 부담 증가 → 순 비용 90% 절감.
- 트레이스 30일 보존 → 15일 단축(필요성 재검토 결과 충분).
- 카디널리티 정책으로 커스텀 메트릭 50% 감소.
- on-call MTTR 변화 없음.
10.4 후회 항목
- 듀얼 운영 기간이 너무 짧았다. 8주 권장.
- 로그 마이그레이션을 같이 했어야 했다. 따로 했더니 컨텍스트가 끊겼다.
- ClickHouse 디스크 모니터링을 처음에 빼먹어 디스크 풀로 한 번 사고.
11장 · 셀프호스트의 진짜 비용
"OSS면 공짜"는 거짓말이다. 정직한 비용 모델은 이렇다.
- 인프라: ClickHouse·S3·Prometheus 노드, 백업, 멀티 AZ. 월 1만
5만 달러 규모(50500 호스트 기준). - 인건비: SRE 0.3
1명 풀타임. 연 5만15만 달러. - 다운타임 리스크: 옵저버빌리티 자체가 죽으면 트러블슈팅이 막힌다. HA 설계 필수.
- 러닝 커브: ClickHouse·Kafka·S3 라이프사이클, OTel Collector 튜닝, 보존 정책. 첫 6개월은 시행착오.
언제 셀프호스트가 이기는가:
- 청구서가 월 3만 달러 이상이고
- SRE가 있고
- 데이터를 외부에 안 보내야 할 컴플라이언스 이유가 있고
- 카디널리티·보존 정책을 본인이 통제하고 싶을 때.
언제 SaaS가 이기는가:
- 팀이 작고 SRE가 없음.
- 청구서가 월 5천 달러 이하.
- 보안·컴플라이언스가 SaaS를 막지 않음.
- 빨리 시작이 가치가 더 큼.
중간 옵션: Grafana Cloud 또는 SigNoz Cloud. OSS의 백엔드를 매니지드로 받는다. 청구서가 Datadog의 30~50% 수준이면서 운영 부담이 없다.
12장 · 안티패턴 모음
오랜 시간 누적된 함정들.
- "옵저버빌리티 = 로그" — 로그만 쌓으면 트레이스·메트릭이 없어 인과 추적이 불가능하다.
- 카디널리티 폭발 —
user_id,request_id를 라벨에 박는 순간 끝. 속성으로만. - 샘플링 없이 풀스로틀 — 트래픽 1만 RPS인데 트레이스 100% 보존? 디스크가 폭발한다. Tail-based sampling으로 에러·느린 것만.
- 알람 폭격 — 한 사람에 시간당 30개 알람은 곧 무시된다. SLO 기반 알람으로 의미 있는 것만.
- 단일 OTel Collector — 단일 장애점. DaemonSet + Gateway 두 단계.
- TTL 미설정 — 디스크가 가득 차고서야 깨닫는다. 셀프호스트 첫 주에 무조건.
- 대시보드 200개 — 아무도 안 본다. 5개의 골든 대시보드 + 자동 알람이 더 효과적.
- 개발자 계측 의무화 없이 도구만 배포 — 도구는 깔렸는데 데이터가 없다. 계측 게이트 + CI 검증 필수.
- OTel 시맨틱 컨벤션 무시 — 본인이 만든 키 이름은 일주일 후 본인도 못 찾는다. 표준 컨벤션 따라가라.
- 백엔드 1개에 몰빵 — ClickHouse만 뜨면 SigNoz·Sentry·Uptrace 다 죽는다. 분리.
13장 · 도입 의사결정 플로차트
질문을 순서대로 답해라.
- 현재 월 옵저버빌리티 비용은? 1만 달러 미만이면 → SaaS 유지.
- SRE 또는 옵저버빌리티 담당이 있는가? 없다면 → SaaS 또는 매니지드(Grafana Cloud·SigNoz Cloud).
- 컴플라이언스로 외부 전송 금지인가? 그렇다면 → 셀프호스트 결정.
- 주된 시그널이 무엇인가?
- 트레이스+메트릭+로그 통합 → SigNoz.
- 로그가 지배적 → OpenObserve 또는 Loki.
- eBPF로 무계측 시작 → Coroot.
- 에러 추적이 핵심 → Sentry self-host.
- 가벼운 단일 노드 → Uptrace.
- 모듈러 운영 → Grafana 스택.
- 향후 3년 규모 예측은? 페타바이트 로그 예상 → OpenObserve·Loki. 그 이하 → SigNoz.
14장 · 2026년 이후의 흐름
OSS 옵저버빌리티는 어디로 가고 있는가.
- OTel Profiles GA — 2025년 베타, 2026년 후반 GA 예상. 컨티뉴어스 프로파일링이 4번째 시그널로 자리.
- AI 기반 RCA — Coroot·SigNoz·Grafana 모두 자체 RCA 기능을 OSS와 Enterprise로 나눠 출시 중. LLM이 인시던트 첫 가설을 던지는 게 표준이 될 전망.
- eBPF 보편화 — Beyla·Coroot 외에 더 많은 도구가 eBPF 기반 자동 계측을 지원할 것.
- 저장소 분리·연합 표준화 — Iceberg·Parquet 기반 공통 포맷이 도구별 락인을 풀어주는 흐름.
- 카디널리티 가격제의 종말 — Datadog·New Relic도 라벨 카디널리티 기반 가격제에서 후퇴 압박. OSS의 자유로움이 가격 모델 자체를 압박.
3년 뒤 예측 한 줄: OTel + S3-Parquet + ClickHouse + eBPF 조합이 OSS 옵저버빌리티의 사실상 기본 스택이 된다. Datadog·New Relic은 여전히 존재하지만 시장 점유율은 30~40%대로 떨어질 가능성이 크다.
에필로그 — 셀프호스트는 권리이고, 책임이다
오래된 진리: 옵저버빌리티는 보험이 아니라 제품이다. 그 제품의 백엔드를 SaaS에 맡기는 것도 정당한 선택이고, 직접 운영하는 것도 정당한 선택이다. 다만 둘 다 비용이 든다. SaaS는 청구서로, 셀프호스트는 시간과 SRE 인건비로.
2026년이 흥미로운 이유는 선택지가 진짜로 늘었기 때문이다. OpenTelemetry가 벤더 록인을 깼고, ClickHouse·S3-Parquet가 저장 비용 곡선을 끌어내렸고, eBPF가 계측 노력을 0으로 수렴시켰다. 결과적으로 한 도구가 모든 걸 다 잘하는 시대는 끝났고, 여러 도구를 모듈식으로 조합하는 시대가 됐다.
14.1 도입 체크리스트
- 현재 옵저버빌리티 비용·시그널 종류·보존 정책 정리.
- OpenTelemetry SDK로 계측 추상화 시작(벤더 종속 제거).
- OTel Collector를 DaemonSet + Gateway 두 단계로 설계.
- 백엔드 한 곳을 결정 — SigNoz·Coroot·OpenObserve·Sentry·Uptrace·Grafana 중.
- ClickHouse·S3·Prometheus 중 어느 저장소를 핵심으로 할지 명확화.
- 듀얼 백엔드 운영 8주 이상.
- SLO·알람·대시보드를 새 도구에서 재구성.
- TTL·디스크·카디널리티 모니터링 설정.
- on-call이 새 UI에 익숙해질 시간 확보.
- 한 분기 후 정직한 ROI 재평가.
14.2 안티패턴 요약
- 옵저버빌리티 = 로그라고 착각하기.
- 카디널리티 폭발 무시하기.
- 샘플링 없이 100% 보존.
- 알람 폭격으로 신뢰 잃기.
- 단일 OTel Collector로 운영.
- TTL 안 걸기.
- 대시보드 200개.
- 계측 의무화 없이 도구만 배포.
- 시맨틱 컨벤션 무시.
- 백엔드 한 곳에 몰빵.
14.3 다음 글 예고
다음 글에선 OTel Collector 깊이 분석을 다룬다. DaemonSet vs Gateway, 처리기·필터·라우터 구성, Tail-based sampling 실제 구현, 카프카 백킹·재시도·DLQ까지. OSS 옵저버빌리티의 진짜 운영 시작점이 거기에 있다.
참고 / References
- OpenTelemetry: https://opentelemetry.io/
- OTel Collector: https://opentelemetry.io/docs/collector/
- SigNoz: https://signoz.io/ · https://github.com/SigNoz/signoz
- Coroot: https://coroot.com/ · https://github.com/coroot/coroot
- OpenObserve: https://openobserve.ai/ · https://github.com/openobserve/openobserve
- Sentry self-hosted: https://develop.sentry.dev/self-hosted/ · https://github.com/getsentry/self-hosted
- Uptrace: https://uptrace.dev/ · https://github.com/uptrace/uptrace
- Grafana Loki: https://grafana.com/oss/loki/
- Grafana Tempo: https://grafana.com/oss/tempo/
- Grafana Mimir: https://grafana.com/oss/mimir/
- Grafana Pyroscope: https://grafana.com/oss/pyroscope/
- Grafana Beyla: https://grafana.com/oss/beyla-ebpf/
- Grafana Alloy: https://grafana.com/oss/alloy-opentelemetry-collector/
- ClickHouse: https://clickhouse.com/
- Prometheus: https://prometheus.io/
- CNCF Observability TAG: https://github.com/cncf/tag-observability
OSS Monitoring Stack 2026 Deep Dive — Replacing Datadog with SigNoz, Coroot, OpenObserve, Sentry, Grafana, Uptrace
Prologue — The Datadog bill and what comes after
A line from a Series B startup's 2025 quarterly review: "Last month's Datadog bill was $140k." The CTO turned the laptop around and the room went silent. That was 7% of revenue. Indexed logs were half of it, custom metrics 30%, APM hosts the rest. Cutting that by 90% over the next quarter became an OKR.
This scene plays out quarterly in mid-to-late stage SaaS shops. On one side: the Datadog/New Relic/Splunk SaaS matrix. On the other: an OSS observability scene that OpenTelemetry standardization has finally made viable. The 2026 answer is no longer "pick one of the two." It's a modular OSS stack that absorbs the core signals while keeping SaaS only where the marginal value is high.
This is an honest map of the 2026 OSS monitoring landscape.
- SigNoz — OpenTelemetry-native, ClickHouse-backed, unified traces/metrics/logs/exceptions. The first OSS that deserves the label "real Datadog alternative."
- Coroot — eBPF-based, zero-instrumentation APM. Get service topology and SLO dashboards without changing a single line of code.
- OpenObserve — Next-gen logs/traces/metrics in Rust. S3 + Parquet backend pushes storage cost to 5%–30% of legacy stacks at petabyte scale.
- Sentry self-hosted — The canon of error tracking. If Sentry SaaS pricing is a problem, this is still the first answer.
- Uptrace — Lightweight ClickHouse-based APM. The easiest single-node OpenTelemetry on-ramp.
- Grafana stack — Loki/Tempo/Mimir/Pyroscope/k6/Beyla/Alloy. Still the largest single OSS observability ecosystem.
Where each shines, why the storage backend decides everything, what OpenTelemetry permanently changed, and the true cost of self-hosting — with no illusions.
1. OpenTelemetry — The standard that changed everything
The single reason OSS observability got dangerous in 2026 is OpenTelemetry (OTel). Before it, every SaaS forced its own agent and your code lived inside that agent. Once you were tied to Datadog APM, escaping meant refactoring.
What OTel changed:
- Instrumentation is vendor-neutral. Emit metrics, traces, and logs via OTLP/gRPC in one format and the receiver — SigNoz, Datadog, Grafana — does not matter.
- Semantic conventions are standardized. Names like
http.request.method,db.system,messaging.destination.namemean the same thing in every tool. - Auto-instrumentation libraries matured. Python, Node, Java, Go, .NET, Ruby — all support zero-code instrumentation.
- OpenTelemetry Collector became the de facto router/filter/aggregator. Changing the receiver leaves the application code alone.
In 2024 OTel became a CNCF Graduated project. In 2025 the logs signal went GA. As of 2026 traces, metrics, logs, and exceptions are all stable. Profiling entered beta as OTel Profiles.
One-line takeaway: install OTel once and the backend becomes an interchangeable option. This is why every OSS tool is surviving simultaneously.
2. The 2026 OSS observability landscape at a glance
A comparison matrix first. Wide table — view sideways.
| Tool | Primary signals | Storage backend | Strengths | Weaknesses | License | Sweet spot |
|---|---|---|---|---|---|---|
| SigNoz | Traces, metrics, logs, exceptions | ClickHouse | OTel-native, unified UI | ClickHouse ops burden | MIT + some Enterprise | Mid/large |
| Coroot | Metrics, traces (eBPF) | Prometheus, ClickHouse | Zero instrumentation, auto topology | No Windows | Apache 2.0 + Enterprise | Mid-size K8s |
| OpenObserve | Logs, traces, metrics | S3 + Parquet | 5%–30% storage cost | Newer UI, partial compatibility | AGPL-3.0 | Large log volume |
| Sentry self-hosted | Errors, sessions, traces | PostgreSQL, ClickHouse | Best error UX | Self-host policy risk | FSL/BSL | All sizes |
| Uptrace | Traces, metrics, logs | ClickHouse | Easy single-node bootstrap | Small community | AGPL-3.0 | Small/mid |
| Grafana stack | 5 separate tools | Mixed | Largest eco, LGTM | Five-tool integration burden | AGPL-3.0 | All sizes |
The real axis of this table is the storage backend. ClickHouse for compression and query speed, S3 + Parquet for cheap long retention, Prometheus TSDB optimized for metrics. The trade-off triangle returns below.
3. SigNoz — A genuine Datadog alternative
SigNoz started in 2021 as an OTel-native APM/logs/metrics tool. By 2026 it has 40k GitHub stars, SOC 2 Type II, and a follow-on Series A. Self-hosted is free (Community Edition); SaaS is priced per GB/CPU/host.
Tech stack:
- Instrumentation — OTel SDK directly. No agent.
- Ingestion — OpenTelemetry Collector full stack, or direct OTLP.
- Storage — ClickHouse (required). Traces, metrics, and logs in one DB.
- Query — SigNoz UI + PromQL + ClickHouse SQL.
- Alerts — Grafana-style rules or native UI.
Why ClickHouse? OLAP columnar DBs are a natural fit for observability. A single trace row has 30–80 attributes, and almost every query is "filter plus aggregate." Columnar engines read only required columns, LZ4 compression yields 8–12 times on average, and ClickHouse itself ingests hundreds of millions of rows per minute.
Key differentiators:
- Hop across traces, metrics, and logs in one UI — the same trace_id is embedded in all three signals. One click moves you.
- Exception signal — like Sentry, errors are grouped and aggregated independently.
- PromQL plus ClickHouse SQL — familiar to Grafana users, with SQL for deep analytics.
- Built-in tail-based sampling — preserving only errors and slow traces is a first-class feature.
Single-node docker-compose:
git clone -b main https://github.com/SigNoz/signoz.git
cd signoz/deploy
./install.sh
# Browser: http://localhost:3301
Kubernetes via Helm:
helm repo add signoz https://charts.signoz.io
helm install signoz signoz/signoz \
--namespace platform \
--create-namespace \
--set otelCollector.replicaCount=3 \
--set clickhouse.persistence.size=500Gi
Sizing guide:
- Below 10k traces/second — single ClickHouse node works. 16 vCPU / 64 GB / 1 TB NVMe.
- 10k to 100k traces/second — a 3-node ClickHouse cluster with ZooKeeper or ClickHouse Keeper.
- Above 100k — you need a dedicated SRE team. At that point re-run the Datadog vs self-host ROI with the new labor cost.
Operational traps:
- ClickHouse disk pressure is a silent killer. Set TTL policies precisely (default: 7 days traces, 30 days metrics, 14 days logs).
- A single OTel Collector becomes a single point of failure. Use the DaemonSet + Gateway pattern.
- Cardinality explosion. Do not pin
user_idorrequest_idas labels; keep them as attributes.
4. Coroot — Zero-instrumentation APM via eBPF
Coroot's goal is to start APM without changing a line of code. eBPF hooks TCP connections at the kernel level and classifies HTTP/gRPC/DB traffic automatically. It is attractive in environments where you have no time or no permission to bolt SDKs into every service — legacy Java, in-house PHP, Node.
Core architecture:
- coroot-node-agent — a DaemonSet eBPF probe on every node.
- coroot-cluster-agent — collects Kubernetes metadata.
- coroot — UI plus rule engine. Prometheus metrics, ClickHouse traces, inventory all in one.
What eBPF catches:
- Service topology — automatic.
- SLO/SLI estimation — response time and error rate computed automatically.
- DB and message queue calls — Postgres, MySQL, Redis, Kafka protocol decoding.
- Per-container CPU and memory — via cgroup.
- Node network losses and retransmits — TCP statistics.
What eBPF cannot catch:
- Business context such as domain attributes (order id, payment amount).
- Function-level traces (the call graph inside the code).
- Windows (eBPF is a Linux kernel feature).
- Plaintext HTTP after TLS termination — this requires uprobe hooking into SSL libraries (Coroot partially supports it).
In 2026 Coroot's licensing is two-track. Core is Apache 2.0 OSS; AI-based RCA, SSO, and RBAC are Enterprise. The free self-host covers 80 percent of needs.
Kubernetes install:
helm repo add coroot https://coroot.github.io/helm-charts
helm install coroot coroot/coroot \
--namespace coroot \
--create-namespace \
--set clickhouse.shards=1 \
--set prometheus.retention=15d
Open the UI once and you suddenly see what is actually running in the cluster — that revelation is Coroot's real value. Zero instrumentation effort, instant visibility.
A great pattern: Coroot for the automatic baseline, then SigNoz or Sentry on top with manual instrumentation only where business context demands it.
5. OpenObserve — Rust plus S3 for petabytes at 5 percent cost
OpenObserve appeared in 2023 as a Rust-based logs/traces/metrics platform. By 2026 it has 16k GitHub stars, a Series A round, and an AGPL-3.0 license. Its biggest weapon is storage cost.
One benchmark line: for the same log volume, OpenObserve uses 140 times less storage than Elasticsearch and operates at 1/140 the cost of Splunk. How? S3 plus Parquet plus indexless full-text search.
Traditional log systems (Elasticsearch, Splunk):
- Index every field — disks explode.
- Cache indexes in memory — expensive instances required.
- Store on local disk — long-term cold storage requires a separate path.
OpenObserve's alternative:
- Indexless. Logs are compressed into Parquet and dropped straight into S3.
- In-memory bloom filters for the first pass, columnar scans for the actual match.
- S3 itself is effectively infinite + cheap + 11 nines of durability. Cold/hot tiering is automatic.
Trade-offs:
- Without indexes, "find X across every log ever" can be slower than Elasticsearch.
- But time range plus one or two fields queries are fast (the 90% real-world pattern).
- Bloom filter plus Parquet statistics handle most full-text needs.
In 2026 OpenObserve supports:
- Logs — JSON, Syslog, Fluentbit, OTLP.
- Traces — OTLP/gRPC plus Jaeger compatibility.
- Metrics — Prometheus Remote Write plus OTLP.
- Alerts and dashboards — native UI.
- Multi-tenancy, SSO, RBAC — Enterprise tier.
Single-line docker boot:
docker run -d \
-v $PWD/data:/data \
-p 5080:5080 \
-e ZO_ROOT_USER_EMAIL=admin@example.com \
-e ZO_ROOT_USER_PASSWORD=admin \
public.ecr.aws/zinclabs/openobserve:latest
Kubernetes plus S3 mode:
# values.yaml (Helm)
config:
ZO_S3_BUCKET_NAME: my-o2-logs
ZO_S3_REGION_NAME: us-east-1
ZO_DATA_STREAM_TYPE: s3
ingester:
replicaCount: 3
querier:
replicaCount: 2
If you operate at petabyte scale and logs are the primary signal — security teams, fintechs, game studios — OpenObserve is the real answer. Compared with Loki plus S3, OpenObserve's single-tool integration lowers operational burden further.
6. Sentry self-hosted — Still the canon of errors, but policies wobbled
Sentry has been the de facto error-tracking standard since 2008. Self-host was free for a long time. Then 2024 happened.
- In 2023 the license switched to FSL (Functional Source License) — a BSL variant that auto-converts to Apache 2.0 after two years.
- In 2024 some new features (Replay, Crons) were SaaS-first and OSS-delayed.
- In 2025 the self-host package grew heavier (50 GB disk, many components).
- Official line from Sentry: "self-host stays alive, but SaaS-first development pace will accelerate."
As of May 2026 self-host is still alive. Monthly releases ship, and core features — Error, Performance, Profiling, Crons — are all included. But the operational burden is not light.
Self-host components:
- Snuba — query layer on top of ClickHouse
- Relay — event collection and filter gateway
- Kafka — event queue
- Redis — cache and rate limiting
- PostgreSQL — metadata
- Sentry core — Django plus Celery
- Symbolicator — source map and symbol resolution
That is 8 to 12 containers, 50 GB of disk as a starting line. A single node handles up to one million events per day without strain. Above that, Kafka and ClickHouse start to split out.
Install:
git clone https://github.com/getsentry/self-hosted.git
cd self-hosted
./install.sh
# Tune options like SENTRY_EVENT_RETENTION_DAYS=90 in .env
Three scenarios:
- Pure error tracking — Sentry self-host dominates. No OSS peer matches its grouping, trend, and release comparison UX.
- Errors plus full-stack observability — SigNoz wins for integration. Sentry-like exceptions are first-class signals in SigNoz too.
- Errors plus heavy cost pressure — when Sentry SaaS Developer or Team pricing is the pain point, self-host is the answer.
A common question: "Is Sentry OTel-compatible?" Partially yes. You can send OTel traces to Sentry (Performance signal), but errors still use the Sentry SDK as the canonical path. As of 2026, work to align OTel exception signals with Sentry grouping is underway.
7. Uptrace — Lightweight ClickHouse APM
Uptrace is a ClickHouse-backed OTel APM like SigNoz, but its virtue is starting light on a single node. AGPL-3.0, free self-host, paid SaaS.
Differences from SigNoz:
- Single-binary boot possible — a single container in Docker.
- One ClickHouse node is enough — handles up to 50M spans per day without strain.
- A simpler UI — trace-focused, metrics secondary.
When you pick Uptrace:
- Small team and even one self-host operator is a stretch.
- ClickHouse is new but you want to try it once.
- You want to look at traces deeply, one signal at a time.
When you go to SigNoz instead:
- You need traces + metrics + logs + exceptions in one place.
- The team has grown enough to accept ClickHouse cluster operations.
One-line docker:
docker run -d --name uptrace \
-p 14317:14317 -p 14318:14318 \
-v $PWD/uptrace.yml:/etc/uptrace/uptrace.yml \
uptrace/uptrace:latest
Uptrace also bundles the OTel Collector in-process (Standalone mode). For teams new to OTel, this is the lowest barrier to entry.
8. Grafana stack — Biggest eco, most modular choice
The stack Grafana Labs has built since 2017 is the largest single OSS observability faction in 2026. By tool:
- Prometheus — the de facto metrics standard. 2024 added OTLP receive for OTel compatibility.
- Mimir — Prometheus's horizontal-scale backend. Multi-tenant, S3-backed.
- Loki — logs. "Index labels only" philosophy keeps storage cost down.
- Tempo — distributed tracing. S3, GCS, MinIO backends.
- Pyroscope — continuous profiling. eBPF plus language-specific SDKs.
- Grafana — the dashboard standard. LGTM data on one canvas.
- Alloy — OpenTelemetry Collector distribution. Successor to Grafana Agent in 2024.
- Beyla — eBPF auto-instrumentation. Lighter than Coroot, single-service granularity.
- k6 — load testing. Couples naturally with observability signals.
Strengths:
- Each tool deep in one signal. A great fit for teams with dedicated observability staff.
- Federated operation possible. Mimir here, Tempo there, Loki somewhere else.
- The Grafana dashboard ecosystem is enormous; visualizing anything is familiar.
Weaknesses:
- Operating five tools. Grafana is the unified UI but the backends are separate.
- Heavy on day one. A single docker-compose will not finish the job.
- Alerts and rules differ per tool. Standardization required.
When to pick the Grafana stack:
- Already running Prometheus and the natural extension wins.
- A dedicated SRE/observability team.
- Multi-tenant or federated cluster requirements.
When SigNoz or Uptrace win instead:
- You want everything in one unified UI.
- Operational staff is thin.
- This is a brand new start.
Grafana Cloud's free tier is generous enough that "self-host vs Grafana Cloud" must always be on the comparison sheet. The 2026 free tier is 10k metric series, 50 GB logs, 50 GB traces, 14-day retention.
9. Storage backends — The real decision
Eighty percent of tool choice is backend choice. Three patterns split the market.
9.1 ClickHouse — Columnar OLAP
Used by: SigNoz, Uptrace, Sentry (via Snuba), Coroot (for traces).
Strengths:
- Compression 8–12 times. Low disk cost.
- Hundreds of millions of rows per minute ingest.
- Columnar scans make narrow queries fast.
- Native SQL.
Weaknesses:
- Operational difficulty is high. Backups, replicas, Keeper, all require learning.
- Merge and mutation cost. A bad fit for frequent updates.
- Cardinality explosion risk. Bad label design will blow up disk.
9.2 S3 + Parquet — Indexless object storage
Used by: OpenObserve, Tempo, Loki (blocks), Mimir (blocks).
Strengths:
- Effectively infinite, 11 nines durable, cheap.
- Cold storage automatic. Hot/cold tiering options.
- Decoupled compute. Scale query nodes independently.
Weaknesses:
- Slower than local disk. A caching layer is mandatory.
- Efficient when queries are bounded by time plus narrow fields.
- Heavy full-text analytics are weak spots.
9.3 Prometheus TSDB — Time-series only
Used by: Prometheus, Mimir, Cortex, VictoriaMetrics.
Strengths:
- Overwhelmingly optimized for metrics. Small disk, fast queries.
- PromQL ecosystem is the standard.
- Operationally simple in single-node form.
Weaknesses:
- Wrong fit for traces and logs. Time series only.
- Horizontal scale needs separate tools like Mimir or Thanos.
Combination guide:
- Metrics dominate 80 percent — Prometheus plus Mimir.
- Logs dominate 80 percent — OpenObserve, or Loki plus S3.
- Traces dominate 80 percent — SigNoz/Uptrace plus ClickHouse, or Tempo plus S3.
- All three balanced — SigNoz alone.
10. Datadog to SigNoz — A real migration
A reconstructed migration journal from a 50k-host SaaS in late 2025.
10.1 Starting state
- Monthly bill of 80k, logs 20k).
- 80 backend services in Java, Go, and Node.
- Auto-instrumented by the Datadog Agent.
- Custom metrics growing 12 percent per month due to cardinality drift.
10.2 Phased migration
Phase 1 — Abstract instrumentation (4 weeks)
Move to the OTel SDK. Prefer auto-instrumentation to minimize code changes. Manually add only business attributes.
Phase 2 — Dual backend (6 weeks)
The OTel Collector ships to Datadog and SigNoz simultaneously. SigNoz first in dev and staging, then a weekly rollout across production services. Validate data parity.
Phase 3 — SLO verification (4 weeks)
Rebuild critical alerts and dashboards in SigNoz. Confirm response time and error rate SLOs behave the same as Datadog Monitor. Give on-call time to get familiar with the SigNoz UI.
Phase 4 — Remove Datadog (2 weeks)
Cut over service by service. The last step is removing the Datadog Agent.
10.3 Results
- Bill went from 12k plus increased SRE labor — net 90 percent cost cut.
- Trace retention 30 days to 15 days (re-evaluation showed it was enough).
- Custom metrics dropped 50 percent via cardinality policy.
- On-call MTTR unchanged.
10.4 Regrets
- The dual-run window was too short. Eight weeks recommended.
- Logs migration should have moved in parallel. Doing it separately broke context.
- Forgot ClickHouse disk monitoring early on and had one disk-full incident.
11. The honest cost of self-hosting
"OSS means free" is a lie. The honest cost model is this.
- Infrastructure: ClickHouse, S3, Prometheus nodes, backups, multi-AZ. 50k per month range (for 50–500 hosts).
- People: 0.3–1 SRE FTE. 150k per year.
- Downtime risk: if observability itself dies, troubleshooting is blind. HA design is mandatory.
- Learning curve: ClickHouse, Kafka, S3 lifecycle, OTel Collector tuning, retention policy. The first six months are trial and error.
When self-host wins:
- Bill is above $30k per month, and
- You have SRE capacity, and
- Compliance requires data not to leave the perimeter, and
- You want to control cardinality and retention policy yourself.
When SaaS wins:
- Small team, no SRE.
- Bill is below $5k per month.
- Security and compliance do not block SaaS.
- Speed of getting started is the higher-value lever.
Middle option: Grafana Cloud or SigNoz Cloud. OSS backends as a managed service. Bills hover at 30–50 percent of Datadog with the operational burden removed.
12. Anti-patterns to avoid
Long-accumulated traps.
- "Observability equals logs." Logs alone, without traces and metrics, make causal tracing impossible.
- Cardinality explosion — the moment
user_idandrequest_idbecome labels, you are finished. Attributes only. - Full throttle without sampling — 10k RPS with 100 percent trace retention? Disk explodes. Tail-based sampling keeps only errors and slow paths.
- Alert flood — 30 alerts per hour per person become noise. Use SLO-based alerts for things that actually matter.
- Single OTel Collector — single point of failure. DaemonSet plus Gateway, two tiers.
- No TTL — you only notice when disk is full. Set this in the first week of self-host.
- 200 dashboards — nobody looks at them. Five golden dashboards plus automatic alerts beats it.
- Deploying the tool without making instrumentation mandatory — the tool is in place but there is no data. Add instrumentation gates and CI validation.
- Ignoring OTel semantic conventions — a week later even you cannot find your own keys. Follow the conventions.
- All-in on one backend — when ClickHouse goes down, SigNoz, Sentry, and Uptrace all die. Separate.
13. Decision flowchart
Answer in order.
- Current monthly observability cost? Under $10k — keep SaaS.
- Do you have an SRE or observability lead? No — SaaS or managed (Grafana Cloud, SigNoz Cloud).
- Does compliance ban external transfer? Yes — self-host decision is made.
- Which signal dominates?
- Unified traces+metrics+logs — SigNoz.
- Logs dominate — OpenObserve or Loki.
- Start zero-instrumentation via eBPF — Coroot.
- Errors are the focus — Sentry self-host.
- Lightweight single node — Uptrace.
- Modular operation — Grafana stack.
- Three-year scale forecast? Petabyte logs likely — OpenObserve or Loki. Smaller — SigNoz.
14. Where the wind blows after 2026
Where OSS observability is heading.
- OTel Profiles GA — beta in 2025, GA expected late 2026. Continuous profiling becomes the fourth signal.
- AI-driven RCA — Coroot, SigNoz, and Grafana are all shipping RCA features split across OSS and Enterprise tiers. LLM-generated first-cut hypotheses for incidents becomes standard.
- eBPF goes mainstream — beyond Beyla and Coroot, more tools will adopt eBPF auto-instrumentation.
- Decoupled storage standardization — Iceberg and Parquet-based common formats are loosening tool lock-in.
- End of cardinality pricing — Datadog and New Relic face pressure to retreat from label cardinality pricing. The freedom of OSS is pressuring the entire pricing model.
Three-year forecast: OTel + S3-Parquet + ClickHouse + eBPF will be the de facto baseline OSS observability stack. Datadog and New Relic will still exist, but market share is likely to dip into the 30–40 percent range.
Epilogue — Self-host is a right and a responsibility
An old truth: observability is not insurance, it is product. Outsourcing that product's backend to SaaS is a legitimate choice; operating it yourself is a legitimate choice. Both cost something. SaaS in the form of a bill; self-host in the form of time and SRE salary.
The interesting thing about 2026 is that the option set genuinely expanded. OpenTelemetry broke vendor lock-in, ClickHouse and S3-Parquet bent the storage cost curve, and eBPF drove instrumentation effort toward zero. The result is that the era of "one tool does it all" is over and the era of modular tool composition has begun.
14.1 Adoption checklist
- Inventory current observability cost, signal types, retention policy.
- Begin instrumentation abstraction via OpenTelemetry SDK (remove vendor lock-in).
- Design OTel Collector as a two-tier DaemonSet plus Gateway.
- Pick a backend — SigNoz, Coroot, OpenObserve, Sentry, Uptrace, or Grafana.
- Decide on the core storage layer — ClickHouse, S3, or Prometheus.
- Dual-run backends for at least 8 weeks.
- Rebuild SLOs, alerts, and dashboards in the new tool.
- Configure TTL, disk, and cardinality monitoring.
- Give on-call time to adapt to the new UI.
- Re-evaluate honest ROI one quarter in.
14.2 Anti-pattern summary
- Mistaking observability for logs.
- Ignoring cardinality explosion.
- 100 percent retention with no sampling.
- Alert flood that destroys trust.
- Operating a single OTel Collector.
- Forgetting TTL.
- 200 dashboards.
- Deploying tools without mandating instrumentation.
- Ignoring semantic conventions.
- All-in on one backend.
14.3 Next post preview
The next post is a deep dive on the OpenTelemetry Collector. DaemonSet vs Gateway, processors, filters, routers, real tail-based sampling implementation, Kafka backing, retries, DLQ. The real operational starting point for OSS observability lives there.
References
- OpenTelemetry: https://opentelemetry.io/
- OTel Collector: https://opentelemetry.io/docs/collector/
- SigNoz: https://signoz.io/ · https://github.com/SigNoz/signoz
- Coroot: https://coroot.com/ · https://github.com/coroot/coroot
- OpenObserve: https://openobserve.ai/ · https://github.com/openobserve/openobserve
- Sentry self-hosted: https://develop.sentry.dev/self-hosted/ · https://github.com/getsentry/self-hosted
- Uptrace: https://uptrace.dev/ · https://github.com/uptrace/uptrace
- Grafana Loki: https://grafana.com/oss/loki/
- Grafana Tempo: https://grafana.com/oss/tempo/
- Grafana Mimir: https://grafana.com/oss/mimir/
- Grafana Pyroscope: https://grafana.com/oss/pyroscope/
- Grafana Beyla: https://grafana.com/oss/beyla-ebpf/
- Grafana Alloy: https://grafana.com/oss/alloy-opentelemetry-collector/
- ClickHouse: https://clickhouse.com/
- Prometheus: https://prometheus.io/
- CNCF Observability TAG: https://github.com/cncf/tag-observability