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.conf
와transforms.conf
설정 방법과 주의사항- 중첩 JSON을 다루기 위한
spath
와INDEXED_EXTRACTIONS
설정
정규식 기반 추출도 유용하지만, JSON 로그의 경우 spath를 적극 활용하는 것이 가장 안정적이고 유지보수에 유리합니다.
더 궁금하신 내용이 있다면 댓글로 질문 주세요 :)
Splunk 설정과 로그 구조 튜닝은 실무에서 자주 막히는 부분이니, 이 포스팅이 도움이 되셨길 바랍니다!
728x90
반응형
'Splunk > Splunk Project' 카테고리의 다른 글
[Splunk 고급 설정] 여러 이벤트를 조건 별로 Index 분기하기 (props.conf & transforms.conf) (0) | 2025.06.30 |
---|---|
[ Splunk Project : 서버 구축 ] splunk에서 custom app 만들기 (0) | 2024.02.15 |
[ Splunk Project : 서버 구축 ] 장비 재부팅 시 splunk 자동 시작 설정 (0) | 2024.02.13 |
[ Splunk Project : 서버 구축 ] 우분투 리눅스에서 디렉토리 사용자 변경 (0) | 2024.02.13 |
[ Splunk Project ] Splunk로 주식 분석 | Phase 11. 주식 매매 시뮬레이션 (0) | 2023.06.29 |