반응형

출처: https://blog.naver.com/monoris30/221313548867

Splunk 검색에서 eval 과 stats 명령어는 매우 빈번하게 사용한다. 그러므로 사용자들은 두 명령어에서 사용하는 내장 함수에 익숙해야 한다.
    
eval 함수
 
eval 명령어에 사용하는 함수들은 변수에 대한 각종 조작, 검증을 수행하며, 함수 실행 결과값을 반환하는 형식이다. 그러므로 항상 다음과 같이 사용해야 한다.   [반환값_저장변수] = 함수(인자1, 인자2.. )
대부분의 eval 함수는 문자열을 인자로 취하고 이를 계산한 결과를 반환한다. 문자열은 ""로 감싸서 표시하고, 문자열을 반환하는 함수는 그 자체가 문자열이 될 수 있다.
 
case(X,"Y",...)
여러 개의 조건을 검증할 때 사용한다. 두 개의 인자가 한 그룹으로 동작하고,  첫 번째 인자가 참인 경우 두 번째 인자의 내용이 반환된다. 아래 예제는 HTTP 상태코드와 연결하는 설명을 반환하는 예제코드다. 

... | eval description=case(error == 404, "Not found", error == 500, "Internal Server Error", error == 200, "OK")

--> error가 404 이랑 같을 경우 "Not found 반환, error가 500이랑 같을 경우 "Internal Server Error" 반환 


cidrmatch("X",Y)
IP 주소 Y가 네트워크 X에 포함되는지 확인한다. 반환 값은 참 또는 거짓이다. 그러므로 if문과 같은 함수의 인자로 사용될 수 있다. 아래 예제 코드에서는 참을 반환한다. 두 개의 인자가 사용되고, 첫 번째는 CIDR 형식의 네트워크, 두 번째는 검사를 위한 IP 주소가 입력된다.

 

…| eval local = cidrmatch(“10.0.0.0/8”, "10.10.0.100”)


cidrmatch 함수는 검색 필터로 사용할 수 있다. 

| where cidrmatch(“172.16.0.0/16”, ip)


 
if(X,Y,Z)
만일 X가 참이면 두 번째 인자인 Y가 반환되고 X가 거짓이면 세 번째 인자인 Z가 반환된다. 앞에서 살펴본 cidrmatch 함수를 사용하여 if함수를 아래와 같이 이해할 수 있다. 예제코드를 실행하면 test 변수에는 "OK"라는 문자열이 저장된다.

eval network=if(cidrmatch("10.10.0.0/24", "10.10.0.100"), “local”, “non_local”)


이 예제 코드에서는 network 변수에 local 문자열이 저장된다.
 
like(X,"Y")
두 개의 인자를 사용하며, 첫 번째 인자는 탐색 대상 문자열, 두 번째 인자는 탐색 패턴을 의미한다. X에서 Y를 찾을 수 있으면 참을 반환한다.  SQL의 Like문과 동일한 효과를 가진다.

like(field, "addr%")


이 함수 역시 검색 필터로 사용할 수 있다.

… | where like(field, "foo%")

 

반응형

'IT기술 관련 > 정보보안 관련' 카테고리의 다른 글

SMTP의 보안 시스템 :: SPF, DKIM, DMARC 란?  (0) 2024.01.16
Splunk stats 함수  (0) 2023.09.13
Splunk 자주 사용하는 명령어  (0) 2023.09.13
Splunk 란?  (0) 2023.09.13

+ Recent posts