Chuyển tới nội dung chính

Tầm quan trọng của Log

Logging là phần không thể thiếu trong hệ thống. Nó giúp chúng ta lưu lại dấu vết, hoạt động của ứng dụng, giúp phân tích, điều tra bugs và nhiều vấn đề khác trong hệ thống.

Việc quản lý log sao cho hiệu quả luôn là một bài toán cần phải giải 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. Hay khi server gặp lỗi, cần xem log để điều tra, ta sẽ tốn thời gian mò từng dòng log của từng server khác nhau trong hệ thống.

Để giải quyết vấn đề trên, chúng ta đã có các công cụ giúp quản lý log tập trung, trong đó nổi cộm nhất chính là ELK Stack (hay Elastic Stack).


Tìm hiểu về ELK-Stack

ELK-Stack

"ELK" là từ viết tắt của ba dự án nguồn mở: Elaticsearch, Logstash và Kibana. Trong đó:

  • Elaticsearch: là một search engine được sử dụng rất nhiều, trong bộ ba này thì nó đóng vai trò là một store để chứa logs kiêm vai trò tìm kiếm và phân tích mạnh mẽ vốn có.

  • Logstash: đây là một công cụ sử dụng để thu thập, xử lý log được viết bằng Java. Nhiệm vụ chính của logstash là thu thập log sau đó chuyển vào Elastichsearch. Mỗi dòng log của logstash được lưu trữ đưới dạng json.

  • Kibana: là công cụ cho phép trực quan hoá dữ liệu từ Elasticsearch, ở đây chính là đống logs của chúng ta.

ELK-Stack

Luồng hoạt động

1. Đầu tiên, log sẽ được đưa đến Logstash. (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 Beat đọc file log và gửi lên Logstash)

2. Logstash sẽ đọc những log 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. 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ý.

ELK-Stack