1. Tổng quan.
Trong bài viết này mình sẽ hướng dẫn cách thu thập log VMware ESXi với ELK Stack (Elasticsearch, Logstash, Kibana).
2. Các bước cấu hình
2.1. Trên ESXI.
Kích hoạt SSH
Mở SSH trên máy ESXi để có thể kết nối và thực hiện các lệnh từ xa.
Đăng nhập vào GUI của ESXi -> Manage -> Services -> tìm đến TSM-SSH -> Start Service này lên
Tiến hành SSH (Sử dụng Putty) vào ESXi
Kích hoạt chuyển tiếp syslog.
Syslog ESXi mặc định sẽ gửi log qua port UDP 514 và TCP 1514, mình sẽ gửi log theo port mặc định. Trường hợp các bạn muốn tùy chỉnh port syslog thì phải tắt Firewall đi. Sửu dụng lệnh sau để cấu hình gửi log syslog đến máy chủ Logstash.
esxcli system syslog config set --loghost='tcp://10.0.150.95:1514'
Kiểm tra lại cấu hình syslog.
Xác nhận rằng cấu hình đã được áp dụng thành công.
esxcli system syslog config get
Khởi động lại syslog.
Đảm bảo các thay đổi có hiệu lực.
esxcli system syslog reload
Kiểm tra Firewall đã cho lưu lượng syslog được gửi đi hay chưa bằng lệnh sau:
esxcli network firewall ruleset list
Nếu false, tức là Firewall đang không cho gửi syslog, thực hiện lệnh sau để cho phép gửi syslog:
esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
esxcli network firewall refresh
Thực hiện kiểm tra kết nối đến logstash xem đã thông chưa:
nc -zv 10.0.150.95 1514
Trường hợp bạn tùy chỉnh port syslog, thực hiện lệnh sau để tắt firewall (Không khuyến nghị)
esxcli network firewall set -e=false
esxcli network firewall refresh
Check lại trạng thái Firewall.
esxcli network firewall get
Default Action: DROP
Enabled: false
Loaded: true
2.2. Cấu hình Logstash.
Thêm một input vào cấu hình Logstash để nhận log từ ESXi.
tcp {
port => 1514
}
Phần filter tham khảo (có thể khác với từng phiên bản ESXI).
filter {
grok {
match => ["message", "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{LOGLEVEL:syslog_level}:
%{GREEDYDATA:syslog_message}"]
}
date {
match => ["syslog_timestamp", "MMM d HH:mm:ss YYYY"]
}
}
Và phần output.
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "esxi-%{+YYYY.MM.dd}"
}
}
Khởi động lại Logstash.
Đảm bảo các thay đổi có hiệu lực.
sudo service logstash restart
2.3. Trong Kibana.
- Tạo index pattern: Chọn index
esxi-*
. - Tạo mapping: Tùy chỉnh mapping để phù hợp với cấu trúc dữ liệu của log ESXi.
- Tạo dashboard: Thiết kế các biểu đồ, bảng để trực quan hóa dữ liệu, ví dụ:
- Số lượng event theo mức độ nghiêm trọng.
- Thời gian hoạt động của các máy ảo.
- Sử dụng tài nguyên của các máy chủ.
Lưu ý:
- Bảo mật: Khi cấu hình SSH và tường lửa, hãy đảm bảo rằng chỉ những người có quyền hạn mới có thể truy cập vào máy chủ ESXi.
- Hiệu suất: Nếu có nhiều máy chủ ESXi, hãy cân nhắc sử dụng một máy chủ Logstash mạnh hơn và cấu hình nhiều luồng để xử lý lượng dữ liệu lớn.
- Phân tích: Sử dụng các tính năng của Elasticsearch để phân tích dữ liệu, tìm kiếm các pattern và tạo các cảnh báo.
Các lệnh bổ sung phục vụ cho việc debug.
Kiểm tra kết nối giữa ESXi và Logstash:
Trên Esxi dùng lệnh:
nc -zv 10.0.150.95 1514
Kiểm tra dịch vụ Logstash:
sudo service logstash status
Gửi thử log từ ESXi đến Logstash:
logger -p local0.info "Test syslog message from ESXi"
Kết quả.
Sau khi hoàn thành các bước trên, bạn sẽ có thể xem và phân tích các logs hệ thống của ESXi trong Kibana. Điều này giúp bạn theo dõi hiệu suất, phát hiện sự cố và tối ưu hóa môi trường ESXi.
Nguồn tham khảo:
https://wiki.hoanghd.com/giam-sat-vmware-esxi-voi-elk-stack/
https://mtalavera.wordpress.com/2015/05/18/monitoring-vmware-esxi-with-the-elk-stack/