사용자수 추정
HTTP 트래픽 분석을 통해 실시간 활성 사용자수를 추정하는 화면입니다.

개요
사용자수 추정은 Kubernetes 클러스터에 유입되는 HTTP 트래픽을 분석하여 현재 서비스를 이용하고 있는 사용자수를 실시간으로 추정하는 기능입니다. 별도의 애널리틱스 도구나 클라이언트 SDK 삽입 없이도 서비스의 동시 접속자 규모, 일간/주간/월간 활성 사용자(DAU/WAU/MAU) 추이, 지역별 분포를 한눈에 파악할 수 있습니다.
좌측 사이드바에서 사용자수 추정 메뉴를 클릭하면 진입할 수 있습니다. Kubernetes 대시보드의 상태 카드에서도 현재 활성 사용자수를 확인할 수 있으며, 카드를 클릭하면 이 화면으로 이동합니다.
서버 사이드 추정 방식의 특징
주요 APM/모니터링 플랫폼은 사용자수를 파악하기 위해 **클라이언트 사이드 SDK(RUM)**를 애플리케이션에 삽입해야 합니다. 반면 Observability의 사용자수 추정 기능은 서버 사이드 eBPF 기반으로 동작하여 다음과 같은 차이가 있습니다.
| 항목 | RUM 방식 (타 제품) | eBPF 서버 사이드 (Observability의 사용자수 추정기능) |
|---|---|---|
| 추가 계측 | 모든 앱에 SDK 삽입 필수 | 불필요 (노드에 에이전트만 설치) |
| 적용 범위 | 브라우저 웹앱만 가능 | 모든 HTTP 서비스 (API, 모바일 백엔드 포함) |
| 광고 차단기 영향 | 25~60% 데이터 누락 가능 | 영향 없음 |
| GDPR 쿠키 동의 | 동의 거부 시 수집 불가 | 서버 측 처리로 영향 없음 |
| 정확도 | 매우 높음 (SDK 동작 시) | 높음 (세션 기반) ~ 보통 (IP+UA 기반) |
| 비용 | 사용자 수에 비례하여 증가 | 추가 비용 없음 |
추정 원리
사용자수 추정은 HyperLogLog(HLL) 확률적 자료구조를 사용합니다(14비트 정밀도). 각 노드 에이전트가 eBPF를 통해 HTTP 요청의 세션 ID 또는 IP+User-Agent 조합을 추출하고, 이를 HLL 스케치로 압축하여 서버로 전송합니다. 서버는 모든 노드의 HLL 스케치를 병합하여 고유 사용자수를 추정합니다.
이 방식은 정확한 개수가 아닌 추정값이지만, 메모리 효율이 높아 대규모 트래픽 환경에서도 안정적으로 동작합니다. WebSocket을 통해 초기 로딩 1초 이내, 이후 10초마다 변경된 데이터만 자동 갱신됩니다.
두 가지 추정 방식
사용자수 추정은 두 가지 방식을 지원하며, 시스템이 자동으로 최적의 방식을 선택합니다.
| 방식 | 식별 기준 | 정확도 | 적용 조건 |
|---|---|---|---|
| 세션 ID 기반 | 세션 쿠키 (JSESSIONID, PHPSESSID 등) | 높음 | 세션 커버리지 80% 이상 |
| IP+UA 기반 | 클라이언트 IP + User-Agent 조합 | 보통 | 세션 커버리지 80% 미만 (폴백) |
- 세션 커버리지란 전체 요청 중 세션 쿠키가 포함된 요청의 비율입니다.
- 세션 커버리지가 80% 이상이면 세션 ID 기반 추정이 자동 선택됩니다.
- 세션 쿠키가 없는 환경(API 서버 등)에서는 IP+UA 기반 추정이 사용됩니다.
참고: IP+UA 기반 추정은 같은 네트워크(예: 회사 NAT)에서 접속하는 서로 다른 사용자가 하나로 합산되거나, 같은 사용자가 브라우저를 바꾸면 다른 사용자로 카운트될 수 있습니다.
중요: X-Forwarded-For 헤더 설정 필요 사용자수 추정과 지역 분포 기능은 클라이언 트의 실제 IP를 기반으로 동작합니다. Ingress Controller, 로드밸런서, CDN 등 리버스 프록시를 사용하는 환경에서는 반드시
X-Forwarded-For헤더가 전달되도록 설정해야 합니다. 이 헤더가 없으면 모든 요청이 프록시의 내부 IP로 인식되어 사용자수가 심하게 과소 추정되고, 지역 분포도 정확하지 않게 됩니다. 설정 방법은 사용 중인 Ingress Controller의 문서를 참고하세요(예: Nginx Ingress의use-forwarded-headers,compute-full-forwarded-for옵션).
화면 구성
사용자수 추정 화면은 다음과 같은 영역으로 구성됩니다.
| 영역 | 설명 |
|---|---|
| 상단 헤더 | 실시간 연결 상태, 추정 방식 토글, 네임스페이스 필터, 활동 리포트 버튼 |
| 활성 사용자 카드 (ROW 1 좌측) | 5분/30분 기준 활성 사용자수와 추정 방식 표시 |
| 스파크라인 차트 (ROW 1 중앙/우측) | 최근 1시간의 5분/30분 활성 사용자 추이 |
| DAU/WAU/MAU 카드 (ROW 2) | 일간/주간/월간 활성 사용자수와 추이 바 차트 |
| 지역 분포 (ROW 3) | 세계 지도, 한국 지도, 국가별/지역별 분포 바 차트 |