ELK Stack (Elasticsearch · Logstash · Kibana)
1. Tổng quan
A. Định nghĩa
Bộ công cụ phân tích log mã nguồn mở thu thập (Logstash/Beats) → lập chỉ mục, tìm kiếm (Elasticsearch) → trực quan hóa (Kibana) dữ liệu log và sự kiện khối lượng lớn; khi bao gồm cả bộ thu thập nhẹ Beats thì được gọi là Elastic Stack.
ELK là tên ghép từ chữ cái đầu của ba phần mềm mã nguồn mở, nhưng bản chất là đường ống "biến log phi cấu trúc thành cấu trúc có thể tìm kiếm để truy vấn và phân tích theo thời gian thực". Khác với CSDL quan hệ xử lý dữ liệu có cấu trúc theo hàng và cột, log có định dạng đa dạng và đổ về hàng chục nghìn bản ghi mỗi giây, nên lưu trữ và tìm kiếm bằng RDBMS truyền thống kém hiệu quả. ELK giải quyết vấn đề này bằng công cụ tìm kiếm dựa trên chỉ mục đảo (Inverted Index).
B. Bối cảnh ra đời và sự cần thiết
Trong môi trường MSA và cloud native, một yêu cầu đi qua hàng chục dịch vụ nên log phân tán trên từng máy chủ, từng container. Khi có sự cố, thậm chí khó biết phải xem log của máy chủ nào. Vì vậy cần nền tảng khả năng quan sát (Observability) gom log về một nơi (tập trung hóa) để tìm kiếm theo dịch vụ, thời gian và mối tương quan. ELK có chi phí triển khai thấp so với APM, SIEM thương mại, và cung cấp lập chỉ mục, tìm kiếm, trực quan hóa trong một bộ công cụ, nên đã trở thành chuẩn trên thực tế cho tích hợp log và phân tích thời gian thực.
2. Thành phần
flowchart LR
B[Beats<br/>tác tử thu thập nhẹ] --> L[Logstash<br/>thu thập · phân tích cú pháp · chuyển đổi]
L --> E[Elasticsearch<br/>lập chỉ mục · tìm kiếm · tổng hợp]
E --> K[Kibana<br/>trực quan hóa · dashboard]
B -.nạp trực tiếp.-> E
Mỗi thành phần đảm nhận một bước của đường ống, và vì vai trò được tách biệt nên có thể kết hợp chọn lọc tùy nhu cầu. Chẳng hạn, nếu không cần chuyển đổi thì có thể nạp trực tiếp từ Beats vào Elasticsearch và bỏ qua Logstash.
- Beats (thu thập): Tác tử nhẹ cài trên từng máy chủ, chia theo mục đích như Filebeat (tệp log), Metricbeat (chỉ số), Packetbeat (mạng). Chiếm ít tài nguyên nên có thể triển khai trên hàng nghìn máy chủ mà không gây gánh nặng.
- Logstash (chuyển đổi): Phân tích cú pháp log bằng đường ống input→filter→output. Cốt lõi là bộ lọc Grok, cấu trúc hóa chuỗi phi cấu trúc như
192.168.0.1 - GET /api 200thành các trườngclient_ip,method,status. Nặng nhưng cho phép chuyển đổi mạnh mẽ. - Elasticsearch (cốt lõi): Công cụ tìm kiếm phân tán dựa trên Lucene, cung cấp tìm kiếm toàn văn bằng chỉ mục đảo và thống kê thời gian thực bằng tổng hợp (Aggregation). Đây là trái tim của ELK.
- Kibana (trực quan hóa): Giao diện tìm kiếm, dashboard và cảnh báo. Khám phá log bằng truy vấn KQL và trực quan hóa dưới dạng chuỗi thời gian, biểu đồ tần suất, bản đồ, v.v.
| Thành phần | Vai trò | Đặc điểm |
|---|---|---|
| Beats | Thu thập nhẹ | Triển khai trên từng máy chủ, tải thấp |
| Logstash | Phân tích cú pháp · chuyển đổi · nạp | Bộ lọc mạnh như Grok |
| Elasticsearch | Lập chỉ mục · tìm kiếm · tổng hợp | Chỉ mục đảo · phân tán · thời gian thực |
| Kibana | Trực quan hóa · cảnh báo | Dashboard · giao diện khám phá |
3. Nguyên lý kỹ thuật cốt lõi
Hiệu năng của ELK đến từ hai thiết kế của Elasticsearch. Thứ nhất, chỉ mục đảo lật ngược chỉ mục thành "từ → danh sách tài liệu chứa từ đó" thay vì "tài liệu → từ". Nhờ vậy khi tìm "log chứa error", hệ thống không quét toàn bộ mà trả về ngay các tài liệu mà mục error trỏ tới. Đây là lý do có thể tìm kiếm trong vài mili giây ngay cả trên hàng trăm triệu bản ghi log.
Thứ hai là phân tán và phân mảnh (sharding). Chỉ mục được chia thành nhiều shard phân bổ trên các nút, và mỗi shard được nhân bản (replica). Khi dữ liệu tăng thì thêm nút (mở rộng theo chiều ngang), và khi một nút hỏng thì dịch vụ vẫn duy trì nhờ bản sao (tính sẵn sàng cao). Tuy nhiên nếu quá nhiều shard thì chi phí phụ trội lại tăng, nên thiết kế số lượng shard là then chốt trong vận hành.
| Kỹ thuật | Nguyên lý | Hiệu quả |
|---|---|---|
| Chỉ mục đảo | Ánh xạ từ → tài liệu | Tìm kiếm toàn văn nhanh |
| Phân tán · sharding | Chia và nhân bản chỉ mục | Mở rộng ngang · HA |
| Tổng hợp | Phép tính thống kê trên chỉ mục | Dashboard thời gian thực |
4. Lĩnh vực ứng dụng
Phân tích log là ứng dụng cơ bản, nhưng nhờ đặc tính "tìm kiếm + tổng hợp + trực quan hóa" nên phạm vi ứng dụng rất rộng. Trong SIEM (quản lý thông tin và sự kiện bảo mật), ELK thu thập log tường lửa, xác thực để phát hiện theo thời gian thực đăng nhập bất thường và mẫu tấn công; trong khả năng quan sát (APM), nó theo dõi độ trễ phản hồi và tỷ lệ lỗi. Ví dụ, nếu lỗi 5xx của một API tăng vọt, dashboard Kibana lập tức hiển thị đột biến (spike) và cơ chế cảnh báo (Watcher) thông báo cho người phụ trách.
| Lĩnh vực | Ví dụ ứng dụng |
|---|---|
| Phân tích log | Tích hợp log ứng dụng, hệ thống, truy vết nguyên nhân sự cố |
| Bảo mật (SIEM) | Phát hiện bất thường · săn tìm mối đe dọa · tuân thủ |
| Khả năng quan sát (APM) | Giám sát độ trễ, tỷ lệ lỗi, truy vết (tracing) |
5. Lưu ý và hàm ý
- Quản lý chi phí và vòng đời: Log tích lũy vô hạn nên cần dùng ILM (Index Lifecycle Management) để tự động phân tầng chỉ mục cũ theo Hot→Warm→Cold→xóa nhằm kiểm soát chi phí lưu trữ.
- Vấn đề giấy phép: Khi Elastic chuyển giấy phép sang SSPL, nhánh mã nguồn mở OpenSearch do AWS dẫn dắt đã ra đời. Cần xem xét phương án thay thế dưới góc độ phụ thuộc nhà cung cấp và chi phí.
- Liên kết tiêu chuẩn: Gần đây xu hướng là thu thập tích hợp log, chỉ số và trace theo chuẩn OpenTelemetry, nên ELK cũng đang tiến hóa theo hướng liên kết với đường ống thu thập OTel.
- Gánh nặng vận hành: Tinh chỉnh cụm (shard, heap, mapping) khá phức tạp, nên sử dụng dịch vụ được quản lý (Elastic Cloud) cũng là một phương án.
Tóm tắt một câu: ELK Stack là bộ công cụ mã nguồn mở tìm kiếm và phân tích theo thời gian thực log phi cấu trúc khối lượng lớn theo luồng Beats/Logstash (thu thập, chuyển đổi) → Elasticsearch (chỉ mục đảo, tìm kiếm phân tán) → Kibana (trực quan hóa), được dùng cho phân tích log, SIEM và khả năng quan sát, với các bài toán vận hành là ILM, giấy phép (OpenSearch) và liên kết OpenTelemetry.