splunk를 쓰다보면 workflow를 쓰는 일이 많아진다. 말 그대로 워크 플로우다. 어떤 검색을 하거나, ES에서 이벤트를 보거나, 등등.. 내가 보고있는 데이터로 추가적인 요청이 이어지는 플로우를 생성해주는 도구라고 생각하면 될 것 같다. Splunk 공식 문서에는 이러한 용도로 사용한다고 나와있다. Worflow를 처음 접해보는 사람이라면, 아래의 예시를 읽어보면 도움이 될 것 같다.
이벤트에서 찾은 IP 주소를 기반으로 외부 WHOIS 조회를 수행
HTTP 오류 이벤트의 필드 값을 사용하여 외부 문제 관리 시스템에서 새 항목 연결
4**
5**
일 경우가 발생하면 별도의 링크로 연결해서 웹사이트의 상태를 바로 확인할 수 있게끔 하는 프로세스에 가장 많이 쓰일 것 같다. 선택한 이벤트에서 하나 이상의 필드 값을 사용하는 보조 검색
이벤트에서 발견된 특정 필드의 값에 대해 외부 검색(Google 또는 유사한 웹 검색 애플리케이션 사용)을 수행
설정을 클릭 후 필드를 클릭한다.
여기서 워크플로 작업을 클릭한다.
새 워크플로 작업을 클릭한다.
워크 플로를 정의 한다. 각 항목의 설명은 다음과 같다.
이후 방식에 대해서는 종류별로 아래 카테고리에서 소개하겠다.
GET 워크 플로우가 사실 가장 많이 쓰이는 방법이 아닐까 싶다. 파라미터에 특정 토큰 값을 추가해서 검색 결과를 반환하거나 대시보드로 이동하거나 검색으로도 이동할 수 있다. 굳이 search 워크플로우를 사용하지 않아도 대부분 GET으로 모든게 가능하다.
오늘 해볼 GET워크 플로우는 IP를 구글 검색 결과로 반환해주는 워크플로우를 할 것이다.
워크플로우 정의는 다음과 같다.
결과를 확인해보면 다음과 같다. 이벤트 목록에서 이벤트 작업을 확인해보면 내가 정의한 워크플로우의 레이블이 보인다.
이 것을 클릭해보면 이러한 검색창으로 연결된다.
완료!
POST 워크플로우는 어떤 값을 body 로 전달하고 싶을때 사용된다.
이번에는 IP의 검색 결과를 키사 후이즈 검색 결과로 연결되는 워크플로우를 정의했다.
결과를 확인해보면 다음과 같이 나오게 되고, 이를 클릭해보면?
이렇게 나온다. clientip가 인수로 전달되어 검색 결과가 로딩되는 것을 볼 수 있다.
완료!
특정 필드나 이벤트 타입에 해당되는 경우, 추가적인 검색으로 연결하여 추가정보를 제공하는 방식이다.
나는 검색했을 때의 genre_id의 필드에 대해서 추가 검색을 수행하도록 workflow를 정의했다.
검색 문자열: 내가 정의한 워크플로우를 실행하면, 내가 지정했던 문자열이 검색된다.
앱애서 실행: 어떤 앱에서 search를 실행할지 지정할 수 있다. 어떤 인덱스는 앱 별로 보이는 뷰가 다를 수 있기 때문에 앱을 지정해주는게 맞다.
그림에 보이는 앱 목록에서 하나를 선택해준다고 생각하면 된다. 기본 앱은 보통 search & reporting이기 때문에 나는 그대로 search를 선택했다.
뷰에서 실행: 뷰는 아래에 그림에 보이는 메뉴바들의 목록이다. 어떤 뷰에서 실행할지 지정해줄 수 있다. 기본 값은 현재 워크플로우가 실행될 뷰 이다. (지금 예시에서는 검색 뷰가 되겠다.)
이 뷰의 이름을 못찾는 경우가 있는데, Analytics 메뉴바를 클릭해보면 링크가 이렇게 된다.
여기서 링크의 구성 순서가 app/앱 명/뷰 이름
이다. 따라서 아래의 링크에서는 search가 앱이 되고, analytics_workspace가 뷰 이름이 된다. 만약 analytics_workspace 라는 뷰에서 검색을 실행하고 싶으면 뷰 이름에 analytics_workspace를 넣으면 된다.
결과 확인: 저장을 하고, 실제 검색에서 이벤트 작업을 클릭하면 내가 저장한 워크 플로우가 확인된다.
클릭해보면 내가 지정한 검색 문자열이 실행되는 것을 볼 수 있다.
추가: 검색 결과의 인수를 토큰으로 사용해서 워크플로우 검색에 반영하려면 이런식으로 $$ 을 이용해 토큰으로 감싸주면 된다.
이렇게 하면 검색결과가 이렇게 나온다. 그래서 검색 결과의 시간 값이나, 특정 필드 값을 토큰으로 받아서 조건적인 검색도 수행할 수 있다.