Tổng quan
Việc theo dõi trạng thái của cụm Logstash là cần thiết để kịp thời phát hiện sự cố. Khi Logstash ngừng hoạt động đột ngột, hệ thống ELK sẽ không nhận được dữ liệu, gây khó khăn trong việc kiểm tra log.
Logstash từ phiên bản 5.x trở lên hỗ trợ API giám sát thông qua cổng mạng. Bằng cách cấu hình từng instance với địa chỉ IP và cổng cụ thể, có thể xây dựng hệ thống cảnh báo tự động qua email hoặc các kênh thông báo khác.
Dưới đây là hướng dẫn chi tiết về cách cấu hình cụm Logstash để giám sát hiệu quả.
- Mở cổng trên tường lửa
Mặc định Logstash sử dụng cổng 9600-9700. Với nhiều instance chạy trên cùng một máy, cần mở nhiều cổng:
sudo iptables -A INPUT -ptcp --dport 9600 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9601 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9602 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9603 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9604 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9605 -j ACCEPT
sudo iptables -A INPUT -ptcp --dport 9606 -j ACCEPT
Lưu cấu hình tường lửa
sudo service iptables save
Khởi động lại tường lửa
sudo service iptables restart
Kiểm tra cấu hình
sudo more /etc/sysconfig/iptables
- Cấu hình địa chỉ IP trong logstash.yml
Mặc định Logstash sử dụng 127.0.0.1, cần thay đổi thành IP vật lý để cho phép truy cập từ xa:
vim config/logstash.yml
# Cấu hình địa chỉ kết nối REST API
#
# http.host: "127.0.0.1"
http.host: "192.168.1.100"
- Kiểm tra trạng thái cổng hiện tại
Trước khi cấu hình mới, nên kiểm tra các cổng đang được sử dụng:
# Liệt kê tiến trình Logstash
ps -ef | grep logstash
# Xác định cổng được gán
sudo netstat -nap | grep 12345
# Hoặc dùng lệnh lsof
lsof -i:9600
# Dừng tiến trình nếu cần
kill -9 12345
- Khởi động Logstash với cổng tùy chỉnh
nohup bin/logstash -f pipeline.conf --http.port 9601 & > /dev/null &
Trong trường hợp cấu hình host không hiệu lực, sử dụng tham số khởi động:
nohup bin/logstash -f pipeline.conf --http.host 192.168.1.100 --http.port 9601 & > /dev/null &
- Kiểm tra kết nối
Kiểm tra qua HTTP:
# Lệnh curl
curl -XGET '192.168.1.100:9601/_node/stats?pretty=true'
# Trình duyệt web
http://192.168.1.100:9601/_node/pipeline?pretty=true
Tham khảo tài liệu chính thức của Elastic để biết thêm API.
Kiểm tra TCP:
C:\Users\admin>Test-NetConnection 192.168.1.100 -Port 9601
Thiết lập cron job để giám sát định kỳ và gửi cảnh báo khi cần.