ELK là gì- Những thông tin bổ ích về công cụ quản lý Log ELK
Khi đang lang thang trên các diễn đàn công nghệ, chắn hẳn nhiều bạn cũng đã bắt gặp từ ELK hay ELK Stack. Bạn thắc mắc những khái niệm này được hiểu như thế nào? Hãy cùng chúng tôi giải đáp ngay trong bài viết sau đây nhé!
Stack là gì?
Trước khi tìm hiểu ELK Stack là gì, chúng ta cần hiểu thế nào là logging. Nói một cách đơn giản, dễ hiểu thì logging là công cụ đơn giản và mạnh mẽ giúp ghi lại toàn bộ dữ liệu và các hoạt động trên hệ thống, hỗ trợ quá trình kiểm tra trở nên thuận tiện và dễ dàng hơn. Logging là một mảnh ghép không thế thiếu trong bất kỳ một hệ thống nào, nhờ logging mà việc kiểm tra lại các trạng thái của hệ thống cũng như phát hiện và sửa lỗi cũng đơn giản hơn rất nhiều
Tuy nhiên, một vấn đề gặp phải đó là có nhiều file log có dung lượng rất lớn, có thể lên đến hàng chục GB, vì vậy việc xử lý các file log đó khá phức tạp và khó khăn đối với nhiều doanh nghiệp. Chính vì vậy, để hoàn thiện quá trình tìm kiếm hay truy xuất log, các công cụ quản lý file log tập trung (stack) được ra đời. Một trong các công cụ phổ biến, được sử dụng nhiều hiện nay đó là ELK Stack
Các thành phần của ELK Stack
ELK Stack bao gồm 4 thành phần: Elasticsearch, Logstash, Kibana và Beats
ELK Stack bao gồm 4 phần: Elasticsearch, Logstash, Kibana và Beats
Elasticsearch chính là một RESTful distributed search engine. Nói một cách đơn giản thì nó cung cấp khả năng có thể tìm kiếm phân tán thông qua API. Lưu trữ dữ liệu theo dạng không có cấu trúc
Elasticsearch có thể tích hợp với tất cả các ứng dụng sử dụng các loại ngôn ngữ như Java, JavaScript, .NET, Groovy, PHP hay Perl, Python và Ruby
Cho phép bạn có thể thực thi, kết hợp nhiều câu lệnh tìm kiếm: có cấu trúc, không có cấu trúc hay geo, metric tùy theo ý muốn của bạn
Elasticsearch không chỉ giúp bạn tìm kiếm được các nguồn cơ sở dữ liệu nổi tiếng: MySQL, MS SQL hay PostgreSQL, mà còn có thể là dạng văn bản text, pdf hay doc
Công cụ Elasticsearch
Tất nhiên việc tìm kiếm trong một lượng ít dữ liệu thì rất dễ dàng, nhưng với hàng tỷ dữ liệu thì sao? Elasticsearch sẽ giúp bạn có cái nhìn để có thể khai thác khuynh hướng, mẫu trong dữ liệu
Elasticsearch rất rất nhanh. Bạn có thể ngay lập tức có câu trả lời với những dữ liệu thay đổi
Bạn có thể chạy trên hàng trăm server khác nhau và lên tới petabyte dữ liệu
Nó có khả năng vận hành một cách dễ dàng với khả năng co dãn, độ sẵn sàng cao, có thể giúp dự đoán trước với độ tin cậy cao, rất đơn giản, trong suốt
Sử dụng chuẩn RESTful APIs & JSON
Logstash:
Có chức năng giúp phân tích cú pháp của dòng dữ liệu. Việc phân tích giúp cho dữ liệu đầu vào ở dạng khó đọc hay chưa có nhãn sẽ trở thành dạng dữ liệu có cấu trúc, có nhãn dán
Cấu hình của Logstash có 3 phần:
Input: Tiếp nhận dữ liệu sự kiện log ở dạng thô, từ những nguồn khác nhau như file, redis hay rabbitmq, beats và syslog,...
Filter: Sau khi vừa tiếp nhận dữ liệu, bắt đầu thực hiện các thao tác với các dữ liệu như thêm, sửa, xóa, thay thế,.. theo cấu hình của quản trị viên để từ đó có thể xây dựng cấu trúc dữ liệu log event tùy mong muốn
Output: Cuối cùng thì chuyển tiếp dữ liệu sự kiện log trở về các dịch vụ như Elasticsearch để có thể tiếp nhận lưu trữ log hay hiển thị log,..
Thông thường khi làm việc với Logstash, bạn sẽ làm việc với Filter là nhiều nhất. Filter hiện tại thì dùng Grok để phân tích dữ liệu
Kibana
Kibana được phát triển để dành riêng cho ELK Stack, hỗ trợ thực hiện chuyển đổi những câu truy vấn của người thành những câu truy vấn mà Elasticsearch thực hiện được. Kết quả hiển thị dưới dạng bản đồ
Kết quả của các câu truy vấn sẽ hiển thị theo nhiều cách: Hiển thị dưới dạng bản đồ
Beats bao gồm một tập hợp các công cụ để thu thập thông tin chuyên dụng, được xem như một người shipper giúp thu thập và vận chuyển dữ liệu từ Client tới máy chủ của ELK. Ngoài ra các Beats này cũng có thể được gửi thẳng lên Elasticsearch do chính bản thân các công cụ đã được chuẩn hóa, việc kết nối giữa Beats và Logstash thường có ý nghĩa giúp bảo mật đối với các hệ thống lớn khi muốn bảo vệ elasticsearch
Trong Beats có nhiều các Beats con
Filebeat: là công cụ để thu thập log và gửi về hệ thống ELK
Metricbeat: là công cụ để thu thập hiệu năng của máy chủ
Packetbeat: là công cụ để giám sát lưu lượng, băng thông trên máy chủ
Winlogbeat: khác với Linux, Windows có cấu trúc khác hoàn toàn và khó có thể can thiệp sâu vào hệ thống để thu thập được thông tin, vì đó mà Winlogbeat được ra đời để hỗ trợ thu thập các sự kiện xảy ra trong hệ điều hành Windows
Auditbeat: nếu như Winlogbeat được ra đời để dành riêng cho Windows thì Auditbeat được dành riêng cho Linux, là công cụ hỗ trợ quản lý folder hay các tập tin hệ thống trong hệ điều hành Linux
Heartbeat: là công cụ giúp cho hệ thống giám sát có thể biết được trạng thái của dịch vụ đang hoạt động hay không
Cơ chế hoạt động của ELK Stack
Cơ chế hoạt động của ELK Stack thì cũng khá đơn giản theo các bước trên hình
Trước tiên, Beats sẽ thu thập các logs từ máy của người dùng và gửi vào Logstash
Logstash sẽ đọc những file log vừa gửi và sau đó thêm các thông tin về thời gian, IP hay parse dữ liệu từ log ra: server nào, độ nghiêm trọng và nội dung log. Rồi ghi xuống database là Elasticsearch
Các thông tin cần được giám sát sẽ được đưa đến máy chủ ELK có thể bằng nhiều con đường khác nhau như server gửi UDP request chứa log đến URL của Logstash, hay cũng có thể Beats thu thập logs rồi gửi vào Logstash
Muốn xem log, người dùng chỉ cần vào URL của Kibana, Kibana sẽ giúp bạn đọc những thông tin log từ trong Elasticsearch, rồi hiển thị lên giao diện cho người dùng có thể query, xử lý
Tại sao cần sử dụng ELK Stack
Đối với những hệ thống nhỏ thì bạn không cần phải sử dụng đến ELK Stack, chỉ cần sử dụng thư viện ghi log đi kèm theo ngôn ngữ, rồi ghi log ra file và đọc thôi
ELK Stack giúp các hệ thống lớn có thể dễ dàng ghi log tập trung vào một chỗ
Tuy nhiên với những hệ thống có nhiều người dùng, nhiều service phân tán (microservice) hay có nhiều server chạy cùng một lúc thì việc ghi log ra file không còn có hiệu quả nữa, lúc này lượng máy chủ trên hệ thống là rất lớn vì vậy ta không thể theo cách thủ công được nữa. Và đương nhiên thì lúc này ELK Stack là công cụ giúp bạn giải quyết vấn đề này, ELK hỗ trợ bạn ghi log tập trung vào một chỗ để có thể dễ dàng quản lý log trên cả hệ thống
ELK Stack là một sự lựa chọn vô cùng hợp lý, được rất nhiều các công ty lớn tin tưởng lựa chọn như: Linkedin, Medium hay Netflix
ELK Stack có điểm gì thú vị, hay ho
Có thể đọc log từ nhiều nguồn: Logstash có thể đọc được log từ các nguồn khác nhau: từ log file, log database cho đến UDP hay cả REST request
Dễ dàng tích hợp: Bạn sử dụng Nginx, Apache hay MS SQL, MongoDB và Redis,.. đều có thể xử lý hay đọc hiểu log nên việc tích hợp trở nên dễ dàng
Hoàn toàn free: Việc bạn cần làm chỉ là tải về, cài đặt và sử dụng mà không tốn bất kỳ khoản chi phí nào
Kibana với giao diện trực quan, sinh động
Phương tiện cảnh báo thì đa dạng, tích hợp với cả email, sms hay slack và các ứng dụng OTP như Telegram và Whatsapp
Khả năng scale tốt: Logstash và Elasticsearch thì chạy trên nhiều node vì đó mà hệ thống ELK rất dễ scale. Khi có thêm service hay thêm người dùng, muốn log nhiều hơn thì bạn chỉ cần thêm node cho Logstash và Elasticsearch là được
Search và filter mạnh mẽ: Elasticsearch cho phép bạn có thể lưu trữ thông tin dạng NoSQL, hỗ trợ luôn cả Full-Text Search nên việc query trở nên rất dễ dàng, mạnh mẽ
Cộng đồng mạnh: Có rất nhiều công ty sử dụng → tutorial nhiều → dễ dàng để tiếp cận
Có nhiều chia sẻ và hướng dẫn sử dụng: Có rất nhiều công ty lớn hay các kỹ sư trong ngành sử dụng ELK Stack vì vậy những tài nguyên hay hướng dẫn sử dụng rất phổ biến, đa dạng trên internet. Nếu có thắc mắc gì đó, bạn chỉ cần google và tìm kiếm kết quả
Hy vọng trong bài viết phía trên chúng tôi đã cung cấp đầy đủ các thông tin cần thiết mà bạn muốn tìm hiểu về ELK Stack. Các kiến thức chuyên ngành về ELK Stack cũng khá nặng nên để hiểu hơn về nó hãy tích cực trau dồi, bổ sung kiến thức bạn nhé!
ITNavi - Nền tảng kết nối việc làm IT
Nguồn: ELK là gì- Những thông tin bổ ích về công cụ quản lý Log ELK