Splunk Workflow, 워크플로우 만들기

Munang·2022년 10월 23일
2

splunk

목록 보기
14/54

1. 개념

splunk를 쓰다보면 workflow를 쓰는 일이 많아진다. 말 그대로 워크 플로우다. 어떤 검색을 하거나, ES에서 이벤트를 보거나, 등등.. 내가 보고있는 데이터로 추가적인 요청이 이어지는 플로우를 생성해주는 도구라고 생각하면 될 것 같다. Splunk 공식 문서에는 이러한 용도로 사용한다고 나와있다. Worflow를 처음 접해보는 사람이라면, 아래의 예시를 읽어보면 도움이 될 것 같다.

  • 이벤트에서 찾은 IP 주소를 기반으로 외부 WHOIS 조회를 수행

    • IP 정보를 조회하여 IP의 국가나 할당 기관 정보를 조회할때 사용할 것 같다. 아무래도 키사의 후이즈 페이지가 가장 많을 것 같다.
    • 이런 경우에는 외부 링크로 연결 & 특정 값을 body에 포함시켜 전송 해야하기 때문에 POST workflow
  • HTTP 오류 이벤트의 필드 값을 사용하여 외부 문제 관리 시스템에서 새 항목 연결

    • 특정 웹사이트를 관리할 때, status 값이 4** 5** 일 경우가 발생하면 별도의 링크로 연결해서 웹사이트의 상태를 바로 확인할 수 있게끔 하는 프로세스에 가장 많이 쓰일 것 같다.
    • 외부 혹은 내부로의 링크 연결 & 파라미터 값을 url에 추가하는 방식으로 GET workflow
  • 선택한 이벤트에서 하나 이상의 필드 값을 사용하는 보조 검색

    • 이벤트에서 특정 이벤트 타입, 혹은 특정 필드에 대해서 추가적인 검색을 실행할 수 있게끔 한다. 이런 경우는 search workflow를 사용한다.
  • 이벤트에서 발견된 특정 필드의 값에 대해 외부 검색(Google 또는 유사한 웹 검색 애플리케이션 사용)을 수행

    • 이벤트의 특정 필드에서 외부 링크로 연결되는 검색을 수행한다. 추가적인 정보를 얻고 싶을때이지 않을까 싶다. 예를들어 시그니처 정보, IP정보 등이 되겠다.
    • 특정 값을 검색에 보내는 경우인데, GET이 될 수도 있고 POST가 될 수도 있겠다. 특정 값을 파라미터로 보내냐, body값에 보내냐에 따라 달라질 것 같다.

2. 사용법

설정을 클릭 후 필드를 클릭한다.

여기서 워크플로 작업을 클릭한다.


새 워크플로 작업을 클릭한다.


워크 플로를 정의 한다. 각 항목의 설명은 다음과 같다.

  • 이름: workflow의 명칭을 기재한다.
  • 레이블: 실제 워크플로우가 실행될때 어떤 명칭으로 노출될지 정하는 것이다.
  • 다음 필드에만 적용 & 다음 이벤트 타입에만 적용: 특정 필드나, 이벤트 타입에 적용할 경우 해당되는 필드나 이벤트 타입을 적어주면 된다.
  • 작업 표시: 이벤트메뉴 or 필드 작업 두가지가 있는데, 이 부분은 이벤트 메뉴를 클릭하면 여기서 워크플로우를 실행할 수 있고

    필드 작업을 클릭하면 여기서 실행할 수 있다.

이후 방식에 대해서는 종류별로 아래 카테고리에서 소개하겠다.

1. 링크 방식

1) GET workflow

GET 워크 플로우가 사실 가장 많이 쓰이는 방법이 아닐까 싶다. 파라미터에 특정 토큰 값을 추가해서 검색 결과를 반환하거나 대시보드로 이동하거나 검색으로도 이동할 수 있다. 굳이 search 워크플로우를 사용하지 않아도 대부분 GET으로 모든게 가능하다.

오늘 해볼 GET워크 플로우는 IP를 구글 검색 결과로 반환해주는 워크플로우를 할 것이다.

