Splunk return & format 에 관하여 / 여러 column과 row를 한번에 검색할 때

Munang·2023년 5월 20일
1

splunk

목록 보기
30/52

Splunk를 이용해서 검색하다보면 어떤건 제외하고, 어떤건 포함하고 하는 식으로 이것 저것 조건을 만들게 된다. 그러다 보면 예외 처리나 포함하는 구문으로만 10줄이 넘어가게 된다. 이럴때 유용하게 사용할 수 있는 명령어가 있는데 바로 return과 format이다. 참고로 이 명령어를 사용하기 위해서는 subsearch를 사용하는 것이 거의 필수이다. (아닐 경우도 있겠지만 ^^. 대부분 그렇다.)

두개의 명령어가 매우 유사한 역할을 하기 때문에 같이 설명하겠다.

1. return

subsearch의 검색결과를 반환하는 역할을 한다. 이렇게 설명하면, subsearch를 모르는 사람은 알아듣기 어려울 수 있기 때문에 먼저 subsearch가 아닌 그냥 search로 검색했을 때의 결과를 확인해보자.

1) 기본 사용법

먼저 이러한 쿼리가 있다고 하자, 나는 여기서 action에 해당하는 값 4가지를 모두 최초 검색에 포함시키고 싶은 상황이다.

return 사용 결과는 다음과 같이 나온다.

search의 결과로 action="purchase" 가 나오는데 이게 return 명령어의 결과이다.

여기서 쿼리 전체에 subsearch를 씌워주게 되면 다음과 같이 쿼리가 실행된다고 보면 된다.

search의 결과로 action="purchase" 가 검색쿼리 그대로 수행이 된다. 본래 subsearch에서 return 을 하게 되면 문자열로 그 결과를 돌려주게 되는데, 따라서 쿼리 검색이 그대로 실행된다고 보면 된다.

2) 옵션

  • 위의 예시에서 보면 top limit=4인데도 결과 검색이 1개만 되고 있는 것을 볼 수 있다. return은 기본적으로 결과의 첫 번째 행만 사용하기 때문에 사용할 row수를 지정해줘야 한다.

  • 추가로 필드는 그냥 옆으로 나열하면 되는데, 그렇게 되면 기본 AND 조건으로 묶여서 출력된다.

3) 그 외 사용법

공식 홈페이지에 보면 다음과 같이 나와있다. 총 3가지 사용법이 있는데, 모두 유용하다.

  • Field name : 위에 봤던 예시이다. return할 때에 필드명=값 형태로 return 해준다.
  • alias=value: 필드명을 다른 값으로 바꾸어서 return 해준다.
  • value: return 할 때에 값 만 return 해준다.

2. format

return 과 굉장히 유사한 역할을 한다. 하지만 여러 row를 처리할 때에는 return 보다는 format이 더 편리할 수 있다.

1) 기본 사용법

format도 검색 결과를 하나의 search문으로 만들어 반환해 주는데, return은 단순히 OR로 묶어서 반환해주는 반면 format은 그 사이에 조건을 넣을 수 있고, 전체 괄호로 묶어서 반환할 수 있어 대량의 예외 조건이나 lookup을 예외하고 싶을 때 사용하면 좋을 것 같다.

index=demo1 
| table action status
| format


이렇게 필드와 필드 사이는 AND, row와 row 사이는 OR로 묶여서 return이 된다. 이것을 subsearch로 묶어서 사용하게 되면 아래 보이는 전체 검색이 검색되는 것이라 보면된다.

2) 옵션

  • 세퍼레이터(하단의 예시에서 각각의 순서와 일치하는 옵션 명칭이다.)
index=demo1 
| table action status
| format "[" "(" "AND" ")" "OR" "] "


① 전체 반환 문자열 시작 부분: 전체 반환되는 문자열의 시작 부분을 "[" 으로 묶을 것이라고 지정한 것 이다. 따라서 문자열의 맨 첫부분이 [ 으로 시작한다. 디폴트는 ( 문자열이다.

② row와 row사이 시작 부분: row와 row사이를 구별하는 시작 부분을 묶어줄 문자를 (이라고 지정한 것 이다.

③ 필드와 필드 사이: AND로 지정했다.

④ row와 row사이 마지막 부분: row와 row사이를 구별하는 시작 부분을 묶어줄 문자를 )이라고 지정한 것 이다.

⑤ row와 row사이의 조건: 행별로 OR로 구분한다고 지정한 것 이다.

⑥ 전체 반환 문자열 마지막 부분: 전체 반환되는 문자열의 마지막 부분을 "]" 으로 묶을 것이라고 지정한 것 이다. 따라서 문자열의 맨 마지막부분이 ] 으로 시작한다. 디폴트는 ) 문자열이다.

다른 옵션으로도 실행해봤다.

index=demo1 
| table action status
| format "[" "(" "&&" ")" "||" "]"

  • 최대 반환 row 수 maxresults
    최대로 검색하는 row수를 지정할 수 있다. 가장 위의 행부터 n개를 반환한다.

  • mvsep 하나의 cell 안에 여러개의 값이 개행문자 기준으로 있다면, 이것을 따로 (별도의 컬럼으로 취급하여) 조건을 넣어줄 수 있다. 예를들어 다음과 같은 상황이라고 보자.

    여기서 멀티컬럼 값들 사이에는 || 조건으로 묶어줄 수 있도록 다음과 같이 실행하였다.

오늘은 return, format을 알아보았다. 더 자세한 내용은 Splunk 문서를 보면 확인할 수 있다. 하지만 블로그로도 충분할거라고 본다!

profile
Moonlilght

0개의 댓글