출처: 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%")
'정보보안 관련 > Splunk' 카테고리의 다른 글
Splunk stats 함수 (0) | 2023.09.13 |
---|---|
Splunk 자주 사용하는 명령어 (0) | 2023.09.13 |
Splunk 란? (0) | 2023.09.13 |