본문 바로가기

BigData/Splunk

[Splunk] 필드에 대해 알아보기!! - 필드추출, 정규식, 구분자 방법 설

반응형

필드 추출이 필요한 이유

필드는 이벤트를 자동, 수동, 정규식으로 parsing 한 값으로, 즉 key=value 로 흔히 부른다

 

기본적으로 필드  추출은 데이터를 해석하기 위한 가장 기초적인 단계이고

인덱싱 과정에서 자동적으로 추출되거나 사용자가 임의로 추출 할 수도 있으며

난해하거나 형태가 불규칙한 원시 데이터에 의미를 부여하여 데이터 해석을 하는데 도움을 준다.

 

정규식을 이용한 필드 추출

정규식(Regex Expressions)은 특정한 문자열을 쉽고 간단한 방법으로 찾아내기 위한 표현식으로, 특정 패턴에 일치하는 문자열의 집합을 필드 추출하기 위해 사용되는 방식이다.

각 문자는 정규식에 필요한 옵션이며 이 문자들을 조합하여 필드를 추출할 수 있다.

 

문자

설명

\

이스케이프 문자

^

문자열의 시작

$

문자열의 끝

.

개행문자를 제외한 모든 문자

|

OR연산(선택)

[ ]

문자 클래스 정의

( )

그룹(서브패턴)

{ }

수량자

?

0 또는 1번만

*

0 또는 1번이상

+

1번이상

{n}

표현식을 n번 매치

\d

모든 숫자

\w

모든 문자

\s

공백 문자

그림으로 예시를 보자

다음 Raw 이벤트들을 보면 규칙이 일정한 패턴을 띄고 있는 데이터를 볼 수 있다

물론 규칙이 일정하다 하여 구분자를 통해 필드 추출을 할 수 있지만 만일 쉼표(,)가 나오다 갑자기 파이프(|) 문자가 나오면 필드 추출에 오류가 발생할 수 있다

따라서 보이는 것과 같이 데이터의 포맷이 일정하다면 정규식을 추천한다

 

구분자를 이용한 필드 추출

구분자(Delimiter) 는 우리가 자주 쓰는 , . ? | / " ' 등 과 같은 기호를 말하면 사전적으로는 일반 텍스트나 데이터 스트림에서 독립적인 영역를 지키는 경계 문자를 말합니다

 

Conf 파일?

여기서 대뜸 conf 파일이 나오게 되는데, 이유는 단 하나.

그림으로 보여준 것 처럼 현재 필드 추출은 웹UI에서 진행되었다. 하지면 이 설정 모두 Conf 파일에 기록이 된다.

따라서 conf 파일이 필드 추출에 기여를 하는 부분인데 이 conf파일도 종류가 여러개 이고 적용되는데 조건들이 있다.

 

Conf 파일 우선순위와 종류

우선순위

위치

비고

1

$SPLUNK_HOME/etc/system/default

스플렁크에 미리 구성된 기본 설정 파일

스플렁크 업데이트 시 변경사항 초기화

2

$SPLUNK_HOME/etc/system/local

호스트별 전역 설정 위치

3

$SPLUNK_HOME/etc/apps/$APP_NAME/default

Splunkbase 또는 다른 방법을 통해 공유될 앱에 대해 설정을 적용하기 적당한 위치

4

$SPLUNK_HOME/etc/apps/$APP_NAME/local

Web 인터페이스를 통해 생성한 거의 대부분의 설정 정보 위치

No

파일

설명

1

indexes.conf

인덱스 설정 및 구성 관리

2

inputs.conf

데이터 입력을 설정

3

props.conf

시간대 오프셋, source type 규칙 및 패턴 충돌 우선 순위 등의 인덱싱 구성

4

transforms.conf

데이터 입력에서 수행할 regex 변형을 구성 / props.conf와 함께 사용

5

outputs.conf

전달 동작을 설정

> Conf 파일 수정 후 시스템 적용 방법

- $SPLUNK_HOME$/bin/splunk restart

 

> 재부팅 없이 시스템 적용 방법 (indexes.conf 나 일부 conf 파일은 적용 안됨)

- $SPLUNK_HOME$/bin/splunk reload monitor

 

> 웹 화면에서 적용 방법

- https://localhost:8000/debug/refresh

ex) https://123.121.255.200:8000

반응형