Phân tích yêu cầu hệ thống cho Prometheus, Thanos và LLM
Tính toán tài nguyên cho hạ tầng thu thập và lưu trữ metrics
Để hệ thống AIOps hoạt động ổn định, bạn cần phân bổ tài nguyên riêng cho Prometheus (thu thập thời gian thực), Thanos (lưu trữ dài hạn và query), và LLM (xử lý dự báo).
Yêu cầu tối thiểu cho môi trường phát triển (Dev/Test) trên Kubernetes:
- Prometheus: 2 vCPU, 4GB RAM, 50GB SSD (cho retention 24h).
- Thanos Sidecar: 1 vCPU, 2GB RAM (chạy cùng Prometheus).
- Thanos Store: 1 vCPU, 2GB RAM, 100GB SSD (lưu trữ historical data).
- Thanos Query: 2 vCPU, 4GB RAM (tối ưu cho truy vấn phức tạp).
- LLM Inference (Local): 4 vCPU, 16GB RAM (hoặc GPU nếu có) để chạy mô hình dự báo.
Yêu cầu mạng:
- Prometheus cần quyền truy cập vào tất cả các node và service trong cluster.
- Thanos Query cần truy cập vào Thanos Store và Prometheus.
- LLM Service cần truy cập vào Thanos Query để lấy dữ liệu metrics.
Để verify yêu cầu tài nguyên của cluster hiện tại:
kubectl top nodes
Kết quả mong đợi: Danh sách các node hiển thị CPU usage và Memory usage dưới mức 80%.
Xác định các thành phần phần mềm cần cài đặt
Bạn cần chuẩn bị các công cụ sau trên máy trạm (laptop/workstation) để quản lý cluster:
- Docker Engine: Để chạy container (Minikube hoặc K3s).
- kubectl: CLI để tương tác với Kubernetes API.
- Helm 3.x: Package manager để deploy Prometheus và Thanos.
- Git: Quản lý mã nguồn dự án.
Để verify phiên bản các công cụ đã cài:
docker --version && kubectl version --client && helm version
Kết quả mong đợi: Hiển thị phiên bản Docker Engine, Kubernetes client và Helm (ví dụ: v3.12.0).
Chuẩn bị hạ tầng Kubernetes (Minikube hoặc EKS/GKE)
Khởi tạo cluster Minikube với Docker driver
Chúng ta sẽ sử dụng Minikube để tạo một cluster Kubernetes đơn node chạy trên Docker. Đây là cách nhanh nhất để bắt đầu mà không cần tài khoản cloud.
Lệnh khởi tạo cluster với 2 vCPU và 8GB RAM để đáp ứng yêu cầu ở phần trên:
minikube start --driver=docker --cpus=2 --memory=8192 --container-runtime=containerd
Kết quả mong đợi: Minikube hiển thị thông báo "Kubernetes v1.X.XX" và trạng thái "Running".
Để verify cluster đã sẵn sàng:
kubectl get nodes
Kết quả mong đợi: Node "minikube" có trạng thái "Ready".
Cấu hình kubeconfig cho kubectl
Minikube tự động cấu hình kubeconfig, nhưng bạn cần đảm bảo context đang trỏ đúng vào cluster mới tạo.
Lệnh set context:
kubectl config use-context minikube
Kết quả mong đợi: Thông báo "Switched to context 'minikube'".
Để verify quyền truy cập:
kubectl get pods --all-namespaces
Kết quả mong đợi: Danh sách các pod hệ thống (kube-system) hiện ra, không báo lỗi "unauthorized".
Cài đặt Docker, kubectl và Helm
Cài đặt Docker Engine trên Linux (Ubuntu/Debian)
Trên máy trạm Linux, bạn cần cài đặt Docker Engine mới nhất để chạy Minikube.
Lệnh cập nhật repository và cài đặt Docker:
sudo apt-get update && sudo apt-get install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Kết quả mong đợi: Docker được cài đặt thành công, không báo lỗi dependency.
Để verify Docker đang chạy:
sudo systemctl status docker
Kết quả mong đợi: Trạng thái "active (running)".
Cài đặt kubectl và Helm
Cài đặt kubectl từ trang chính thức của Kubernetes:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
Cài đặt Helm từ trang chính thức của Helm:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | sudo bash
Kết quả mong đợi: kubectl và helm được cài đặt vào thư mục /usr/local/bin/ và có thể chạy lệnh.
Để verify cài đặt:
kubectl version --client && helm version
Kết quả mong đợi: Hiển thị phiên bản kubectl client và Helm version (Client: v3.x.x).
Khởi tạo repository mã nguồn và cấu trúc thư mục dự án
Tạo repository Git và cấu trúc thư mục
Bạn cần tạo một repository Git mới cho dự án AIOps để quản lý code và cấu hình Helm.
Lệnh tạo thư mục và khởi tạo Git:
mkdir aiops-platform && cd aiops-platform && git init
Cấu trúc thư mục cần tạo để chuẩn bị cho các phần sau:
mkdir -p charts/prometheus charts/thanos charts/llm-service src/etl src/forecasting src/dashboard docs
Kết quả mong đợi: Các thư mục được tạo thành công.
Để verify cấu trúc:
tree -L 2
Kết quả mong đợi: Hiển thị cây thư mục với các thư mục charts, src, docs.
Cấu hình file .gitignore cho dự án AIOps
Bạn cần tạo file .gitignore để loại bỏ các file tạm, log, và binary không cần thiết khỏi repository.
Tạo file .gitignore với nội dung sau:
cat > .gitignore
Kết quả mong đợi: File .gitignore được tạo với nội dung chính xác.
Để verify file đã được tạo:
cat .gitignore
Kết quả mong đợi: Hiển thị toàn bộ nội dung của file .gitignore vừa tạo.
Tạo README.md ban đầu cho dự án
Tạo file README.md để mô tả tổng quan dự án và hướng dẫn setup ban đầu.
Tạo file README.md với nội dung sau:
cat > README.md
Kết quả mong đợi: File README.md được tạo với nội dung mô tả dự án.
Để verify file đã được tạo:
head -n 10 README.md
Kết quả mong đợi: Hiển thị 10 dòng đầu của file README.md.
Cam kết (Commit) lần đầu tiên lên Git
Thêm tất cả file cấu trúc và cam kết lần đầu tiên vào Git.
git add . && git commit -m "Initial commit: Project structure, prerequisites, and README"
Kết quả mong đợi: Git hiển thị danh sách file đã thêm và thông báo "1 file changed, X insertions(+)" cùng với commit hash.
Để verify commit:
git log --oneline
Kết quả mong đợi: Hiển thị commit đầu tiên với message "Initial commit: Project structure...".
Điều hướng series:
Mục lục: Series: Xây dựng nền tảng AIOps với Prometheus, Thanos và LLM để dự báo sự cố
Phần 2: Triển khai Prometheus và Thanos để thu thập dữ liệu lịch sử »