워크플로우 정의는 다음과 같다.

  • URI: 워크플로우로 이동할 링크를 정의한다. 링크에 이벤트가 가지고 있는 필드들을 토큰화 하여 전달할 수 있다. 나는 구글의 검색 결과에 IP를 담았다.
  • 링크열기: 새창 or 현재창 -> 나는 새창으로 했다.
  • 링크방법: get으로 하여 해당 링크의 검색 결과를 GET으로 받아오는 방식을 선택한다. POST로 할 경우에는 별도의 body값을 넣어주고 진행하게 되는데 POST는 아래의 예시에서 설명하겠다.

결과를 확인해보면 다음과 같다. 이벤트 목록에서 이벤트 작업을 확인해보면 내가 정의한 워크플로우의 레이블이 보인다.

이 것을 클릭해보면 이러한 검색창으로 연결된다.

완료!

2) POST workflow

POST 워크플로우는 어떤 값을 body 로 전달하고 싶을때 사용된다.
이번에는 IP의 검색 결과를 키사 후이즈 검색 결과로 연결되는 워크플로우를 정의했다.

  • 링크방법: post로 선택한다.
  • 인수 게시: HTTP body에 들어갈 값을 별도로 정의하는 것이다. 여기에 IP를 토큰으로 넘겨줄 수 있다.
    키사 후이즈의 IP 검색 API 명세에는 search_yn, query 값이 있어서 각각 기재해줬다. (인수 게시 값을 넣는 법이 헷갈리는 분들은 API명세 보는 법을 검색하셔서 확인해보시면 될 것 같습니다.)

결과를 확인해보면 다음과 같이 나오게 되고, 이를 클릭해보면?

이렇게 나온다. clientip가 인수로 전달되어 검색 결과가 로딩되는 것을 볼 수 있다.

완료!

2. 검색 방식

1) search workflow

특정 필드나 이벤트 타입에 해당되는 경우, 추가적인 검색으로 연결하여 추가정보를 제공하는 방식이다.

나는 검색했을 때의 genre_id의 필드에 대해서 추가 검색을 수행하도록 workflow를 정의했다.

  • 검색 문자열: 내가 정의한 워크플로우를 실행하면, 내가 지정했던 문자열이 검색된다.

  • 앱애서 실행: 어떤 앱에서 search를 실행할지 지정할 수 있다. 어떤 인덱스는 앱 별로 보이는 뷰가 다를 수 있기 때문에 앱을 지정해주는게 맞다.

    그림에 보이는 앱 목록에서 하나를 선택해준다고 생각하면 된다. 기본 앱은 보통 search & reporting이기 때문에 나는 그대로 search를 선택했다.

  • 뷰에서 실행: 뷰는 아래에 그림에 보이는 메뉴바들의 목록이다. 어떤 뷰에서 실행할지 지정해줄 수 있다. 기본 값은 현재 워크플로우가 실행될 뷰 이다. (지금 예시에서는 검색 뷰가 되겠다.)

    이 뷰의 이름을 못찾는 경우가 있는데, Analytics 메뉴바를 클릭해보면 링크가 이렇게 된다.
    여기서 링크의 구성 순서가 app/앱 명/뷰 이름 이다. 따라서 아래의 링크에서는 search가 앱이 되고, analytics_workspace가 뷰 이름이 된다. 만약 analytics_workspace 라는 뷰에서 검색을 실행하고 싶으면 뷰 이름에 analytics_workspace를 넣으면 된다.

  • 결과 확인: 저장을 하고, 실제 검색에서 이벤트 작업을 클릭하면 내가 저장한 워크 플로우가 확인된다.

    클릭해보면 내가 지정한 검색 문자열이 실행되는 것을 볼 수 있다.

  • 추가: 검색 결과의 인수를 토큰으로 사용해서 워크플로우 검색에 반영하려면 이런식으로 $$ 을 이용해 토큰으로 감싸주면 된다.

    이렇게 하면 검색결과가 이렇게 나온다. 그래서 검색 결과의 시간 값이나, 특정 필드 값을 토큰으로 받아서 조건적인 검색도 수행할 수 있다.

0개의 댓글