📐 기초 개념
Splunk 아키텍처, 데이터 파이프라인, 버킷 생명주기, 핵심 포트
아키텍처 개요
Universal Forwarder경량, 전달만
Heavy Forwarder파싱/필터/라우팅
→Indexer저장 & 인덱싱
→Search Head검색 & 시각화
Universal Forwarder vs Heavy Forwarder
| 항목 | Universal Forwarder (UF) | Heavy Forwarder (HF) |
|---|---|---|
| 설치 크기 | 경량 (~30MB) | 전체 Splunk 설치 |
| 데이터 파싱 | ❌ 불가 | ✅ 가능 |
| 이벤트 필터링 | ❌ 불가 | ✅ 가능 (nullQueue) |
| 라우팅 | 제한적 | ✅ 세밀한 라우팅 |
| 인덱싱 | ❌ 불가 | ✅ 로컬 인덱싱 가능 |
| CPU/메모리 | 매우 낮음 | 상대적으로 높음 |
| 주요 용도 | 에이전트로 원격 서버에 설치 | 중간 집결 / 전처리 서버 |
데이터 파이프라인
Collect데이터 수집
→Parse이벤트 파싱
(타임스탬프, 멀티라인)
→Index역색인 생성
& 버킷 저장
→SearchSPL 실행
& tsidx 조회
→Visualize차트/대시보드
→Alert조건부 알림
& 자동화
Ingest Actions (신기능): Parse 단계 이전, 스트리밍 중 데이터를 필터/마스킹/라우팅. 민감 정보를 인덱싱 전에 제거할 수 있어 transforms.conf nullQueue를 점차 대체하는 추세.
버킷(Bucket) 생명주기
Hot
현재 데이터가 쓰여지는 활성 버킷. 읽기/쓰기 모두 가능.
maxHotBuckets 설정으로 개수 제어
Warm
쓰기가 완료된 읽기 전용 버킷. 아직 검색 가능.
maxWarmDBCount 초과 시 cold로 이동
Cold
오래된 데이터 버킷. 검색 가능하지만 느릴 수 있음.
coldPath에 저장, 검색은 가능
Frozen
보존 기간 초과 버킷. 기본적으로 삭제됨.
coldToFrozenScript로 아카이브 가능
• indexes.conf의 maxWarmDBCount, frozenTimePeriodInSecs로 각 단계 조건 설정
• Frozen 단계에서 coldToFrozenScript로 S3 등 외부 스토리지에 아카이브 가능
• ./splunk show cluster-status로 버킷 상태 확인
자동 생성 메타데이터 필드
| 필드명 | 타입 | 설명 |
|---|---|---|
| _time | epoch | 이벤트 발생 시각 (Unix timestamp) |
| _raw | string | 원본 이벤트 텍스트 전체 |
| host | string | 이벤트를 보낸 호스트명 또는 IP |
| source | string | 데이터 파일 경로 또는 입력 이름 |
| sourcetype | string | 데이터 형식 분류 (파싱 규칙 결정) |
| index | string | 저장된 인덱스 이름 |
| linecount | number | 이벤트의 줄 수 |
| punct | string | 구두점 패턴 (유사 이벤트 그룹화) |
_user 필드는 존재하지 않습니다 — Splunk 퀴즈의 자주 나오는 오답 선택지입니다.
핵심 포트
8000
Splunk Web UI
8089
Management REST API
9997
인덱서 데이터 수신
8191
KV Store (MongoDB)
8080
인덱서 클러스터 복제
인덱싱 과정 예시
원본 로그:
192.168.1.1 - - [10/Oct/2024:13:55:36 +0000] "GET /api/v1/users HTTP/1.1" 200 1234
↓ 파싱 (props.conf)
_time = 2024-10-10 13:55:36 UTC
host = web-server-01
source = /var/log/nginx/access.log
sourcetype = nginx_access
clientip = 192.168.1.1
method = GET
uri = /api/v1/users
status = 200
bytes = 1234
↓ 역색인 생성 (tsidx)
"GET" → 이벤트 ID 목록
"200" → 이벤트 ID 목록
"/api" → 이벤트 ID 목록
"web-server-01" → 이벤트 ID 목록