Danh sách bài viết trong series Làm Chủ ELK Stack
Giới Thiệu Về Logstash
Logstash là thành phần cốt lõi của ELK Stack, chuyên thu thập, chuyển đổi, và gửi dữ liệu (chủ yếu là log) đến Elasticsearch để phân tích. Trong môi trường DevOps, Logstash giúp đồng bộ log từ nhiều nguồn (file, hệ thống, ứng dụng) thành một định dạng thống nhất, hỗ trợ giám sát và khắc phục sự cố hiệu quả. Bài viết này sẽ hướng dẫn bạn cài đặt, cấu hình, và thực hành thu thập log với Logstash, đảm bảo bạn nắm vững quy trình từ A đến Z.
Yêu Cầu Trước Khi Bắt Đầu
- Đã cài đặt ELK Stack theo hướng dẫn trong Bài 1 (Elasticsearch và Kibana đang chạy).
- Truy cập terminal với quyền sudo trên Ubuntu 20.04 (hoặc tương tự).
- Một file log mẫu (VD:
/var/log/auth.log
hoặc tạo file log tự động).
Hướng Dẫn Cài Đặt Và Cấu Hình Logstash
Bước 1: Xác Minh Logstash Đã Hoạt Động
Nếu bạn đã cài Logstash từ Bài 1, kiểm tra trạng thái:
sudo systemctl status logstash
Đảm bảo dịch vụ đang chạy. Nếu chưa, khởi động lại:
sudo systemctl start logstash
sudo systemctl enable logstash
Bước 2: Tạo File Cấu Hình Logstash
Logstash hoạt động dựa trên pipeline, bao gồm input
, filter
, và output
. Tạo file cấu hình tại /etc/logstash/conf.d/logstash.conf
:
input {
file {
path => "/var/log/auth.log"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
grok {
match => { "message" => "%{SYSLOGBASE} %{GREEDYDATA:message}" }
}
date {
match => [ "timestamp", "MMM dd HH:mm:ss", "ISO8601" ]
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "auth-log-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
- Input: Thu thập log từ
/var/log/auth.log
(log đăng nhập hệ thống Ubuntu). - Filter: Sử dụng
grok
để phân tích cú pháp log,date
để định dạng thời gian. - Output: Gửi dữ liệu đến Elasticsearch với index theo ngày (VD:
auth-log-2025.03.17
).
Bước 3: Kiểm Tra Và Khởi Chạy Pipeline
- Kiểm tra cú pháp file cấu hình:
sudo /usr/share/logstash/bin/logstash --config.test_and_exit -f /etc/logstash/conf.d/logstash.conf
Nếu không có lỗi, tiếp tục.
- Chạy Logstash với file cấu hình:
sudo /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf
Bạn sẽ thấy log xuất ra terminal dưới dạng JSON (do
stdout
).
Bước 4: Tích Hợp Với Elasticsearch
Khởi động lại Logstash như dịch vụ để chạy liên tục:
sudo systemctl restart logstash
Kiểm tra dữ liệu trong Elasticsearch:
curl -X GET "localhost:9200/auth-log-*/_search?pretty"
Nếu thấy JSON chứa các trường như message
, timestamp
, Logstash đã gửi dữ liệu thành công.
Bước 5: Xác Minh Trên Kibana
- Truy cập Kibana tại
http://your-server-ip:5601
. - Vào Management > Stack Management > Index Patterns, tạo pattern cho
auth-log-*
. - Chọn trường thời gian (VD:
timestamp
), sau đó vào Discover để xem log.
Bảng So Sánh Các Loại Input Trong Logstash
Logstash hỗ trợ nhiều nguồn dữ liệu khác nhau. Dưới đây là so sánh một số loại input phổ biến:
Loại Input | Mô Tả | Ví Dụ Sử Dụng | Ưu Điểm | Nhược Điểm |
---|---|---|---|---|
File | Đọc log từ file cục bộ | /var/log/auth.log |
Dễ cấu hình, phổ biến | Chậm với file lớn |
Beat | Nhận dữ liệu từ Filebeat | Log từ ứng dụng phân tán | Nhanh, nhẹ | Yêu cầu cài Filebeat |
HTTP | Nhận dữ liệu qua API | Log từ REST API | Linh hoạt, thời gian thực | Cần server hỗ trợ |
TCP/UDP | Thu thập qua cổng mạng | Log từ thiết bị mạng | Phù hợp mạng | Phức tạp trong cấu hình |
Mẹo Thực Hành Và Tối Ưu Hóa
- Kiểm Tra Log Mẫu: Sử dụng
tail -f /var/log/auth.log
để theo dõi log thay đổi và so sánh với dữ liệu trong Kibana. - Điều Chỉnh Filter: Nếu log không phân tích đúng, chỉnh sửa
grok
pattern (tham khảo patterns tại elastic.co). - Tăng Hiệu Suất: Với log lớn, cân nhắc dùng
multiline
filter cho log đa dòng (VD: stack trace).
Lợi Ích Khi Sử Dụng Logstash Trong DevOps
- Tích Hợp Dễ Dàng: Kết nối với nhiều nguồn log (hệ thống, ứng dụng, cloud).
- Xử Lý Linh Hoạt: Biến đổi dữ liệu theo yêu cầu trước khi gửi đến Elasticsearch.
- Hỗ Trợ Giám Sát: Cung cấp dữ liệu thời gian thực cho phân tích và báo cáo.
Thực Hành
- Tạo file log tùy chỉnh (VD:
/var/log/myapp.log
) với nội dung:2025-03-17 10:00:00 INFO Application started
. - Cập nhật file
logstash.conf
để thu thập từ/var/log/myapp.log
, thay đổipath
vàgrok
pattern phù hợp. - Chạy Logstash và kiểm tra dữ liệu trên Kibana. Nếu gặp lỗi, nhắn mình để cùng khắc phục. Bài tiếp theo, chúng ta sẽ đi sâu vào Elasticsearch – hẹn gặp bạn!