Vì sao bạn không nên để log lưu cục bộ trên ESXi?
Mặc định, VMware ESXi ghi log dịch vụ (vmkernel, hostd, vpxa, auth.log) vào ramdisk hoặc thư mục Scratch trên ổ cứng cục bộ. Phân vùng này thường chỉ có dung lượng vài trăm MB. Khi máy chủ sập nguồn, lỗi phần cứng hoặc dính màn hình tím (PSOD), toàn bộ log tạm thời trên RAM sẽ bốc hơi ngay sau khi reboot.
Mất dữ liệu log đồng nghĩa bạn mất luôn dấu vết để tìm nguyên nhân gốc rễ (RCA). Chưa kể, nếu quản lý cụm 8–10 host trở lên, việc SSH vào từng máy để đọc log rất mất thời gian. Gom log về một đầu mối qua Remote Syslog vừa giúp phát hiện sự cố sớm, vừa đáp ứng tốt các yêu cầu audit bảo mật như PCI-DSS hay ISO 27001.
Dữ liệu sau đó có thể đẩy về bất kỳ receiver nào bạn đang dùng: Graylog, ELK Stack, Splunk, Rsyslog hoặc VMware Aria Operations for Logs.
Thông số cần chuẩn bị trước khi cấu hình
Bạn cần gom trước vài thông tin mạng cơ bản của hệ thống log receiver:
- Syslog Server: IP tĩnh hoặc FQDN của máy chủ nhận log (ví dụ:
192.168.10.50hoặcsyslog.itfromzero.local). - Giao thức & Cổng kết nối (Port):
UDP:514: Nhanh, nhẹ nhưng dễ rớt gói khi mạng nghẽn hoặc host sinh log đột biến.TCP:514: Đảm bảo không mất log, khuyên dùng cho môi trường production.SSL/TLS:1514: Mã hóa kênh truyền, phù hợp khi đẩy log qua các subnet bảo mật cao.
- Quyền truy cập: Tài khoản root (SSH) hoặc tài khoản Administrator trên vSphere Client / Host Client.
Cách 1: Cấu hình qua dòng lệnh esxcli (Nhanh & Chuẩn nhất)
CLI là lựa chọn tối ưu khi bạn cần cấu hình hàng loạt host qua script hoặc SSH session. Hãy bật SSH trên ESXi rồi thực hiện lần lượt 4 bước sau:
Bước 1: Xem cấu hình Syslog hiện tại
esxcli system syslog config get
Lệnh này trả về trạng thái hoạt động, đường dẫn lưu local và mục Remote Host đang được trỏ tới đâu.
Bước 2: Gán địa chỉ Syslog Server
Dùng lệnh esxcli system syslog config set kèm tham số --loghost. Cú pháp chuẩn là protocol://host:port:
# Đẩy log qua TCP port 514 (khuyên dùng để chống mất log)
esxcli system syslog config set --loghost='tcp://192.168.10.50:514'
# Đẩy log qua UDP port 514
esxcli system syslog config set --loghost='udp://192.168.10.50:514'
# Đẩy đồng thời về 2 server (1 server chính và 1 server backup)
esxcli system syslog config set --loghost='tcp://192.168.10.50:514,tcp://192.168.10.51:514'
Bước 3: Tải lại dịch vụ Syslog
Áp dụng cấu hình mới ngay lập tức mà không cần reboot host:
esxcli system syslog reload
Bước 4: Mở Firewall ESXi cho luồng Syslog
ESXi có firewall tích hợp chặn toàn bộ traffic gửi ra ngoài theo mặc định. Bạn cần mở rule cho syslog:
# Kích hoạt outbound rule cho syslog
esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
# Reload firewall để áp dụng luật mới
esxcli network firewall refresh
Cách 2: Thao tác trên giao diện ESXi Host Client (Web GUI)
Nếu không quen dùng terminal, bạn hoàn toàn có thể click chuột trên giao diện web:
- Truy cập vào ESXi Host Client qua đường dẫn
https://<IP-ESXi>/ui. - Vào Manage > chọn tab System > chọn Advanced settings.
- Tìm key
Syslog.global.logHostbằng ô filter ở góc phải. - Chuột phải vào dòng này, chọn Edit option, điền giá trị (ví dụ:
tcp://192.168.10.50:514) rồi nhấn Save. - Chuyển sang menu Networking > tab Firewall rules > tìm rule syslog, chuột phải và chọn Enable.
Kiểm tra và xác thực luồng log
Thiết lập xong cần test ngay xem bản tin có đến được đích hay không.
1. Bắn log thử nghiệm từ ESXi
Dùng lệnh logger trực tiếp trên ESXi Shell để tạo một dòng event test:
logger -p user.info "ESXI_SYSLOG_TEST: Gui thanh cong tu host esxi-01 ve server tap trung"
2. Kiểm tra log ở phía máy chủ nhận
Nếu dùng Rsyslog trên Ubuntu Server, mở terminal trên máy nhận và lọc dòng log vừa bắn:
tail -f /var/log/syslog | grep ESXI_SYSLOG_TEST
# Hoặc kiểm tra file riêng nếu bạn đã cấu hình template phân tách host
tail -f /var/log/remote-hosts/esxi-01.log
Nếu terminal hiển thị đúng chuỗi test kèm IP/hostname của ESXi, pipeline truyền log của bạn đã chạy mượt mà.
Những lỗi thường gặp và cách xử lý nhanh
- Server không thấy log về: Kiểm tra lại port 514 trên server nhận log đã LISTEN chưa (
ss -tuln | grep 514). Đồng thời kiểm tra firewall cục bộ của server (UFW hoặc Firewalld) có đang chặn inbound port này không. - Lỗi phân giải tên miền (DNS): Khi khai báo loghost bằng domain (ví dụ
syslog.corp.net), hãy chắc chắn ESXi đã trỏ đúng DNS server (kiểm tra bằngesxcli network ip dns server list). Trong mạng nội bộ, dùng IP tĩnh luôn là phương án ổn định nhất. - Mất mát log khi tải cao: Trong các cụm chạy 50–100 VMs, lưu lượng log có thể đạt hàng ngàn dòng mỗi giây. Giao thức UDP rất dễ drop gói trong điều kiện này. Hãy đổi sang
tcp://để đảm bảo dữ liệu không bị khuyết thiếu.

