Hướng dẫn hoàn chỉnh về ELK Stack (P1) - Giới thiệu ELK Stack

Loạt bài viết trong hướng dẫn hoàn chỉnh về ELK Stack:

Với hàng triệu lượt tải xuống cho các thành phần khác nhau kể từ lần đầu tiên được giới thiệu, ELK Stack là nền tảng quản lý log phổ biến nhất thế giới. Ngược lại, Splunk - người đã từng dẫn đầu lịch sử trong lĩnh vực này - tự báo cáo có tổng cộng 15.000 khách hàng.

Vậy ELK chính xác là gì? Tại sao ngăn xếp phần mềm này lại nhận được sự quan tâm và áp dụng rộng rãi như vậy? Làm thế nào để các thành phần khác nhau trong ngăn xếp tương tác với nhau?

Trong hướng dẫn này, chúng ta sẽ xem xét toàn diện các thành phần khác nhau trong ELK Stack. Chúng tôi sẽ giúp bạn hiểu vai trò của chúng trong đường ống dẫn dữ liệu của bạn, cách cài đặt và cấu hình chúng cũng như cách tốt nhất để tránh một số cạm bẫy phổ biến trong quá trình thực hiện.

ELK Stack là gì?

Cho đến một hoặc hai năm trước, ELK Stack là tập hợp của ba sản phẩm mã nguồn mở -  Elasticsearch,  LogstashKibana - tất cả đều do Elastic phát triển, quản lý và duy trì. Sự ra đời và bổ sung sau đó của Beats đã biến ngăn xếp thành một dự án bốn chân.

Elasticsearch là một công cụ phân tích và tìm kiếm toàn văn (full-text search), mã nguồn mở, dựa trên công cụ tìm kiếm Apache Lucene.

Logstash là một công cụ tổng hợp log thu thập dữ liệu từ nhiều nguồn đầu vào khác nhau, thực hiện các biến đổi và cải tiến khác nhau, sau đó vận chuyển dữ liệu đến các điểm đến đầu ra được hỗ trợ khác nhau.

Kibana là một lớp trực quan hóa hoạt động dựa trên Elasticsearch, cung cấp cho người dùng khả năng phân tích và trực quan hóa dữ liệu.

Và cuối cùng nhưng không kém phần quan trọng - Beats là tác nhân nhẹ được cài đặt trên các máy chủ để thu thập các loại dữ liệu khác nhau để chuyển tiếp vào ngăn xếp.

Cùng với nhau, các thành phần khác nhau này được sử dụng phổ biến nhất để giám sát, khắc phục sự cố và bảo mật môi trường CNTT (mặc dù có nhiều trường hợp sử dụng hơn cho ELK Stack như business intelligence và web analytics).

Beats và Logstash đảm nhận việc thu thập và xử lý dữ liệu, Elasticsearch lập chỉ mục và lưu trữ dữ liệu, và Kibana cung cấp giao diện người dùng để truy vấn và hiển thị dữ liệu.

Tại sao ELK lại được yêu thích đến vậy?

Tại sao ELK lại được yêu thích đến vậy?

ELK Stack phổ biến vì nó đáp ứng nhu cầu trong không gian phân tích và quản lý log. Việc giám sát các ứng dụng hiện đại và cơ sở hạ tầng CNTT mà chúng được triển khai yêu cầu giải pháp phân tích và quản lý log cho phép các kỹ sư vượt qua thách thức giám sát môi trường phân tán cao và dynamic.

ELK Stack hỗ trợ bằng cách cung cấp cho người dùng một nền tảng mạnh mẽ thu thập và xử lý dữ liệu từ nhiều nguồn dữ liệu, lưu trữ dữ liệu đó trong một kho dữ liệu tập trung có thể mở rộng khi dữ liệu phát triển và cung cấp một bộ công cụ để phân tích dữ liệu.

Tất nhiên, ELK Stack là mã nguồn mở. Với các tổ chức CNTT ưa chuộng các sản phẩm mã nguồn mở, chỉ riêng điều này đã có thể giải thích sự phổ biến của ngăn xếp. Sử dụng mã nguồn mở có nghĩa là các tổ chức có thể tránh bị nhà cung cấp khóa và tìm kiếm nhân lực mới dễ dàng hơn nhiều.

Mọi người đều biết làm thế nào để sử dụng Kibana, phải không? Mã nguồn mở cũng có nghĩa là một cộng đồng sôi động liên tục thúc đẩy các tính năng và cải tiến mới và giúp đỡ trong trường hợp cần thiết.

Chắc chắn, Splunk từ lâu đã trở thành công ty dẫn đầu thị trường trong lĩnh vực này. Nhưng vô số chức năng của nó ngày càng không đáng với cái giá đắt đỏ - đặc biệt là đối với các công ty nhỏ hơn, các sản phẩm SaaS và các công ty khởi nghiệp công nghệ.

