네트워크 AI 에이전트 2
🧠 지능 이식: 서버에 ‘사고하는 능력’을 부여하다
지난 포스팅에서 오라클 클라우드에 튼튼한 요새(서버)를 구축했다면, 이번에는 그 요새를 관리할 에이전트의 뇌(LLM)와 손(Python Tools)을 연결하는 핵심 과정을 다룹니다.
단순히 질문에 답하는 인공지능이 아니라, 서버의 상태를 직접 확인하고 조치까지 수행하는 ‘행동하는 에이전트’를 만드는 단계입니다.
1. 에이전트의 ‘뇌’ 선택: Llama 3.3 & Groq
에이전트가 복잡한 인프라 상황을 분석하고 적절한 도구를 선택하려면 고성능의 추론 능력이 필요합니다. 저는 초고속 추론 성능을 자랑하는 Groq 플랫폼의 Llama 3.3 70B 모델을 선택했습니다.
- Reasoning (추론): 사용자의 의도를 파악하고 어떤 명령어가 필요한지 판단합니다.
- Tool Calling (도구 호출): 필요한 순간에 미리 정의된 파이썬 함수를 스스로 호출합니다.
2. 에이전트의 ‘손’ 설계: tools.py
AI는 직접 리눅스 커널에 접속할 수 없습니다. 대신 AI가 안전하게 조작할 수 있는 ‘도구 상자’를 파이썬으로 정의해줘야 합니다. 이것이 바로 에이전트의 실질적인 실행력이 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# tools.py (에이전트가 사용하는 도구 예시)
import psutil
import subprocess
def get_system_status():
"""시스템 자원 점검 도구"""
cpu = psutil.cpu_percent()
mem = psutil.virtual_memory().percent
return f"CPU: {cpu}%, RAM: {mem}%"
def manage_firewall(ip, action):
"""방화벽 제어 도구"""
# 보안을 위해 화이트리스트 검증 후 실행
...
3. 핵심 엔진: ReAct 워크플로우 구현
에이전트는 ReAct(Reasoning + Acting) 모델을 기반으로 움직입니다. 사용자가 말을 걸면 에이전트는 다음과 같은 사고 과정을 거칩니다.
- 질문 분석: “지금 서버 왜 이렇게 느려?”
- 사고(Thought): “상태 점검을 위해
get_system_status와get_top_processes도구를 써야겠어.” - 행동(Action): 파이썬 함수를 호출하여 실제 서버 데이터를 가져옵니다.
- 관찰(Observation): “아하, 특정 프로세스가 CPU를 90% 먹고 있구나.”
- 최종 보고: “현재 특정 프로세스 때문에 부하가 발생 중입니다. 조치할까요?”
4. 소통의 창구: Telegram Bot API 연동
에이전트가 분석한 결과는 관리자의 스마트폰으로 즉시 전달되어야 합니다. 이를 위해 텔레그램 봇을 인터페이스로 활용했습니다.
- 실시간 알림: 이상 징후 발생 시 에이전트가 먼저 관리자에게 보고합니다.
- 원격 제어: 어디서든 채팅 한 줄로 서버 명령을 내릴 수 있습니다.
- 보안 승인: 위험한 작업(프로세스 종료 등)은 버튼 클릭을 통한 관리자의 최종 승인 후에만 실행됩니다.
🛡️ 보안을 위한 장치들
이번 연동 과정에서 가장 중요하게 다룬 보안 포인트입니다.
- 환경 변수 격리: 모든 API 키와 토큰은 코드와 분리된
.env파일에 저장하여 유출을 방지했습니다. - 관리자 전용 접근: 특정 텔레그램
CHAT_ID를 가진 사용자에게만 에이전트가 응답하도록 설계했습니다. - 데이터 마스킹: 에이전트가 출력하는 로그 중 민감한 서버 정보는 자동으로 마스킹 처리되어 관리자에게 전달됩니다.
🚀 마치며: 이제 에이전트가 눈을 떴습니다.
이제 에이전트는 서버의 상태를 보고(Monitoring), 생각하고(Reasoning), 말할(Reporting) 수 있는 준비가 끝났습니다.
다음 포스팅에서는 이 에이전트가 실제로 야생의 네트워크 공격을 어떻게 탐지하고, 저와 어떻게 협력하여 방어하는지 실제 대응 시나리오를 보여드리겠습니다.