[ Splunk Dev ] Custom Command 만들기 : 개요
본문 바로가기

Splunk/Splunk Dev

[ Splunk Dev ] Custom Command 만들기 : 개요

728x90
반응형

 

 

커스텀 커맨드를 사용하는 경우

  1. Splunk가 아직 개발하지 않은 방식으로 데이터를 처리하고 싶을 때
  2. Splunk에 의해 저장되지 않은 외부 소스의 데이터를 검색 파이프라인으로 가져오려고 할 때
  3. 검색 결과를 외부 시스템으로 내보내려고 할 때

 

커스텀 커맨드 명령 작동 방식

커스텀 커맨드는 검색 시 splunkd와 함께 실행되는 외부 python 스크립트를 통해 데이터를 처리한다.

  1. Splunk Enterprise는 SPL의 각 줄을 분석하고 검색 명령을 확인한다.
    커스텀 커맨드는 commands.conf 파일의 스탠자로 지정된다.
    /etc/apps/local/commands.conf
    [ whois ] 
  2. 검색 명령어가 커스텀 커멘드인 경우 Splunk Enterprise는 해당 명령어에 대한 Python 스크립트를 실행한다.
  3. Splunk Enterprise는 STDIN을 통해 Python 스크립트를 통해 검색 결과를 청크로 연결하고
    STDOUT을 통해 기록한다.
  4. Python 스크립트를 처리한 후 검색 결과가 검색 파이프라인에 다시 입력된다.

https://dev.splunk.com/enterprise/docs/devtools/customsearchcommands/

 

커스텀 커맨드 프로세스 전반에 걸쳐 splunkd와 python 스크립트는 일련의 getinfo 및 execute 명령을 통해 메타데이터를 교환한다.

  1. splunkd는 getinfo 명령을 전송하여 python 스크립트에서 명령 유형 및 필수 필드를 포함한 정보를 요청
  2. splunkd는 파이프라인의 각 검색 결과 청크에 대해 별도의 execute 명령을 보냄
  3. python 스크립트는 검색 결과의 각 부분을 처리
  4. python 스크립트는 splunkd에 응답을 다시 보냄

모든 검색 결과가 python 스크립트를 통과한 후 splunkd는 STDIN 파이프를 닫아 프로세스를 종료

 

커스텀 커맨드를 생성하는 작업 단계

  1. Splunk Enterprise에서 새 앱을 만든다.
    사용자 정의 검색 명령은 Splunk Enterprise에서 별도의 앱으로 가장 잘 작동한다.
  2. 앱 내 검색 명령을 위한 python 스크립트를 만든다.
  3. 검색 명령어를 등록한다.
  4. 검색 명령에 대한 길잡이 텍스트를 활성화한다.
  5. 앱을 패키징하고 배포한다.
  6. 앱 및 액세스 제어 설정을 수정한다.

 

 

커스텀 커맨드를 생성하기 위한 도구

python용 Splunk Enterprise SDK에는 커스텀 커맨드 생성에 도움이 되는 도구가 포함되어 있음

GitHub에서 Python용 Splunk Enterprise SDK를 다운로드 할 수 있다.

 

Python Class

python용 Splunk Enterprise SDK의 splunklib.searchcommands 모듈에는

사용자 지정 검색 명령을 생성하는 데 필요한 클래스가 있다.

사용하는 특정 클래스는 생성하려는 명령 유형에 따라 다름

 

사용자 정의 검색 명령을 위한 python 클래스 참조

 

https://dev.splunk.com/enterprise/docs/devtools/customsearchcommands/pythonclassescustom/

 

dev.splunk.com

https://github.com/splunk/splunk-sdk-python/tree/master/splunklib/searchcommands

 

splunk-sdk-python/splunklib/searchcommands at master · splunk/splunk-sdk-python

Splunk Software Development Kit for Python. Contribute to splunk/splunk-sdk-python development by creating an account on GitHub.

github.com

 

 

샘플 앱 및 커스텀 커맨드 예

splunk-app-examples 저장소의 custom_search_commands/python 디렉터리에는 각 유형의 커스텀 커맨드에 대한 예제가 포함된 샘플 앱이 있다.

https://dev.splunk.com/enterprise/docs/devtools/customsearchcommands/customsearchcmdexamples/

 

https://dev.splunk.com/enterprise/docs/devtools/customsearchcommands/customsearchcmdexamples/

 

dev.splunk.com

 

 

템플릿

  • filter.py : 데이터세트 처리 명령을 위한 템플릿
  • generate.py : 명령 생성을 위한 템플릿
  • report.py : 명령 변환을 위한 템플릿
  • stream.py : 스트리밍 명령을 위한 템플릿

템플릿을 다운로드하려면 GitHub의 splunk-app-examples 리포지토리에 있는 아래 링크 참조

https://github.com/splunk/splunk-app-examples/tree/master/custom_search_commands/python/customsearchcommands_template/bin

 

splunk-app-examples/custom_search_commands/python/customsearchcommands_template/bin at master · splunk/splunk-app-examples

App examples for Splunk Enterprise. Contribute to splunk/splunk-app-examples development by creating an account on GitHub.

github.com

 

728x90
반응형