Splunk có khoảng 15.000 khách hàng trong khi ELK được tải xuống trong một tháng nhiều hơn so với tổng số khách hàng của Splunk - và gấp nhiều lần tại thời điểm đó.

ELK có thể không có tất cả các tính năng của Splunk, nhưng nó không cần những tính năng đó. ELK là một nền tảng phân tích và quản lý log đơn giản nhưng mạnh mẽ với chi phí thấp hơn.

Tại sao phân tích log lại trở nên quan trọng hơn?

Trong thế giới cạnh tranh ngày nay, các tổ chức không thể chịu được một giây thời gian chết hoặc hiệu suất chậm của các ứng dụng của họ. Các vấn đề về hiệu suất có thể làm hỏng thương hiệu và trong một số trường hợp có thể dẫn đến tổn thất doanh thu trực tiếp.

Vì lý do tương tự, các tổ chức cũng không thể bị xâm phạm và việc không tuân thủ các tiêu chuẩn quy định có thể dẫn đến tiền phạt nặng và gây thiệt hại cho doanh nghiệp cũng giống như vấn đề về hiệu suất.

Để đảm bảo các ứng dụng luôn sẵn có, hoạt động hiệu quả và an toàn, các kỹ sư dựa vào các loại dữ liệu khác nhau do ứng dụng của họ tạo ra và cơ sở hạ tầng hỗ trợ chúng. Dữ liệu này, cho dù là log sự kiện hoặc số liệu, hoặc cả hai, cho phép giám sát các hệ thống này và xác định và giải quyết các vấn đề nếu chúng xảy ra.

Log luôn tồn tại và do đó, có các công cụ khác nhau để phân tích chúng. Tuy nhiên, điều đã thay đổi là kiến ​​trúc cơ bản của các môi trường tạo ra các bản ghi này.

Kiến trúc đã phát triển thành microservices, container và cơ sở hạ tầng điều phối được triển khai trên đám mây, trên các đám mây hoặc trong các môi trường kết hợp. Không chỉ vậy, khối lượng dữ liệu tuyệt đối được tạo ra bởi các môi trường này không ngừng tăng lên và tự nó tạo thành một thách thức.

Đã qua lâu rồi những ngày mà một kỹ sư có thể chỉ cần SSH vào một chiếc máy và ghi lại một file log. Điều này không thể được thực hiện trong môi trường bao gồm hàng trăm container tạo ra hàng TB dữ liệu log mỗi ngày.

Đây là lúc các giải pháp phân tích và quản lý log tập trung như ELK Stack cho phép các kỹ sư, dù là DevOps, Vận hành CNTT hay SRE, có được khả năng hiển thị mà họ cần và đảm bảo các ứng dụng luôn có sẵn và hoạt động hiệu quả.

Các giải pháp phân tích và quản lý log hiện đại bao gồm các khả năng chính sau:

  • Tổng hợp - khả năng thu thập và gửi log từ nhiều nguồn dữ liệu.
  • Xử lý - khả năng chuyển đổi log thành dữ liệu có ý nghĩa để phân tích dễ dàng hơn.
  • Lưu trữ - khả năng lưu trữ dữ liệu trong khoảng thời gian dài để cho phép theo dõi, phân tích xu hướng và các trường hợp sử dụng bảo mật.
  • Phân tích - khả năng phân tích dữ liệu bằng cách truy vấn nó và tạo hình ảnh trực quan và bảng điều khiển trên đó.

Cách sử dụng ngăn xếp ELK để phân tích log

Như tôi đã đề cập ở trên, được kết hợp với nhau, các thành phần khác nhau của ELK Stack cung cấp một giải pháp đơn giản nhưng mạnh mẽ để quản lý và phân tích log.

Các thành phần khác nhau trong ELK Stack được thiết kế để tương tác và chơi tốt với nhau mà không cần cấu hình thêm quá nhiều. Tuy nhiên, cách bạn thiết kế ngăn xếp sẽ khác nhau rất nhiều tùy theo môi trường và trường hợp sử dụng của bạn.

Đối với một môi trường phát triển quy mô nhỏ, kiến ​​trúc cổ điển sẽ trông như sau:

Cách sử dụng ngăn xếp ELK để phân tích log

Tuy nhiên, để xử lý các đường ống phức tạp hơn được xây dựng để xử lý lượng lớn dữ liệu trong quá trình sản xuất (production), các thành phần bổ sung có thể được thêm vào kiến ​​trúc ghi nhật ký của bạn, để có khả năng phục hồi (Kafka, RabbitMQ, Redis) và bảo mật (NGINX):

