Cơn ác mộng 8 giờ sáng của dân Sysadmin
8 giờ sáng. Vừa bước chân vào văn phòng, ly cà phê còn chưa kịp nguội, bạn đã phải dán mắt vào màn hình. Việc đầu tiên là bật trình duyệt, đăng nhập vCenter và bắt đầu chuỗi thao tác bấm chuột quen thuộc.
Bạn click từng Cluster xem ESXi host nào đang chớp đèn vàng, đèn đỏ. Bạn lướt qua từng Datastore xem có ổ cứng nào chạm ngưỡng 90% hay không. Nguy hiểm nhất là snapshot. Chỉ cần một anh dev tạo snapshot để test bản vá lúc thứ Sáu rồi quên bẵng đi, đến thứ Hai sau đó file delta có thể phình to 200–300 GB, nuốt sạch phân vùng LUN và khiến toàn bộ máy ảo xung quanh treo cứng ngắc giữa giờ cao điểm.
Nói một cách dễ hình dung: việc này giống như người gác kho mỗi sáng phải đi bộ qua 50 căn phòng, tự tay mở từng cánh cửa và lật từng thùng hàng để ghi vào sổ. Vừa mệt, vừa mất thì giờ, lại cực kỳ dễ bỏ sót.
Kiểm tra thủ công qua giao diện web: Càng mở rộng càng đuối
vSphere Client rất trực quan nếu bạn chỉ quản trị 2–3 máy chủ trong phòng lab. Thế nhưng, khi hạ tầng tăng lên 15 host ESXi với hơn 300 máy ảo, giao diện đồ họa lập tức trở thành rào cản:
- Rối mắt và dễ sót lỗi: Hàng trăm đồ thị, cảnh báo và bảng thông số nhảy liên tục. Bạn rất dễ lướt qua một phân vùng sắp đầy giữa cả rừng tabs đang mở.
- Mất thời gian: Mỗi thao tác chuyển tab hay tải lại trang tốn từ vài giây đến cả phút. Trung bình mỗi sáng, bạn ném vào màn hình từ 30 đến 45 phút chỉ để bấm chuột.
- Thiếu tính kỷ luật: Sáng thứ Hai bạn rà soát cẩn thận từng chi tiết. Đến sáng thứ Sáu chạy deadline, bạn lướt vội vài cái rồi bỏ qua bước kiểm tra snapshot. Hệ thống thường sập đúng vào những ngày lơ là như thế.
Giải pháp: Giao toàn bộ việc lặt vặt cho VMware PowerCLI
Để thoát khỏi cảnh này, bạn có thể cấu hình Zabbix, PRTG hay viết code gọi REST API. Nhưng gọn nhẹ, miễn phí và chuẩn bài nhất cho dân vận hành VMware vẫn là VMware PowerCLI.
PowerCLI đóng gói hàng trăm cmdlet chuyên dụng dựa trên nền PowerShell. Điểm cộng lớn nhất là cú pháp cực kỳ dễ nhớ theo cấu trúc Verb-Noun, ví dụ Get-VM, Get-Datastore hay Restart-VMHost. Thay vì mở 50 menu trên web, bạn chỉ cần gõ đúng một dòng lệnh để lấy toàn bộ thông tin mình cần trong vài giây.
Bước 1: Cài đặt VMware PowerCLI
PowerCLI hiện chạy mượt mà trên cả PowerShell 5.1 lẫn PowerShell 7 (hỗ trợ Windows, macOS và Linux). Hãy mở PowerShell với quyền Administrator và chạy 2 lệnh sau:
# Cai dat module VMware.PowerCLI tu PowerShell Gallery
Install-Module -Name VMware.PowerCLI -Scope CurrentUser -Repository PSGallery -Force
# Bo qua canh bao SSL neu vCenter dung chung chi tu ky (Self-signed)
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Quá trình tải gói module sẽ mất khoảng 1 đến 3 phút tùy tốc độ mạng của bạn.
Bước 2: Kết nối vào vCenter Server
Thiết lập kết nối tới vCenter bằng tài khoản có quyền đọc (Read-only là đủ cho mục đích kiểm tra):
Connect-VIServer -Server 192.168.1.50 -User [email protected] -Password "MatKhauCuaBan123!"
Dấu nhắc lệnh hiển thị thông tin phiên bản vCenter và tên server là bạn đã kết nối thành công.
Bước 3: Viết script Health Check quét nhanh 3 rủi ro cốt lõi
Một kịch bản kiểm tra buổi sáng chỉ cần tập trung vào 3 điểm nóng: VM tắt bất thường, snapshot tồn tại quá 3 ngày và Datastore còn dưới 15% dung lượng trống.
# 1. Kiem tra cac may ao dang o trang thai tat (PoweredOff)
Write-Host "=== DANH SACH MAY AO BI TAT ===" -ForegroundColor Yellow
Get-VM | Where-Object { $_.PowerState -eq "PoweredOff" } | Select-Object Name, NumCpu, MemoryGB
# 2. Quet cac snapshot cu ton tai tren 3 ngay
Write-Host "`n=== CANH BAO: SNAPSHOT TREO QUA 3 NGAY ===" -ForegroundColor Red
Get-VM | Get-Snapshot | Where-Object { $_.Created -lt (Get-Date).AddDays(-3) } | Select-Object @{N="VM";E={$_.VM.Name}}, Name, Created, @{N="SizeGB";E={[math]::Round($_.SizeGB, 2)}}
# 3. Canh bao Datastore con duoi 15% dung luong trong
Write-Host "`n=== CANH BAO: DATASTORE SAP DAY (< 15% FREE) ===" -ForegroundColor Cyan
Get-Datastore | ForEach-Object {
$percentFree = [math]::Round(($_.FreeSpaceGB / $_.CapacityGB) * 100, 2)
if ($percentFree -lt 15) {
[PSCustomObject]@{
DatastoreName = $_.Name
CapacityGB = [math]::Round($_.CapacityGB, 2)
FreeSpaceGB = [math]::Round($_.FreeSpaceGB, 2)
PercentFree = "$percentFree %"
}
}
}
Bước 4: Tự động hóa lịch chạy lúc 7:30 sáng
Bạn không cần phải tự mở terminal gõ tay mỗi ngày. Hãy lưu script trên thành file DailyHealthCheck.ps1, sau đó thiết lập chạy tự động:
- Trên Windows: Mở Task Scheduler, tạo tác vụ kích hoạt lúc 7:30 sáng hàng ngày để chạy ngầm và xuất báo cáo ra file HTML hoặc bắn email.
- Trên Linux/Docker: Cấu hình một dòng crontab gọi PowerShell Core (
pwsh).
# Cau hinh Action trong Windows Task Scheduler:
# Program/script: pwsh.exe (hoac powershell.exe)
# Add arguments: -ExecutionPolicy Bypass -File "C:\Scripts\DailyHealthCheck.ps1"
Từ giờ, mỗi sáng bước vào văn phòng, kết quả kiểm tra hạ tầng đã chờ sẵn trong inbox hoặc file log. Có lỗi thì xử lý ngay, không có lỗi thì yên tâm uống trọn tách cà phê mà không phải click chuột mỏi tay.
