[ Splunk ] Indexing Internals
본문 바로가기

Splunk

[ Splunk ] Indexing Internals

728x90
반응형

1. 세그멘테이션 (Segmentation)

  • 목적: 이벤트를 잘게 쪼개 검색 가능한 단위(세그먼트)로 만드는 것.
  • 종류
    • Major Segmenter → 문장을 큰 단어 단위로 나눔
      • 예: 공백, 괄호, 특수문자 기준
      • "Michael likes pizza" → Michael, likes, pizza
    • Minor Segmenter → Major로 나눈 단어를 더 세부적으로 쪼갬
      • 예: 이메일 주소 → abc@gmail.com → abc, gmail, com
      • 즉, 검색 시 더 다양한 키워드 매칭이 가능해짐

👉 인덱싱 시점 & 검색 시점 모두 세그멘테이션이 적용된다.

  • 인덱싱 시점: 디스크에 저장되는 형태 결정 (속도·용량·자동완성에 영향)
  • 검색 시점: 쿼리 실행 속도와 결과의 정밀도에 영향

2. TSIDX (Time Series Index)

Splunk가 검색을 빠르게 할 수 있는 핵심 비밀무기!

  • 구조:
    1. Lexicon (사전) → 데이터에 나오는 모든 고유 단어 목록
    2. Values Array (값 배열) → 각 이벤트의 메타데이터 & 위치 정보

예시

Raw Events:

 
0 Michael likes bacon
1 Dwight likes beets
2 Jim likes Jell-O
3 Michael likes pizza
  • bacon → 이벤트 0
  • Dwight → 이벤트 1
  • Jim → 이벤트 2
  • likes → 이벤트 0,1,2,3
  • pizza → 이벤트 3

Values Array:

  • 이벤트 0 → 파일 위치 offset=42
  • 이벤트 1 → offset=78
  • 이벤트 2 → offset=120
  • 이벤트 3 → offset=146

3. 검색 과정

쿼리: likes AND pizza

  1. Lexicon 검색
    • likes → 이벤트 (0,1,2,3)
    • pizza → 이벤트 (3)
    • 교집합 = 이벤트 (3)
  2. Values Array 확인
    • 이벤트 3의 파일 offset=146
  3. Rawdata 접근
    • 디스크에서 offset=146부터 읽어 결과 반환

👉 Splunk는 데이터를 전부 뒤지는 게 아니라, 사전+위치 인덱스를 활용해 원하는 부분만 빠르게 찾아낸다.


4. 포인트

  • 세그멘터 설정 (segmenters.conf)은 검색 효율성에 직접적 영향
    • 로그 특성(예: syslog, JSON 등)에 맞게 튜닝 가능
  • TSIDX 파일이 손상되면 검색 속도 및 정확도에 문제 발생
    • 필요 시 splunk rebuild로 재생성 가능
  • 데이터량이 클수록 TSIDX의 역할이 중요
    • 수억 건의 이벤트도 빠르게 검색할 수 있는 이유

📌 요약

  • Segmentation → 데이터를 검색 단위로 쪼개는 과정 (검색 효율 UP)
  • TSIDX → 단어 사전 + 이벤트 위치 인덱스로 구성
  • 검색 원리 → “필요한 이벤트가 어디 있는지”를 바로 찾아가기 때문에 빠름
728x90
반응형