2022년 5월 29일 일요일

Splunk의 해시 변환 - 2nd

스플렁크는 custom search command, 즉 사용자 맞춤 명령어 생성 기능을 제공한다. 먼저 '앱 관리 > 앱 만들기' 메뉴 실행.


앱 생성 후엔 'Search & Reporting' 앱에서 사용할 수 있도록 권한 적용 대상을 '모든 앱'으로 변경.


다음은 hash2num 앱의 생성 경로. 아직 껍데기뿐이고 파이썬 등을 이용해서 실제 기능을 만드는 추가 작업이 필요한 상태.
[root@Splunk splunk]# ls etc/apps/hash2num/
bin  default  lib local  metadata

파이썬 연동을 위한 Splunk SDK for Python 설치

스플렁크에서 제공하는 영상 가이드는 파이썬 스크립트에서 라이브러리 경로를 지정하지 않아도 SDK를 bin 경로에 설치하면 실행이 되는데 난 안 되더라. 그래서 공식 문서대로 lib 경로를 별도로 만들어서 설치함.

[root@Splunk splunk]# pip3 install --target=./etc/apps/hash2num/lib splunk-sdk
Collecting splunk-sdk
  Using cached https://files.pythonhosted.org/packages/a4/b6/80341af7856188329a1ca7e4b743ba65441e02fc3b115d1e7541e85d2adf/splunk-sdk-1.6.19.tar.gz
Installing collected packages: splunk-sdk
  Running setup.py install for splunk-sdk ... done
Successfully installed splunk-sdk-1.6.19
[root@Splunk splunk]# ls etc/apps/hash2num/lib/
splunklib  splunk_sdk-1.6.19-py3.6.egg-info

파이썬 스크립트 생성

int 함수를 이용해서 hash2num 필드의 16진수 해시값을 숫자로 변환.
[root@Splunk splunk]# ls etc/apps/hash2num/bin/
hash2num.py  README
[root@Splunk splunk]# cat etc/apps/hash2num/bin/hash2num.py
import os,sys
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..", "lib"))
from splunklib.searchcommands import dispatch, EventingCommand, Configuration, Option, validators

@Configuration()
class hash2num(EventingCommand):

        def transform(self, events):
                for event in events:
                        event['hash2num'] = int(event['hash2num'], 16)
                        yield event

dispatch(hash2num, sys.argv, sys.stdin, sys.stdout, __name__)

[root@Splunk splunk]# ls etc/apps/hash2num/default/
app.conf  commands.conf  data
[root@Splunk splunk]# cat etc/apps/hash2num/default/commands.conf
[hash2num]
python.version = python3
chunked = true
filename = hash2num.py

스플렁크 재시작 후 실행 결과.


관련 글

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스