Cách sử dụng ngăn xếp ELK để phân tích log

Tất nhiên, đây là một sơ đồ đơn giản để minh họa. Một kiến ​​trúc cho môi trường sản xuất (production) đầy đủ sẽ bao gồm nhiều nút Elasticsearch, có thể là nhiều instance Logstash, một cơ chế lưu trữ, một plugin cảnh báo và một bản sao đầy đủ trên các khu vực hoặc phân đoạn của trung tâm dữ liệu của bạn để có tính khả dụng cao (High Availability).

Bạn có thể đọc mô tả đầy đủ về những gì cần thiết để triển khai ELK như một giải pháp phân tích và quản lý log cho môi trường sản xuất (production) trong các phần tiếp theo của bài viết.

Có gì mới?

Như người ta có thể mong đợi từ một dự án mã nguồn mở cực kỳ phổ biến, ELK Stack được cập nhật liên tục và thường xuyên với các tính năng mới. Việc bám sát những thay đổi này là một thách thức, vì vậy trong phần này, chúng tôi sẽ cung cấp điểm nhấn về các tính năng mới được giới thiệu trong các bản phát hành chính.

Elasticsearch

Elasticsearch 7.x dễ thiết lập hơn nhiều vì giờ đây nó được cung cấp kèm theo Java. Các cải tiến về hiệu suất bao gồm bộ ngắt mạch bộ nhớ thực, cải thiện hiệu suất tìm kiếm và chính sách 1-shard. Ngoài ra, một lớp điều phối cụm mới làm cho Elasticsearch có khả năng mở rộng và khả năng phục hồi cao hơn.

Logstash

Công cụ thực thi Java của Logstash (được công bố là thử nghiệm trong phiên bản 6.3) được kích hoạt theo mặc định trong phiên bản 7.x. Thay thế công cụ thực thi Ruby cũ, nó tự hào có hiệu suất tốt hơn, giảm mức sử dụng bộ nhớ và nói chung - một trải nghiệm hoàn toàn nhanh hơn.

Kibana

Kibana đang trải qua một số cải tiến lớn với các trang mới và cải tiến khả năng sử dụng. Bản phát hành mới nhất bao gồm chế độ tối (dark mode), truy vấn và lọc dữ liệu được cải thiện và các cải tiến đối với Canvas.

Beats

Beats 7.x tuân theo Lược đồ chung đàn hồi (ECS) mới - một tiêu chuẩn mới để định dạng các trường. Metricbeat hỗ trợ mô-đun AWS mới để lấy dữ liệu từ Amazon CloudWatch, Kinesis và SQS. Các mô-đun mới cũng được giới thiệu trong Filebeat và Auditbeat.

Ở phần tiếp theo, bạn sẽ tìm hiểu cách cài đặt và cấu hình các thành phần của ELK Stack: Elasticsearch, Logstash, Kibana và Beats.

Hướng dẫn hoàn chỉnh về ELK Stack (P2)
Trong bài viết này, bạn sẽ tìm hiểu cách cài đặt và cấu hình các thành phần của ELK Stack: Elasticsearch, Logstash, Kibana và Beats.
ELK StackDevOpsElasticsearchLogstashKibanaBeats
Bài Viết Liên Quan:
Khắc phục sự cố 5 lỗi ELK thường gặp
Trung Nguyen 10/07/2021
Khắc phục sự cố 5 lỗi ELK thường gặp

Trong bài viết này chúng tôi đã tổng hợp 5 lỗi ELK phổ biến nhất và hướng dẫn bạn cách khắc phục chúng một cách nhanh chóng.

5 sai lầm hàng đầu với Elasticsearch và cách tránh
Trung Nguyen 09/07/2021
5 sai lầm hàng đầu với Elasticsearch và cách tránh

Trong hướng dẫn này, chúng ta hãy xem xét kỹ hơn 5 trong số những sai lầm phổ biến và cách bạn có thể tránh mắc phải chúng.

10 khái niệm Elasticsearch bạn cần biết
Trung Nguyen 04/07/2021
10 khái niệm Elasticsearch bạn cần biết

Bài viết này cung cấp cho bạn 10 khái niệm quan trọng nhất trong Elasticsearch. Nắm được những khái niệm này giúp bạn bớt vất vả hơn khi học Elasticsearch.

Truy vấn Elasticsearch - Hướng dẫn chi tiết
Trung Nguyen 04/07/2021
Truy vấn Elasticsearch - Hướng dẫn chi tiết

Trong hướng dẫn này, chúng tôi sẽ giúp bạn các cách viết truy vấn Elasticsearch đầy đủ, chi tiết nhất. Giúp bạn tự tin khi làm việc với Elasticsearch.