📐 기초 개념

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.confmaxWarmDBCount, frozenTimePeriodInSecs로 각 단계 조건 설정

• Frozen 단계에서 coldToFrozenScript로 S3 등 외부 스토리지에 아카이브 가능

./splunk show cluster-status로 버킷 상태 확인

자동 생성 메타데이터 필드

필드명타입설명
_timeepoch이벤트 발생 시각 (Unix timestamp)
_rawstring원본 이벤트 텍스트 전체
hoststring이벤트를 보낸 호스트명 또는 IP
sourcestring데이터 파일 경로 또는 입력 이름
sourcetypestring데이터 형식 분류 (파싱 규칙 결정)
indexstring저장된 인덱스 이름
linecountnumber이벤트의 줄 수
punctstring구두점 패턴 (유사 이벤트 그룹화)
_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 목록