Splunk Project | Splunk + Ollama + LLM 연동 구축 가이드 (실전 PoC 기준)
본문 바로가기

Splunk/Splunk Project

Splunk Project | Splunk + Ollama + LLM 연동 구축 가이드 (실전 PoC 기준)

728x90
반응형

Splunk 환경에서 로컬 LLM(Ollama)을 활용하여 보안 분석 자동화를 구성하는 전체 과정을 정리한 글이다.

📌 전체 구성 요약

  • Ollama → Host 설치 (GPU 직접 사용)
  • 모델 → Foundation-Sec-8B Q4 GGUF
  • Splunk → AITK 연동
  • Open WebUI → Docker (선택)

🔥 Phase 1 — Ollama + 모델 실행

1️⃣ Ollama 설치

zstd 패키지 필요
dnf install -y zstd

# Ollama를 자동으로 설치하는 원라인 명령어
curl -fsSL https://ollama.com/install.sh | sh

 

 

✔ 설치 확인 및 서비스 등록

# 설치 확인
ollama --version

# 부팅 시 자동 실행 등록
systemctl enable ollama

# 서비스 실행 >> API 서버 역할 수행 (localhost:11434)
systemctl start ollama

# 상태 확인
systemctl status ollama

# 실행 파일 위치 확인 (/usr/local/bin/ollama)
which ollama

 


2️⃣ 테스트 모델 실행

ollama run llama3

 

더보기

 

이렇게 다운로드가 진행됨
다운 로드가 완료되면 아래와 같이 질의할 수 있다.

한국말로 답해달라고 하면 답해준다.

 

현재 나의 GPU는 GTX1080 (8GB)

따라서 두 개 이상의 모델을 동시에 실행하기엔 VRAM이 부족해서 성능 저하 또는 OOM 발생 가능성이 존재

그래서  테스트한 모델은 삭제해 주겠음

 

👉 정상 동작 확인 후 테스트 모델은 삭제 권장 (VRAM 절약)

ollama list

# 결과
NAME             ID              SIZE      MODIFIED
llama3:latest    365c0bd3c000    4.7 GB    8 minutes ago

# 삭제
ollama rm llama3
 

 

3️⃣ 실제 사용할 모델 실행

ollama run hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M
더보기

모델 고르는 법

https://huggingface.co/fdtn-ai/Foundation-Sec-8B

 

fdtn-ai/Foundation-Sec-8B · Hugging Face

We’re on a journey to advance and democratize artificial intelligence through open source and open science.

huggingface.co

위 링크로 접속한 후, 우측 하단의 Collection including 클릭

우측 하단의 Foundation including 클릭

 

 

Foundation-Sec-8B에서 파생된 모델 리스트를 확인할 수 있다.

원하는 모델을 골라 클릭!

원하는 모델 fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF 선택 후 클릭

 

 

우측 상단의 Use this model > Ollama

Copy 클릭

 

ollama run hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M

 

 

✅ 실시간 테스트

watch -n 1 nvidia-smi

 

👉 그 상태에서:

ollama run hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M

 

결과

Every 1.0s: nvidia-smi                                   splunk-poc: Wed Apr  1 16:29:10 2026

Wed Apr  1 16:29:10 2026
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 535.288.01             Driver Version: 535.288.01   CUDA Version: 12.2     |
|-----------------------------------------+----------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |
|                                         |                      |               MIG M. |
|=========================================+======================+======================|
|   0  NVIDIA GeForce GTX 1080        Off | 00000000:82:00.0 Off |                  N/A |
| 47%   73C    P2             177W / 180W |   5322MiB /  8192MiB |     93%      Default |
|                                         |                      |                  N/A |
+-----------------------------------------+----------------------+----------------------+

+---------------------------------------------------------------------------------------+
| Processes:                                                                            |
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |
|        ID   ID                                                             Usage      |
|=======================================================================================|
|    0   N/A  N/A    505159      C   /usr/local/bin/ollama                      5320MiB |
+---------------------------------------------------------------------------------------+

 

1️⃣ GPU-Util 93%

👉 거의 풀로드

실제 inference가 GPU에서 돌고 있음

 

2️⃣ Power 177W / 180W

👉 GPU 거의 최대 출력

연산 제대로 태우는 상태

 

3️⃣ Perf: P2

👉 고성능 상태 진입

→ 정상적인 compute workload

 

4️⃣ VRAM 5.3GB 사용

👉 모델 올라가 있음 + 일부 여유 있음

→ q4 모델 잘 선택한 상태

🎯 결론

👉 지금 상태는:

  • GPU 정상 인식 ✔
  • Ollama GPU 연동 ✔
  • 모델 GPU inference ✔
  • 성능 상태 최상 ✔

 

 

💡 왜 Q4 모델을 선택했는가

  • GTX 1080 (8GB) 환경
  • Q8 / FP16 → OOM 위험
  • Splunk와 같이 사용 → 안정성 중요

👉 결론: Q4 GGUF = 가장 현실적인 선택


🔥 Phase 2 — Splunk AITK 연동

 

1️⃣ 권한 설정

Splunk web 화면 > 설정 > 역할 : admin 역할에 mltk_admin 권한 부여

 

2️⃣ Connection 설정

  • Provider: Ollama
  • Endpoint: http://localhost:11434
  • Token: 필요 없음
  • Response Variability: 여기선 0.2

📌 Response Variability 기준

  • 0.1 ~ 0.3 → 로그 요약 (추천)
  • 0.4 ~ 0.7 → 분석 코멘트
  • 0.8+ → 창의적 생성

: Set as default 로 설정하면 ai command 사용시 기본으로 사용하는 LLM으로 지정됨

 

