Bài 2: Thu Thập Dữ Liệu Với Logstash

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

  1. 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.

  2. 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
elk-tls-docker-diagram

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

  1. 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.
  2. Cập nhật file logstash.conf để thu thập từ /var/log/myapp.log, thay đổi pathgrok pattern phù hợp.
  3. 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!
Điều hướng chuỗi bài viết<< Bài 1: ELK Stack Là Gì? Cài Đặt Và Cấu Hình Cơ Bản
>> Bài 3: Tìm Kiếm Và Phân Tích Dữ Liệu Với Elasticsearch
Chia sẻ bài viết:
Theo dõi
Thông báo của
0 Góp ý
Được bỏ phiếu nhiều nhất
Mới nhất Cũ nhất
Phản hồi nội tuyến
Xem tất cả bình luận

Có thể bạn quan tâm