2021년 9월 10일 금요일

Splunk의 진입장벽

엘라스틱 익숙해지는 데 6개월쯤 걸렸었다. 스플렁크는 한 달? 의외로 진입이 쉬웠다. (데이터 분석툴 관점에서) 엘라스틱도 쉽다고 생각했는데 더 쉬워서 놀람. 읽기 스키마와 특히 리눅스에 익숙할수록 친숙한 SPL(Search Processing Language)의 동작 방식 때문에 그러지 않았나 싶다.

다음은 간단한 테스트를 위해 makeresults 구문으로 예제 데이터를 생성하는 과정. | 기호를 이용해서 SPL이 데이터를 단계적으로 처리함을 알 수 있다.
① | makeresults 
② | eval url="/path1/a.php /path1/path2/b.php /path1/path2/path3/c.php"
③ | table url


데이터 추가는 잘 됐는데 여러 정보가 섞여 있는 현 상태에서는 의미 있는 통계 분석을 할 수 없다. url 필드 구조를 바꿔보자. 
① | makeresults 
② | eval url="/path1/a.php /path1/path2/b.php /path1/path2/path3/c.php"
③ | makemv delim=" " url
④ | table url


보기엔 편해졌는데 하나의 필드에 다중값이 존재하는 구조는 여전히 통계 분석에 적합하지 않다. 단일값을 갖는 필드 구조로 바꿔야 한다.
① | makeresults 
② | eval url="/path1/a.php /path1/path2/b.php /path1/path2/path3/c.php"
③ | makemv delim=" " url
④ | mvexpand url
⑤ | table url


내친 김에 url 필드에서 file 정보도 추출해보자.
① | makeresults 
② | eval url="/path1/a.php /path1/path2/b.php /path1/path2/path3/c.php"
③ | makemv delim=" " url
④ | mvexpand url
⑤ | rex field=url "(?<file>[^/]+$)"
⑥ | table url, file


저장된 데이터의 구조를 목적에 따라 마음대로 바꿀 수 있는 읽기 스키마와 단계적으로 실행되는 SPL 덕에 의도했던 테이블 구조를 쉽게 만들 수 있었다. 그런데 | 기호를 이용한 단계적 데이터 처리 방식, 왜 이리 친숙하지?
[root@Centos7 ~] cat test
/path1/a.php /path/path2/b.php /path/path2/path3/c.php
[root@Centos7 ~]
[root@Centos7 ~] cat test | tr ' ' '\n'
/path1/a.php
/path/path2/b.php
/path/path2/path3/c.php
[root@Centos7 ~]
[root@Centos7 ~] cat test | tr ' ' '\n' | grep -oP '[^/]+$'
a.php
b.php
c.php

평소 리눅스의 다양한 문자열 처리 기능을 사용해왔다면 스플렁크는 쉬울 수밖에 없다. 단일화된 데이터 수집 처리 체계도 초심자의 진입을 돕는다.

관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스