1. 전체 아키텍처 개요

[Slack 채널]
   │
   ▼
[Flask 기반 Bot Server]
   ├─ SlackEventsAdapter 처리
   ├─ PDF 업로드 분석 (LangChain + Chroma VectorDB)
   ├─ 일반 질문 → LLM 답변 (Ollama)
   └─ Prometheus 쿼리 연동 (REST API)

 

  • 슬랙 채널 : 사용자가 질문을 입력하거나 파일을 업로드하는 인터페이스
  • Flask 서버 : Slack 이벤트 수신 및 응답 처리
  • LangChain + ChromaDB : PDF 문서 기반 질의응답
  • Ollama (Mistral 모델) : 문서 기반이 아닌 일반 질문에 대한 자연어 응답
  • Prometheus : 실시간 클러스터 메트릭 조회 (예: CPU 사용량)

PDF 문서 업로드 및 Q&A 

  • 사용자가 슬랙에 PDF 파일 업로드 시 자동 다운로드
  • LangChain + Chroma VectorDB에 문서 내용 저장
  • 동일 채널 ID 기반으로 DB 폴더를 생성해 context 유지
status = pdf_added_to_database(file_name, channel_id)
  • 질문 예시
    • "이 문서에서 언급된 Kubernetes 관련 내용 알려줘"
    • "DB 장애와 관련된 내용이 있어?"

 

일반 질문 대응 (RAG fallback)

  • 문서가 없는 경우 Ollama(Mistral)를 사용해 일반적인 질문에 응답
llm = Ollama(model="mistral", temperature=0)
answer = llm.invoke("Kubernetes가 뭐야?")
  • 모델: mistral
  • 예: "Kubernetes란?", "Prometheus와 Grafana의 차이점은?"

 

Prometheus 실시간 메트릭 조회 기능

  • 예: "cpu 사용량 알려줘" 요청 시
    • rate(container_cpu_usage_seconds_total[1m]) 쿼리 실행
    • Pod 별 CPU 사용량 분석 후 응답
     

향후 목표 기능 (준비 중)

  • Grafana 패널 이미지 렌더링 : /render/d-solo/... API를 통해 PNG 이미지로 응답 예정
  • Loki 로그 연동 : "error 로그 보여줘" 시, Promtail → Loki → Slack 응답 구조 구현 중
  • 장애 진단 명령어 : "OOMKilled 파드", "디스크 부족 노드" 등 명령어에 Prometheus 쿼리 대응 중