# EKS Log Analyzer MCP Server
Amazon EKS 노드 로그 분석을 위한 MCP 서버입니다.
## MCP란?
[Model Context Protocol (MCP)](https://modelcontextprotocol.io/)는 AI 어시스턴트가 외부 도구와 데이터에 접근할 수 있게 해주는 오픈 프로토콜입니다. Claude Desktop, Kiro, Cursor 등 MCP를 지원하는 AI 도구에서 이 서버를 연결하면, AI가 EKS 로그를 직접 분석할 수 있습니다.
## 목적
EKS 노드 트러블슈팅은 여러 로그 파일을 교차 분석해야 하는 복잡한 작업입니다. 이 MCP 서버는:
- [EKS Log Collector](https://github.com/awslabs/amazon-eks-ami/blob/main/log-collector-script/linux/eks-log-collector.sh)로 수집한 tar 파일을 자동 분석
- VPC CNI, kubelet, DNS, Network Policy 등 주요 컴포넌트별 분석 도구 제공
- 트러블슈팅 가이드와 워크플로우를 AI에게 제공하여 체계적인 문제 진단 지원
AI 어시스턴트에게 "이 로그 분석해줘"라고 요청하면, MCP 도구를 활용해 문제를 찾아줍니다.
## 설치
```bash
cd eks-log-mcp
pip install -r requirements.txt
```
## MCP 설정
`.kiro/settings/mcp.json` 또는 Claude Desktop 설정에 추가:
```json
{
"mcpServers": {
"eks-log-analyzer": {
"command": "python",
"args": ["/path/to/eks-log-mcp/server.py"]
}
}
}
```
## 도구 목록 (14개)
| 도구 | 설명 |
|------|------|
| `extract_eks_logs` | EKS log collector tar 파일 압축 해제 |
| `list_structure` | 로그 디렉토리 구조 표시 |
| `get_node_info` | 노드 기본 정보 (instance-id, region, kernel) |
| `analyze_vpc_cni` | VPC CNI 로그 분석 (aws-routed-eni, ipamd, CNI 설정) |
| `analyze_kubelet` | kubelet 로그 및 설정 분석 |
| `analyze_containerd` | containerd 로그 및 설정 분석 |
| `analyze_dns` | DNS 4단계 트러블슈팅 |
| `analyze_node_join` | Node Join/NotReady 문제 분석 |
| `analyze_networking` | 네트워킹 분석 (iptables, conntrack, routes, ebpf) |
| `analyze_network_policy` | Network Policy eBPF 분석 |
| `analyze_storage` | 스토리지 분석 (mounts, lsblk, fstab) |
| `analyze_system` | 시스템 분석 (ps, netstat, dmesg) |
| `analyze_pod_logs` | 특정 Pod 로그 분석 (kube-proxy, aws-node 등) |
| `search_logs` | 전체 로그에서 패턴 검색 |
## 트러블슈팅 가이드 (7개 Resources)
MCP Resources로 AI에게 트러블슈팅 지식을 제공합니다:
| 가이드 | URI |
|--------|-----|
| VPC CNI | `eks://guides/vpc-cni` |
| DNS | `eks://guides/dns` |
| Node Join | `eks://guides/node-join` |
| Kubelet | `eks://guides/kubelet` |
| Kube-proxy | `eks://guides/kube-proxy` |
| Containerd | `eks://guides/containerd` |
| Network Policy | `eks://guides/network-policy` |
## 워크플로우 프롬프트 (4개 Prompts)
| 프롬프트 | 설명 |
|----------|------|
| `troubleshoot-vpc-cni` | VPC CNI 문제 분석 워크플로우 |
| `troubleshoot-dns` | DNS 문제 분석 워크플로우 |
| `troubleshoot-node-join` | Node Join/NotReady 분석 워크플로우 |
| `full-diagnosis` | 전체 노드 진단 |
## 사용 예시
```
# tar 파일 압축 해제
extract_eks_logs(tar_path="eks_i-xxx.tar.gz")
# 노드 정보 확인
get_node_info(log_dir="eks_i-xxx")
# VPC CNI 분석
analyze_vpc_cni(log_dir="eks_i-xxx")
# DNS 트러블슈팅
analyze_dns(log_dir="eks_i-xxx")
# 에러 검색
search_logs(log_dir="eks_i-xxx", pattern="error")
```
## 지원하는 로그 구조
```
eks_i-xxx/
├── kernel/ # dmesg, uname
├── system/ # instance-id, ps, netstat
├── containerd/ # config, logs
├── storage/ # mounts, lsblk
├── var_log/
│ └── aws-routed-eni/ # VPC CNI 로그
├── networking/ # iptables, conntrack, ebpf
├── ipamd/ # ENI, pod 정보 (JSON)
├── kubelet/ # kubelet.log, kubeconfig
└── cni/ # CNI 설정
```