[Splunk 고급 설정] Splunk에서 JSON 로그 필드 추출하기
본문 바로가기

Splunk/Splunk Project

[Splunk 고급 설정] Splunk에서 JSON 로그 필드 추출하기

728x90
반응형

Splunk에서 JSON 로그 필드 추출하기 (rex, extract, transforms.conf 완벽 이해)

안녕하세요.
오늘은 Splunk에서 JSON 형식의 로그를 다루는 방법, 그리고 rex, extract, transforms.conf, props.conf 설정을 통해 필드를 추출하는 과정을 정리해 보았습니다.


✅ 시스로그 헤더 + JSON 로그 예시

<134>1 2025-07-08T14:23:45Z myhost.example.com appname 1234 ID47 - {"timestamp": "2025-07-08T14:23:45Z", "user": "alice", "action": "login", "status": "success", "ip_address": "192.168.1.10", "device": {"type": "laptop", "os": "Windows 11"}, "location": {"country": "South Korea", "city": "Seoul"}}

✅ rex vs regex vs extract 차이

명령어 목적 주요 사용 예
rex 정규식으로 필드 추출 rex field=_raw "User=(?<username>\w+)"
regex 정규식으로 이벤트 필터링 regex _raw="status=success"
extract key=value 패턴을 자동 추출 extract pairdelim=" " kvdelim="="

✅ JSON 로그에 rex 사용 예

... | rex field=_raw "(?<json_body>\{.*\})"
    | spath input=json_body

이렇게 하면 중첩된 필드들도 쉽게 추출할 수 있습니다.


✅ transforms.conf + props.conf를 통한 필드 추출

초기 설정을 아래처럼 구성했지만 작동하지 않는 이유를 분석해봤습니다:

# ❌ 잘못된 props.conf 예시
[bd]
EXTRACT = bd_syslogkv_a,bd_syslogkv_b,bd_syslogkv_c

🛠 해결 방법: REPORT- 사용하기

# ✅ props.conf
[bd]
REPORT-syslogkv = bd_syslogkv_a, bd_syslogkv_b, bd_syslogkv_c
# ✅ transforms.conf
[bd_syslogkv_a]
REGEX = "([^"]+)":"([^"]+)"
FORMAT = $1::$2
 
[bd_syslogkv_b]
REGEX = "([^"]+)":"(.+)"
FORMAT = $1::$2
 
[bd_syslogkv_c]
REGEX = "([^"]+)":(\d+)
FORMAT = $1::$2

❗주의사항

  • EXTRACT는 transforms를 참조하지 않습니다.
  • 쉼표 ,가 정규식 끝에 붙으면 안 됩니다.
  • 이 방식은 중첩된 JSON은 파싱하지 못합니다.

✅ 중첩 JSON 파싱은 spath 또는 INDEXED_EXTRACTIONS

방법 1: spath 사용

... | rex field=_raw "(?<json>{.*})" | spath input=json

방법 2: props.conf에서 자동 추출

[bd]
INDEXED_EXTRACTIONS = json
KV_MODE = none

※ 단, 이 방법은 JSON만 들어오는 로그에만 적용됩니다.
시스로그 헤더가 있으면 JSON만 분리해서 처리해야 합니다.


✅ 마무리

이번 글에서는 다음 내용을 다뤘습니다:

  • Splunk의 필드 추출 명령어 (rex, regex, extract) 차이
  • 시스로그 헤더가 붙은 JSON 로그 처리 방법
  • props.conftransforms.conf 설정 방법과 주의사항
  • 중첩 JSON을 다루기 위한 spathINDEXED_EXTRACTIONS 설정

정규식 기반 추출도 유용하지만, JSON 로그의 경우 spath를 적극 활용하는 것이 가장 안정적이고 유지보수에 유리합니다.


더 궁금하신 내용이 있다면 댓글로 질문 주세요 :)
Splunk 설정과 로그 구조 튜닝은 실무에서 자주 막히는 부분이니, 이 포스팅이 도움이 되셨길 바랍니다!

728x90
반응형