Bài học 1: Tổng quan về Logstash - "Nhà máy xử lý" dữ liệu
1. Bản chất của Logstash là gì?
Về mặt kỹ thuật, Logstash là một công cụ xử lý dữ liệu dạng ống nước (data processing pipeline) mã nguồn mở.
Nhiệm vụ chính của nó là tự động thu thập dữ liệu (thường là log) từ nhiều nguồn khác nhau, "làm sạch" và "nhào nặn" dữ liệu đó, rồi đẩy đến một kho lưu trữ (phổ biến nhất là Elasticsearch) để Kibana có thể vẽ biểu đồ.
Cách Logstash hoạt động chính là mô hình ETL nổi tiếng trong ngành dữ liệu: Extract (Trích xuất) - Transform (Biến đổi) - Load (Tải lên).
2. Cấu trúc cốt lõi của một quy trình Logstash (Pipeline)
Mọi cấu hình của Logstash dù đơn giản hay phức tạp hàng ngàn dòng cũng chỉ xoay quanh 3 thành phần chính theo đúng thứ tự sau:
- Inputs (Đầu vào): Trả lời câu hỏi "Lấy dữ liệu từ đâu?". Logstash có hàng tá phễu thu thập khác nhau. Nó có thể đọc trực tiếp từ một file text trên máy chủ (như file log của Nginx), lắng nghe qua cổng mạng (TCP/UDP), kéo dữ liệu từ một cơ sở dữ liệu, hoặc nhận từ các hệ thống đẩy log khác.
- Filters (Bộ lọc): Trả lời câu hỏi "Xử lý dữ liệu đó như thế nào?". Đây là trái tim và sức mạnh lớn nhất của Logstash. Dữ liệu đầu vào thường rất lộn xộn (chỉ là một đoạn văn bản dài). Filters sẽ cắt nhỏ đoạn văn bản đó ra, gán nhãn cho từng phần, bỏ đi những thứ không cần thiết hoặc thậm chí dịch ngược một địa chỉ IP thành vị trí địa lý (Quốc gia/Thành phố).
- Outputs (Đầu ra): Trả lời câu hỏi "Đưa dữ liệu đã xử lý đi đâu?". Sau khi dữ liệu đã sạch đẹp và được cấu trúc hóa, Logstash sẽ đóng gói và gửi đi. Đích đến thường là Elasticsearch, nhưng bạn cũng có thể cấu hình để lưu ra một file mới, hoặc gửi cảnh báo qua email/Slack nếu phát hiện lỗi nghiêm trọng.
3. Ví dụ thực tế
Hãy tưởng tượng Logstash giống như một nhà máy sản xuất nước tinh khiết:
- Inputs: Hút nước thô từ sông, hồ, mạch nước ngầm (thu thập log thô từ Nginx, hệ điều hành).
- Filters: Chạy qua các màng lọc để loại bỏ bùn đất, khử khuẩn, thêm khoáng chất (tách IP, tách mã lỗi 404/500, loại bỏ log rác).
- Outputs: Đóng thành các chai nước sạch, dán nhãn và đưa vào kho để bán (đẩy dữ liệu đã làm sạch vào Elasticsearch để Kibana lấy ra hiển thị).
Nếu không có Logstash, dữ liệu đẩy thẳng lên Kibana sẽ chỉ là những dòng chữ vô nghĩa, lộn xộn và không thể nào vẽ được các biểu đồ thống kê chính xác.
Trong Bài học 2, chúng ta sẽ bắt tay vào viết một đoạn cấu hình (config) thực tế đầu tiên cho Logstash. Bạn muốn tôi lấy ví dụ phân tích log của Nginx (hệ thống bạn vừa hỏi) hay một loại log đơn giản tự tạo để dễ hình dung hơn?
All rights reserved