splunk 에서 두가지의 검색결과를 비교할 수 있는 명령어가 있다. 정말 집합의 의미로 set 명령어이다. 2가지 하위 집합의 교집합, 차집합, 합집합을 확인할 수 있다. 파이썬에서 set이라는 해시테이블로 구현된 자료구조가 있는데 그 기능과 동일하다. splunk 자체가 파이썬으로 만들어졌기 때문에 명령어가 대부분 파이썬의 함수들로 구성된 것이 많다.
| set (union | diff | intersect) subsearch1 subsearch2
로 명세 되어있고 필수 옵션에 대해 설명하면 다음과 같다.
| set intersect [search 404 | fields url] [search 303 | fields url]
404 오류와 303 오류가 있는 모든 URL을 반환
결과에 포함된 모든 필드가 일치하는 경우 결과를 동일한 것으로 간주한다. serial과 같이 검색에 의해 생성된 일부 숨겨진 필드는 검색에 따라 다를 수 있다. 따라서 set명령의 결과와 같이 변환된 결과와 달리 원시 이벤트와 함께 명령을 사용하는 경우 일부 필드를 필터링 해야한다.
| set intersect [search 404 | fields url | fields - _*] [search 303 | fields url | fields - _*]
기본적으로 set 명령어를 사용했을 때 결과는 10,000개 까지만 허용된다. 이 제한을 초과하면 결과가 자동으로 잘리게된다.
Splunk Enterprise를 사용하는 경우 파일을 편집하고 스탠자 의 값을 limits.conf변경하여 이 제한을 조정할 수 있다. 이 값이 매우 크면 하위 검색이 실행되는 검색의 '구문 분석' 단계에서 엄청난 비용이 발생할 수 있다. maxout[subsearch]
각 하위 검색에서 최대 50000개의 이벤트를 탐색하려고 한다. 두 검색 중 하나의 입력 결과 수가 이 제한을 초과하는 경우 set명령은 나머지 이벤트를 자동으로 무시하게 된다.
이 최대값은 limits.conf 파일의 maxresultrows
설정에서 수정할 수 있다. 이 제한을 늘리면 메모리 사용량이 늘어날 수 있다.