Test Connection 클릭 후 Success 확인 후 저장 클릭

 

3️⃣ 연동 테스트

splunk search & reporting에서 ai command로 확인

# SPLUNK SPL
| makeresults 
| ai prompt="log4j 취약점에 대해 간략히 설명 및 심각도 점수 표시. 한국어로 답변" provider=Ollama model=hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M
| table ai_result_1

 

👉 결과 나오면 성공

 

결과
기본 검색 돌리는데 81초 성능은 안습이다.

⚠ 성능 참고

  • 응답 느림 (약 80초)
  • GPU 사용량 높음

👉 이유: GTX1080 + 8B 모델 한계

 

GPU 리소스 사용 현황 : 검색 돌리기 전
GPU 리소스 사용 현황 : 연산 중일 때
GPU 리소스 사용 현황 : 연산 완료 후


🔥 Phase 3 — Open WebUI

1️⃣ Docker 설치

# Docker 패키지를 설치할 수 있는 “공식 저장소”를 등록
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# dnf config-manager : DNF 저장소 설정 관리 도구
# --add-repo : 새로운 패키지 저장소 추가
# URL : Docker 공식 yum repo

# Docker 패키지 설치
dnf install -y docker-ce docker-ce-cli containerd.io

# 서버 재부팅 시 Docker 자동으로 시작되도록 설정
systemctl enable docker

# 지금 바로 Docker 데몬 실행
systemctl start docker

# 정상 설치 확인
docker --version

# 권한 설정 (선택) 난 root로 설치해서 필요 없을 무
usermod -aG docker $USER

 

더보기

🔥설치되는 구성요소

1️⃣ docker-ce

👉 Docker 엔진 (핵심)

  • 컨테이너 실행 담당

2️⃣ docker-ce-cli

👉 Docker 명령어 도구

  • docker run, docker ps 등

3️⃣ containerd.io

👉 컨테이너 런타임

  • 실제 컨테이너 생성/관리
  • Docker 내부에서 사용
 
 

2️⃣ Open WebUI 실행

docker run -d \
  --name open-webui \
  -p 3000:8080 \
  -v open-webui:/app/backend/data \
  --add-host=host.docker.internal:host-gateway \
  ghcr.io/open-webui/open-webui:main
 
 
 

접속:

http://서버IP:3000
성공

 

3️⃣ Ollama 연결

화면 우측 상단 동그라미 클릭 > 관리자 패널 > 설정 > 연결 > Ollama API 연결 관리

WebUI에서 Ollama 주소를 직접 설정  (기본 설정으로 되어 있음)

 

 

4️⃣ 모델 확인

정상 시 자동 표시됨

hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M

 

5️⃣ 모델 안 보일 때 (트러블슈팅)

👉 바로 이거 실행:

docker exec -it open-webui curl http://host.docker.internal:11434/api/tags

 

# 결과
curl: (7) Failed to connect to host.docker.internal port 11434 after 0 ms: Couldn't connect to server

# 바인딩 확인
ss -tulnp | grep 11434

tcp   LISTEN 0      4096       127.0.0.1:11434      0.0.0.0:*    users:(("ollama",pid=368028,fd=3))
## >> Ollama를 0.0.0.0으로 열어줘야 함
 
 
# Ollama 서비스 수정
vi /etc/systemd/system/ollama.service

# ExecStart 수정
## 기존
ExecStart=/usr/local/bin/ollama serve
## 아래처럼 수정
ExecStart=/usr/bin/env OLLAMA_HOST=0.0.0.0 /usr/local/bin/ollama serve

# 서비스 재적용
systemctl daemon-reexec
systemctl daemon-reload
systemctl restart ollama

# 바인딩 다시 확인
ss -tulnp | grep 11434

## 결과
[root@splunk-poc ~]# ss -tulnp | grep 11434
tcp   LISTEN 0      4096               *:11434            *:*    users:(("ollama",pid=657045,fd=3))

# 모델 다시 확인
docker exec -it open-webui curl http://host.docker.internal:11434/api/tags

## 결과 >> 정상
{"models":[{"name":"hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M","model":"hf.co/fdtn-ai/Foundation-Sec-8B-Q4_K_M-GGUF:Q4_K_M","modified_at":"2026-04-01T16:15:24.8630286+09:00","size":4921462772,"digest":"3a7c33a0ba0d15b8aa1e3f7e768e6a92edc2d7b24b715e8beb16a42993724efd","details":{"parent_model":"","format":"gguf","family":"llama","families":["llama"],"parameter_size":"8.03B","quantization_level":"unknown"}}]}[root@splunk-poc ~]#

 

 

🎯 최종 결론

Ollama는 Host에서 단순하게, 나머지는 Docker로 분리한다
    • Ollama → GPU 직접 사용
    • Splunk → localhost 연동
    • WebUI / DSDL → 컨테이너 분리

🚀 다음 단계 (예고)

지금까지는 LLM을 실행하고 Splunk와 연동하는 단계였습니다.

하지만 여기서 끝이 아닙니다. 진짜 핵심은 이제부터입니다.

 

🔥 다음 단계: DSDL 기반 자동화

      • 자연어 → SPL 자동 생성
      • Splunk REST API 호출
      • LLM 분석 자동화

예를 들어:

"최근 로그인 실패 공격 보여줘"

 

👉 이 한 문장으로

      • SPL 자동 생성
      • 검색 실행
      • 결과 분석

까지 자동으로 처리하는 구조를 만들게 됩니다.


📌 다음 글에서 다룰 내용

      • DSDL 구조 설계
      • Splunk REST API 연동
      • Ollama API 파이프라인 구성
      • 자연어 기반 보안 분석 자동화

 

728x90
반응형