Part 1: Tổng quan về ELK Stack

LAMP Dec 25, 2020

Giới thiệu

Logging là một phần không thể thiếu trong bất kì hệ thống nào, nó ghi lại toàn bộ những hoạt động của hệ thống để tra cứu lịch sử, những code nào đã được chạy, giúp phân tích, điều tra lỗi và fix dễ dàng hơn.

Bài toán đặt ra là làm sao để quản lý log một cách hiệu quả khi mà trong một hệ thống lớn thì file log có thể lên tới vài chục GB, hay là trong mô hình microservices thì chúng ta có rất nhiều servers tương ứng với rất nhiều file logs. Để giải quyết bài toán này thì có rất nhiều công cụ quản lý logs, tuy nhiên ELK được cho là công cụ quản lý logs phổ biến nhất với tên gọi 3 anh em siêu nhân.

Trong phần 1 này, mình sẽ trình bày kiến thức tổng quan về ELK bao gồm các nội dung là khái niệm, các thành phần và nguyên lý hoạt động của ELK. Phần tiếp theo sẽ đi sâu vào phân tích cụ thể từng thành phần bên trong cấu trúc của một ELK.

ELK là gì ?

ELK Stack là tên viết tắt của tập hợp 3 phần mềm đi chung với nhau, phục vụ cho công việc giám sát hệ thống. Ba phần mềm này lần lượt là Elasticsearch, Logstash và Kibana.

ELK được phát triển từ đầu những năm 2000 và cho đến nay đã hơn 250 triệu lượt tải xuống và sử dụng. Hiện tại phiên bản mới nhất của ELK là 7x. Đây là bộ công cụ giám sát tập trung mã nguồn mở rất mạnh, có thể xử lý rất nhiều bài toán quản lý hệ thống mạng nên rất được các công ty, tổ chức tin dùng.

Ưu điểm ELK Stack:

  • Đọc log từ nhiều nguồn: Logstash có thể đọc được log từ rất nhiều nguồn, từ log file cho đến log database cho đến UDP hay REST request.
  • Dễ tích hợp: Dù bạn có dùng Nginx hay Apache, dùng MSSQL, MongoDB hay Redis, Logstash đều có thể đọc hiểu và xử lý log của bạn nên việc tích hợp rất dễ dàng.
  • Hoàn toàn free: Chỉ cần tải về, setup và dùng, không tốn một đồng nào cả. Công ty tạo ra ELK Stack kiếm tiền bằng các dịch vụ cloud hoặc các sản phẩm premium phụ thêm.
  • Khả năng scale tốt: Logstash và Elasticsearch chạy trên nhiều node nên hệ thống ELK cực kì dễ scale. Khi có thêm service, thêm người dùng, muốn log nhiều hơn, bạn chỉ việc thêm node cho Logstash và Elasticsearch là xong.
  • Search và filter mạnh mẽ: Elasticsearch cho phép lưu trữ thông tin kiểu NoSQL, hỗ trợ luôn Full-Text Search nên việc query rất dễ dàng và mạnh mẽ.
  • Cộng đồng mạnh, tutorial nhiều: Nhiều công ty dùng nên dĩ nhiên là có nhiều tutorial để học và dùng ELK Stack rồi.

Các thành phần chính trong ELK stack gồm 4 thành phần:

Cấu trúc ELK

- Elasticsearch: Dùng để tìm kiếm và query log

- Logstash: Tiếp nhận log từ nhiều nguồn, sau đó xử lý log và ghi vào cơ sở dữ liệu.

- Kibana: Giao diện để quản lý, thống kê log. Đọc thông tin từ Elasticsearch.

- Beats: Một tập các công cụ chuyên dùng để thu thập dữ liệu cực mạnh.

Cơ chế hoạt động của ELK Stack

Cơ chế hoạt động của ELK Stack
  1. Đầu tiên, Beats sẽ thu thập logs từ máy người dùng rồi gửi vào Logstash.
  2. Sau đó, Logstash sẽ đọc những logs này, thêm những thông tin như thời gian, IP, parse dữ liệu từ log (server nào, độ nghiêm trọng, nội dung log) ra, sau đó ghi xuống database là Elasticsearch.
  3. Thông tin cần giám sát sẽ được đưa đến máy chủ ELK thông qua nhiều con đường, ví dụ như server gửi UDP request chứa log tới URL của Logstash, hoặc Beats thu thập các thông tin từ các bộ công cụ chuyên dụng cài trên các server và gửi lên Logstash hoặc Elasticsearch.
  4. Khi muốn xem log, người dùng vào URL của Kibana. Kibana sẽ đọc thông tin log trong Elasticsearch, hiển thị lên giao diện cho người dùng query và xử lý. Kibana hiển thị thông tin từ log cho người dùng.

Vậy là chúng ta đã hiểu khái quát về ELK Stack và cơ chế hoạt động của nó rồi phải không nào ? Để hiểu rõ hơn từng thành phần trong ELK thì mời các bạn đọc tiếp phần 2 nhá.

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.