[Splunk] Fishbucket
본문 바로가기

Splunk

[Splunk] Fishbucket

728x90
반응형

Splunk Fishbucket 개요

Fishbucket은 Splunk가 이미 읽은 파일의 상태를 기억하는 메커니즘입니다.
주로 문제가 되는 경우는 정적 파일(예: 설정 파일)을 이미 인덱싱했지만, 해당 데이터가 인덱스에서 만료되거나 삭제된 경우입니다.
이럴 때, Splunk가 해당 파일을 처음 읽는 것처럼 다시 인덱싱하게 만드는 것이 목적입니다.


기본 동작 원리

  • Fishbucket은 **파일의 서명(지문)**과 해당 파일 상태를 저장하는 단순 데이터베이스(btree)입니다.
  • $SPLUNK_DB 디렉터리 내에 존재하지만 일반 인덱스와 구조가 다릅니다.
  • 저장되는 주요 정보:
    • 파일 지문(CRC): 파일 처음 256바이트(기본값)의 MD5 해시
    • sptr(Seek Pointer): 마지막으로 읽은 위치(바이트 단위)
    • scrc: sptr 위치에서의 CRC
    • mdtm: 파일 수정 시간(Unix Epoch)
  • 처리 방식:
    1. 파일의 초기 CRC가 fishbucket에 없으면 처음부터 읽기 시작.
    2. 기존 기록이 있으면 sptr 위치까지 건너뜀.
    3. EOF 전에 도달하면 파일 회전(rotated)으로 판단하고 처음부터 재읽기.

주요 문제 상황 및 해결 방법

1. Splunk가 파일을 이미 인덱싱했다고 판단하는 경우

  • 원인: 이전에 인덱싱된 파일이지만 데이터가 삭제됨.
  • 해결:
    • 일회성 재인덱싱:
    •  
      splunk add oneshot -index <index> -source <file> -sourcetype <type>
    • fishbucket 기록 초기화:이후 포워더 재시작 필요.
    •  
      splunk cmd btprobe -d $SPLUNK_DB/fishbucket/splunk_private_db --file <file> --reset

2. 잘못된 파일 동일성 판단

  • 원인: 파일 시작 부분이 회전 후에도 동일(예: WebSphere JVM 시작 로그), 초기 CRC가 동일하게 계산됨.
  • 증상:
  •  
    ERROR TailingProcessor - File will not be read, seekptr checksum did not match...
  • 해결:
    • inputs.conf에서 initCrcLength 값 조정 (최대 1MB).
    • 시간 변동 데이터가 시작되는 지점까지의 길이로 설정.
    • 설정 후 포워더 재시작.

3. ignoreOlderThan으로 인해 파일이 무시된 경우

  • 원리: 마지막 수정 시간(modtime)이 설정된 기간보다 오래된 파일은 아예 읽지 않음.
  • 확인 방법:
    • 결과에서 type이 "ignored (modtime fell behind...)”이면 무시 상태.
  •  
    $SPLUNK_HOME/bin/splunk _internal call /admin/inputstatus/TailingProcessor:FileStatus
  • 주의: 무시된 파일을 다시 읽으려면 Splunk 재시작 필요.

Fishbucket

특정 파일 즉시 인덱싱 splunk add oneshot -index <index> -source <file> -sourcetype <type>
fishbucket에서 파일 상태 초기화 splunk cmd btprobe -d $SPLUNK_DB/fishbucket/splunk_private_db --file <file> --reset
TailingProcessor 상태 확인 splunk _internal call /admin/inputstatus/TailingProcessor:FileStatus

요약

  • Fishbucket은 Splunk가 파일 읽기 상태를 추적하는 내부 DB.
  • 주된 문제는 “이미 읽었다고 잘못 판단”하거나 “ignoreOlderThan 설정으로 무시”되는 상황.
  • 해결은 oneshot 인덱싱, btprobe로 상태 초기화, 또는 initCrcLength 조정.
  • 무시된 파일은 재시작 전까지 다시 읽히지 않음.
728x90
반응형